2016-08-04 69 views
0

我想知道如何使用用戶輸入作爲搜索參數來實現分頁。我理解沒有用戶輸入的分頁的基礎知識,並沒有這樣做的麻煩,這是當用戶輸入時,它使我困惑。我不知道如何使頁碼鏈接根據搜索到的內容使用正確的查詢。使用搜索參數創建分頁鏈接

例如基本思想:

HTML

<input type="text" name="id" placeholder="ID"> 
<input type="text" name="name" placeholder="Name"> 
<button id="btn_search">Search</button> 

<div id="search_results"></div> 

JS

$("#btn_search").on('click', function() { 
     $.ajax({ 
      url: 'process.php', 
      type: 'POST', 
      data: {id: $("input[name=id]").val(), name: $("input[name=name]").val()}, 
      success: function(result) { 
       $("#search_results").html(result); 
      } 
     }); 
}); 

PHP

// Grab submitted search parameters and store in variable 
    if (isset($_POST["id"]) && !empty($_POST["id"])) { 
     $id = $_POST["id"]; 
    } else { 
     $id = null; 
    } 
    if (isset($_POST["name"]) && !empty($_POST["name"])) { 
     $name = $_POST["name"]; 
    } else { 
     $name = null; 
    } 
    $count_query = "SELECT COUNT(*) FROM users"; 
    // Code here to get total row count for pagination 
    $query = "SELECT * FROM users WHERE id = ? AND name = ?"; 
    $stmt = $connection->prepare($query); 
    $stmt->bind_param('is', $id, $name); 
    $stmt->execute(); 
    // Dump as table 

我想正確的做法是這樣的:

<ul class="pagination"> 
    <li><a href="paginate.php?id=<?php echo $id; ?>&name=<?php echo $name; ?>"></a></li> 
    <li><a href="paginate.php?id=<?php echo $id; ?>&name=<?php echo $name; ?>"></a></li> 
</ul> 

然後包括頁碼一個參數通過一個for循環。

用一些客戶端輸入驗證是否安全?我有一個有效的方法嗎?

編輯

函數naveed的回答是有幫助的,所以我會標記爲回答。本文:https://jadendreamer.wordpress.com/2012/11/20/php-tutorial-searching-and-pagination/幫助我瞭解瞭如何做到這一點。它很古老,但很好地解釋了一切。我結束了使用標籤傳回查詢參數。

+1

使用jQuery數據表,如果它適合您的問題,它會自動爲您做所有事情! –

+0

雖然我絕對可以做到這一點......我很想學習如何自己手動編寫代碼! –

回答

1

您需要將幾個變量設置爲隱藏在窗體中。

每頁記錄數

偏移的記錄

然後,你需要得到的網頁數和生成HTML

鏈接在PHP文件:

$return['total'] = $rs->num_rows; 
$return['records']=$rs; 
echo json_encode($return); 

<ul> 
    <li><a href="#2" class="pagination">2</a></li> 
    <li><a href="#3" class="pagination">3</a></li> 
</ul> 

然後在JQuery

$('a.pagination').click(function(){ 
    var page = $(this).attr('href').replace('#', ''); 
    // now here you need to get data from process.php and pass the page variables or calculate the offset like page 2 seems offset 21 to 40 based on limit 
}); 
+0

關於您的jQuery評論的問題...我如何從process.php中獲取搜索參數到該點擊函數中? –

+0

您需要從PHP返回包含總記錄數的數組。在HTML中,您可以將計數設置爲隱藏字段和表格中的記錄數組。 –

+0

檢查PHP代碼,我給你加了一條線索。 –