[英]How do i create pagination for my search results
我正在尝试为搜索结果创建分页 。 如果我放弃搜索功能(即不包括if (isset($_POST['submit-search']))
和LIKE %search%
),但一旦包含了这些功能,就可以创建工作分页,如在下面的代码中,当我单击下一页时,只会得到一个空白页,就像sql术语未保留在内存中一样。
<?php
if (isset($_POST['submit-search'])) {
$results_per_page = 2;
$search = mysqli_real_escape_string($conn, $_POST['search']);
$sql = "SELECT * FROM article WHERE a_title LIKE '%$search%' OR a_text LIKE '%$search%'";
$result = mysqli_query($conn, $sql);
$queryResult = mysqli_num_rows($result);
$number_of_pages = ceil($queryResult/$results_per_page);
// determine which page number visitor is currently on
if (!isset($_GET['page'])) {
$page = 1;
} else {
$page = $_GET['page'];
}
$this_page_first_result = ($page-1)*$results_per_page;
$sql = "SELECT * FROM article WHERE a_title LIKE '%$search%' OR a_text LIKE '%$search%'LIMIT ".$this_page_first_result.",".$results_per_page." ";
$result = mysqli_query($conn, $sql);
// echoing the search results
while ($row = mysqli_fetch_assoc($result)) {
echo "<h3>".$row['title']."</h3>
<p>".$row['text']."</p>";
}
// echoing the pagination
for ($page=1;$page<=$number_of_pages;$page++) {
echo "<li><a href='search_results.php?page=".$page."'>".$page."</a></li>";
}
}
?>
html
<form action="search_results.php" method="POST">
<input type="text" name="search"placeholder="Search">
<button type="submit" name="submit-search">go</button>
</form>
逻辑是错误的。
// this code is only executed on the initial search.
if (isset($_POST['submit-search'])) {
当用户转到下一页时:
echo "<li><a href='search_results.php?page=".$page."'>".$page."</a></li>";
仅给出页码,并且由于未发布任何内容而丢失了搜索参数,因此第一个if语句将不再运行。
您可以执行以下操作:
echo "<li><a href='search_results.php?page=".$page."&search=$search'>".$page."</a></li>";
和:
if(isset($_POST['submit-search']) || isset($_GET['search'])){
$search = ...;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.