2016-11-14 106 views
1

我試圖爲mysql數據庫創建一個搜索頁面。我試圖讓一個Next和Previous按鈕循環一次搜索結果。我明白阿賈克斯是做到這一點的最佳方式。 我對阿賈克斯知之甚少。我現在剛剛得到了一堆PHP。 我在這裏搜索,但無法找到我想要做的。我也讀過W3的ajax部分,並沒有幫助解決這個問題。使用ajax在按鈕上調用php函數,然後刷新

我擁有它,以便用戶搜索項目(創建一個mysql查詢),搜索結果一次只輸出一個結果。我怎樣才能得到它,這樣下一個結果將顯示在按下Next按鈕上。對於Prev按鈕同樣如此。

我試過讓if和while語句工作,但它似乎不斷回到客戶端到服務器的問題。

我正在考慮使用PHP變量來表示每個搜索結果,並讓按鈕增加/減少變量數量,並告訴頁面用新變量重新顯示信息。

任何幫助將是偉大的。我已經堅持了一個多星期。代碼示例會更有幫助。

+0

保持JavaScript代碼當前搜索結果的數量,在上一個/更新Next按鈕處理程序,並在搜索時,發送號碼給您的PHP搜索功能 – SergeyLebedev

+1

是這是一個Java問題(正如你標記的那樣)或JavaScript問題? –

+0

我猜你沒有使用Javascript來填充頁面上的HTML,因爲你必須使用AJAX請求來完成此操作。因此,最終,您有一個搜索表單,它將數據發佈到服務器,服務器通過修改用戶看到的數據(搜索結果)做出響應。正確?嘗試谷歌術語'php分頁',因爲這是你正在嘗試做的。你將需要使用'LIMIT'子句來獲得根據用戶輸入的正確結果頁面,你不需要AJAX,保持簡單並且使用PHP。 –

回答

0

我會做這樣做:

一個搜索請求-ajax-到服務器,並在您要瀏覽的結果JSON格式的數組服務器的響應由下一個和以前扔按鈕,通過執行一個搜索請求,您將避免對每次下一次和上一次單擊的服務器提出很多請求,並且還可以避免服務器跟蹤當前結果。


的客戶端 - Javascript和JQuery的

<script> 
var results; // the results array that will have all your search results 
var currentresult = 0; // the index of the current result 
//the search ajax function 
function buttonSearchPressed(){ 
    $.ajax({type:"POST",url:"test.php", 
     data:{keyword:$('input#searchkeyword')[0].value} 
     success:function(data){ 
       try{results = JSON.parse(data)}catch(e){alert('error');}  
     } 
    }); 
} 
function previous(){ 
    if(currentresult>0){ 
     currentresult--; 
     $('span#result')[0].innerHTML =results[currentresult]; 
    } 
} 
function next(){ 
    if(currentresult<results.length-1){ 
     currentresult++; 
     $('span#result')[0].innerHTML =results[currentresult]; 
    } 
} 
</script> 

的客戶端 - HTML

enter image description here

<input id="searchkeyword"> 
<button onclick="buttonSearchPressed()">search</button><br> 
<button onclick="previous()">previous</button> 
<span id='result'></span> 
<button onclick="next()">next</button> 

服務器端 - PHP test.php的

if($_SERVER['REQUEST_METHOD'] == "POST"){ 
    //search ajax handler goes here 
    $keyword= $_POST['keyword'];//the search keyword 
    //apply the search you want here, (for example database query) 
    $searchResult = ["result1","result2","result3","result4","result5"]; 
    $searchResult = json_encode($searchResult); 
    die($searchResult); 
}