使用 PHP 将分页添加到搜索结果中



我正在努力将 PHP 分页添加到我的搜索结果中。目前,我在index.php上搜索一个术语,它需要我搜索.php与我的数据库中匹配的结果列表。这部分工作正常,但我希望它每页显示 10 个结果,而不是同一页面上的每个结果。我如何实现这一点?我已经看了这里和这里,但我的代码有点不同,我正在努力实现这些建议。任何帮助将不胜感激,即使只是为我指出正确的方向。

<?php
if (isset($_POST['submit-search'])) {
$search = mysqli_real_escape_string($conn, $_POST['search']);
$sql = "SELECT * FROM people WHERE location LIKE '%$search%'";

$result = mysqli_query ($conn, $sql);
$queryResult = mysqli_num_rows($result);
echo " ".$queryResult." RESULTS";
if ($queryResult > 0){
while ($row = mysqli_fetch_assoc($result)){
echo "<div>
<h3>".$row['firstname']."</h3>
<p>".$row['lastname']."</p>
<p>".$row['location']."</p>
<p>".$row['profession']."</p>
</div>";
}       
}   
}
?>

我将在这里解释逻辑,并为您提供实现分页的链接。

在当前代码中,您正在从数据库中获取all the results并将其显示在模板中。

您实际上应该做的是利用MySQL's LIMIT clause,并批量获取结果。

LIMIT clause可以像下面这样使用:

SELECT * FROM people WHERE location LIKE '%$search%' LIMIT 5, 10

哪里5 is OFFSET and 10 is Row Count.也就是说,上面的查询只获取从 5 到 15 的结果(假设行是连续 id(。

更多信息: MYSQL 限制

现在,您可以将OFFSET视为Current page * Number of people listed on a pageRow Count视为Number of people listed on a page (constant)。 因此,对于第一页,您将使用以下查询:

SELECT * FROM people WHERE location LIKE '%$search%' LIMIT 0, 10
Where, 
Current page = 0 * 10;
number of people listed in a page = 10;

对于第二页:

SELECT * FROM people WHERE location LIKE '%$search%' LIMIT 10, 10
Current page = 1*10;
number of people listed in a page = 10;

等等...这里唯一更改的变量是page,您可以通过 URL 请求。

我将添加指向实现此逻辑的 github 存储库的链接。请经历并了解工作。

存储库:PHP 分页

相关内容

  • 没有找到相关文章

最新更新