[英]how could i get search results to work with the pagination?
嗨,朋友们,所以我得到了这个搜索标准的东西,它可以选择一个值或选择所有选项,但是无论如何,这里的问题是我不知道如何在发生分页时保持结果不变?
到目前为止,如果单击“下一步”或任何页面,它将显示空白页面,因为除了页码以外,其他任何内容都没有通过。
这是我的密码
<?php
$title = clean($_REQUEST['title']);
$name = clean($_REQUEST['name']);
$description = clean($_REQUEST['description']);
$criteria = array();
if($title !='')
{
$criteria[] = "title = '".$title."'";
}elseif($title =='All')
criteria[] = "title = ''";
}
if($name !='')
{
$criteria[] = "name = '".$name."'";
}elseif($name =='All')
criteria[] = "name = ''";
}
if($description !='')
{
$criteria[] = "description = '".$description."'";
}elseif($description =='All')
criteria[] = "description = ''";
}
try {
$total = $db->query('SELECT COUNT(*) FROM table WHERE '.implode(' AND ', $criteria).'')->fetchColumn();
global $per_page;
$pages = ceil($total / $per_page);
$page = min($pages, filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT, array(
'options' => array(
'default' => 1,
'min_range' => 1,
),
)));
$offset = ($page - 1) * $per_page;
$start = $offset + 1;
$end = min(($offset + $per_page), $total);
$stmt = $db->prepare('SELECT * FROM table WHERE '.implode(' AND ', $criteria).' ORDER BY id DESC LIMIT :per_page OFFSET :offset');
$stmt->bindParam(':per_page', $per_page, PDO::PARAM_INT);
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
if ($stmt->rowCount() > 0) {
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$iterator = new IteratorIterator($stmt);
foreach ($iterator as $row) {
echo $row['id'];
}
echo '<div id="pagination">
<div id="pagiCount">';
$prevlink = ($page > 1) ? '<span id="prev"><a href="?page=1" title="First page">First</a></span> <span id="prev"><a href="?page=' . ($page - 1) . '" title="Previous page"><<</a></span>' : '';
$nextlink = ($page < $pages) ? '<span id="next"><a href="?page=' . ($page + 1) . '" title="Next page">>></a></span> <span id="next"><a href="?page=' . $pages . '" title="Last page">Last</a></span>' : '';
echo '<div id="paging"><p><small>', $prevlink, ' Page ', $page, ' of ', $pages, '', $nextlink, '</small></p></div>';
echo '</div></div>';
} else {
echo '<p>Nothing found.</p>';
}
} catch (Exception $e) {
echo '<p>Nothing found.</p>';
}
?>
对于您的帮助,我真的非常感谢。 干杯
您必须使用除页面之外的相同参数重新为其查询字符串。
所以我认为类似的事情会起作用:
//regenerate query string with new page
$cur_params = $_GET;
unset($cur_params["page"]);
$cur_url = strtok($_SERVER["REQUEST_URI"],"?") . "?" . http_build_query($cur_params, "", "&");
$page_back_url = $cur_url . (empty($cur_params) ? "" : "&") . "page=" . ($page - 1);
$page_next_url = $cur_url . (empty($cur_params) ? "" : "&") . "page=" . ($page + 1);
$page_last_url = $cur_url . (empty($cur_params) ? "" : "&") . "page=$pages";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.