我有一个列出所有产品的页面。这是一个很长的列表,所以我为用户提供了分页功能,并在页面底部为用户提供了标准页面列表,以便他们可以转到下一页或任何页面。我根据产品总数和一页显示的行数来计算页面。没问题。
$sql = "SELECT * from products limit " . $page . ', ' . $rows_per_page
我现在添加了搜索功能,因此用户可以从以给定字母开头的产品开始列表,即从以“s”或“sneaker”开头的产品开始。
我在组合搜索和分页时遇到问题。我如何找出完整列表中的哪一页,他们的搜索最终会出现在哪一页,这样我就可以让他们能够转到下一页或上一页。
只提供下一页很容易,因为我可以从搜索产品开始一个新的分页列表:
$sql = "SELECT * from products WHERE product_name >= '". $search ."' limit " . $page . ', ' . $rows_per_page
但这不会让用户倒退。
最佳答案
您有几个选择。
1) 如果您的搜索表单使用的是 GET,并且有一个带有开始记录的变量 ($page),您可以按照您直接建议的方式进行操作。例如,“下一个”文本中指向 www.mydomain.com/search.php?s=$search&p=$page+10 的链接。这将允许您通过 URL 立即转到任何页面,但如果您在其中包含敏感信息,那就不明智了。此外,您必须为每个页面单独调用服务器。
2) 您可以按照使用 SESSION 变量间接建议的方式进行操作。您可以存储 $search 和 $page,并让您的下一个/上一个按钮成为 POST 表单提交。根据提交的变量,在 $page 之前或之后格式化你的 MySQL 查询限制。但同样,这需要为每个页面发出新的服务器请求。
3) 您可以一次获得整个结果列表,并使用 Javascript 有选择地显示其中的一些结果。例如,您可以在带有 display: block 的 div 中打印前十个结果,而在其他带有 display: hidden 的 div 中打印其他结果。然后您的按钮可以有一个 onclick 事件,它显示适当的结果 div。
关于php - 分页与搜索结合的逻辑题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5148855/