php - 分页与搜索结合的逻辑题

标签 php mysql

我有一个列出所有产品的页面。这是一个很长的列表,所以我为用户提供了分页功能,并在页面底部为用户提供了标准页面列表,以便他们可以转到下一页或任何页面。我根据产品总数和一页显示的行数来计算页面。没问题。

$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/

相关文章:

php - 将 mysql 连接作为参数传递时出错

php - CodeIgniter 显示多选而不是下拉

php - 在重定向函数中使用变量

PHP 函数中的 javaScript 代码仅在第一次调用时有效

php - 如何从 Countable 对象中获取第一个元素?

php - 如何在 laravel mongodb 上添加软删除? (拉拉维尔 5.3)

java - Hibernate merge 同时进行插入和删除

php - Split() 已弃用

javascript - AngularJS $资源参数名称

php - 无法在 Laravel 5.1 中每周获取数据