使用搜索参数

时间:2016-08-04 18:10:08

标签: javascript php jquery ajax pagination

我想知道如何使用用户输入作为搜索参数来实现分页。我理解没有用户输入的分页基础知识,并且没有麻烦这样做,当用户输入进来时它会让我感到困惑。我不知道如何使页码链接根据搜索的内容使用正确的查询。

例如基本想法:

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 个答案:

答案 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
});