2016-08-04 71 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代码,我给你加了一条线索。 –