2017-06-21 39 views
0

我有fetch.php和index.php,fetch php用於將數據庫中的內容與ajax腳本一起動態加載到index.php中,我想過濾結果如果它存在,則根據搜索詞進行加載。

我已經試過

$search = $_GET['searchterm']; 

然後結合$搜索到的SQL查詢,但我有兩個問題:

1 - 它試圖從fetch.php得到_GET參數而參數是上的index.php

2-它示出了當該查詢是用來加載所有的結果沒有任何搜索項輸入的誤差

<?php 
include("config.php"); //include config file 
//sanitize post value 
$page_number = filter_var($_POST["page"], FILTER_SANITIZE_NUMBER_INT, FILTER_FLAG_STRIP_HIGH); 

//throw HTTP error if page number is not valid 
if(!is_numeric($page_number)){ 
    header('HTTP/1.1 500 Invalid page number!'); 
    exit(); 
} 
//get current starting point of records 
$position = (($page_number-1) * $item_per_page); 

//fetch records using page position and item per page. 
$results = $mysqli->prepare("SELECT name, location, score, img, id, type FROM artists " 
if(isset($_GET['searchterm'])){ 

} 
" ORDER BY score DESC LIMIT ?, ?"); 

//bind parameters for markers, where (s = string, i = integer, d = double, b = blob) 
//for more info https://www.sanwebe.com/2013/03/basic-php-mysqli-usage 
$results->bind_param("ii", $position, $item_per_page); 
$results->execute(); //Execute prepared Query 
$results->bind_result($name, $location, $score, $img, $id, $type); //bind variables to prepared statement 

//output results from database 

while($results->fetch()){ //fetch values 
    echo "<div class=\"card feed_item\" style=\"width: 20rem;\"><a id=\"wraplink\" href=\"profile.php?id=". $id."\">"; 
    echo "<img class=\"card-img-top feed_img\" src=\"img/" . $img . ".jpg\" alt=\"Card image cap\">"; 
    echo "<div class=\"card-block\">"; 
    echo "<h4 class=\"card-title\">" . $name . "</h4>"; 
    echo "<p class=\"card-text\">" . $location . "</p>"; 
    echo "</div><div class=\"card-footer\">"; 
    echo "<small class=\"text-muted\">". $type ."</small>"; 
    echo "</div>"; 
    echo "</a></div>"; 
} 
?> 

及以下的index.php

<?php 
// including the config file 
include('config.php'); 
?> 
<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Setch</title> 
<script 
    src="https://code.jquery.com/jquery-3.2.1.min.js" 
    integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" 
    crossorigin="anonymous"></script> 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous"> 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script> 
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet"> 
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css" rel="stylesheet"> 
<link rel="stylesheet" href="css/style.css" /> 
</head> 
<body> 
<div id="wrappy"> 

    <!-- navbar --> 
    <nav class="navbar navbar-toggleable-sm navbar-light bg-faded"> 
    <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarTogglerDemo02" aria-controls="navbarTogglerDemo02" aria-expanded="false" aria-label="Toggle navigation"> 
    <span class="navbar-toggler-icon"></span> 
    </button> 
    <a class="navbar-brand" id="logo" href="index.php">Setch</a> 
    <div class="collapse navbar-collapse" id="navbarTogglerDemo02"> 
    <ul class="navbar-nav mr-auto mt-2 mt-md-0"> 
    <li class="nav-item active"> 
     <a class="nav-link" href="#">Add Artist <span class="sr-only">(current)</span></a> 
    </li> 
    <li class="nav-item"> 
     <a class="nav-link" href="#">Feedback</a> 
    </li> 
    <li class="nav-item"> 
     <a class="nav-link" href="#">About</a> 
    </li> 
    </ul> 
    <form class="form-inline my-2 my-lg-0 input-group" action="search.php" method="get"> 
    <input class="form-control mr-sm-2" type="text" name="searchterm" placeholder="Search" id="search"> 
    <button class="btn btn-outline-success my-2 my-sm-0" type="submit" name="search">Search</button> 
    </form> 
    <div id="back_result"></div> 
    </div> 
    </nav> 
<div class="container"> 
<!-- buttons --> 
<br> 
<div class="row justify-content-md-center"> 
    <div class="col col-lg-3 justify-content-md-center"><button id="ph" type="button" class="btn btn-secondary btn-lg">Photographers</button></div> 
    <div class="col col-lg-3 justify-content-md-center"><button id="mk" type="button" class="btn btn-secondary btn-lg">Makeup Artists</button></div> 
</div></div> 

<!-- cards --> 
<div id="feed"> 

<!-- artists are here --> 
</div> 
<!-- content --> 
<div class="loading"><img src="img/load.gif" /> 
</div><!-- container --> 
</div> 
<script src="js/script.js"> </script> 
</body> 
</html> 

還的script.js

var track_page = 1; //track user scroll as page number, right now page number is 1 
var loading = false; //prevents multiple loads 
var fetch = 'fetch_pages.php'; 
load_contents(track_page); //initial content load 

$(window).scroll(function() { //detect page scroll 
    if($(window).scrollTop() + $(window).height() >= $(document).height()) { //if user scrolled to bottom of the page 
     track_page++; //page number increment 
     load_contents(track_page); //load content 
    } 
}); 
//Ajax load function 
function load_contents(track_page){ 
    if(loading == false){ 
     loading = true; //set loading flag on 
     $('.loading').show(); //show loading animation 
     $.post(fetch, {'page': track_page}, function(data){ 
      loading = false; //set loading flag off once the content is loaded 
      if(data.trim().length == 0){ 
       //notify user if nothing to load 
       $('.loading').html(""); 
       return; 
      } 
      $('.loading').hide(); //hide loading animation once data is received 
      $("#feed").append(data); //append data into #results element 

     }).fail(function(xhr, ajaxOptions, thrownError) { //any errors? 
      alert(thrownError); //alert with HTTP error 
     }) 
    } 
} 
+2

你還可以添加index.php代碼嗎? – Kenath

+0

以上代碼代表index.php或fetch.php?並且在查詢之間存在一個if條件,請檢查。 –

+0

「fetch php用於將數據庫中的內容動態加載到index.php中」 - 我無法從中提取任何含義。我覺得你通過AJAX加載'fetch.php'並且希望傳輸GET參數給AJAX調用,但是沒有JavaScript標記或者JavaScript代碼(但是還有一個MySQL代碼),所以我可能是錯的。附註:'「」。 $ type。「」;'讓我的眼睛流血。爲什麼使用雙引號字符串(因此需要轉義每個引用),然後不使用可變插值? –

回答

1

$ _GET是一個 「超全局變量」,並沒有從那裏訪問的問題,而是應該返回相同的結果,除非您在此過程中將其內容擦除。在PHP

http://php.net/manual/en/language.variables.superglobals.php

幾個預定義變量「超全局變量」,這意味着 他們在整個腳本都有效。沒有必要 做全局$變量;在功能或方法中訪問它們。

這些超全局變量是:

$GLOBALS 
$_SERVER 
$_GET 
$_POST 
$_FILES 
$_COOKIE 
$_SESSION 
$_REQUEST 
$_ENV 
0

PHP $_GET可用於與方法= 「GET」 提交的HTML表單後,收集表單數據。

$_GET可以收集URL中發送的數據。

假設網址有這樣的東西http://example.com/?searchterm=Hello

然後您可以通過$search = $_GET['searchterm'];訪問。

+0

如果我想訪問另一個頁面的searchterm,該怎麼辦? – Krim

相關問題