【问题标题】:user to choose how many records per page to be displayed without to loose the search query - codeigniter用户选择在不丢失搜索查询的情况下每页显示多少条记录 - codeigniter
【发布时间】:2014-04-04 20:14:44
【问题描述】:

我正在处理用 codeigniter 编写的项目,我有相当复杂的搜索表单,之后我会显示搜索结果。

我想为用户提供选择每页显示多少条记录的可能性。

我已经创建了带有选项的组合框,我的想法是制作实用程序类,我将在其中创建一个函数,将这个数字保存在数据库中并将用户重定向回同一页面。但是,在重定向之后,我会丢失用户查询,因此我们将不得不再次进行搜索。我该如何预防呢?

如果这有帮助,我的会话将存储在 ci_session 表中的数据库中。

任何想法都将不胜感激。

问候,约翰

【问题讨论】:

  • 使用 SESSION 或 GET 来保存搜索数据
  • 所以你建议我必须将查询作为一个整体存储在会话中,然后在保存每页变量的记录后在搜索结果页面上调用它......记住我想要避免在 codeigniter 中使用 get ......
  • 不是查询,而是搜索输入值
  • 我会试试看它是如何工作的。这样我就可以使用相同的函数来保存 per_page 变量,并避免创建新变量。谢谢。您可以将您的评论作为答案,所以我可以接受。谢谢。

标签: php mysql codeigniter pagination


【解决方案1】:

您应该将搜索查询的所有参数(包括要显示的结果数量)作为GET 参数传递。

search.php?q=boats+cars&page=3&nr=30&filters=[1,2] 这样的 url 并不少见

如果您将部分数据存储在会话、cookie 或本地存储中,则您将用户限制为一个搜索查询。如果您打开两个搜索查询,后一个将覆盖第一个的数据,从而导致非常奇怪的搜索体验。

【讨论】:

  • 我希望避免得到...不喜欢地址栏中的那些 sphagetti 之类的查询
  • 你总是可以应用一些重写魔法来使 URL 看起来更漂亮:search/boats+cars/3/30/filters:1,2 但我不会太担心它。您还可以序列化和base64_encode,这将完全隐藏内容,您只需得到一个类似cT1ib2F0cytjYXJzJnBhZ2U9MyZucj0zMCZmaWx0ZXJzPVsxLDJd的字符串
猜你喜欢
  • 2011-07-29
  • 2012-09-24
  • 2020-12-15
  • 1970-01-01
  • 2011-10-20
  • 2018-01-06
  • 2015-05-06
  • 2018-08-16
  • 2020-06-21
相关资源
最近更新 更多