【问题标题】:Pagination together with a html form与html表单一起分页
【发布时间】:2018-07-27 10:46:45
【问题描述】:

在我的网站上,我对 MySQL 输出使用了分页(类似于本页底部的分页)。对于当前页面的更改,我使用GET 方法(可变页面)并且效果很好。 但是,在我的页面上,我还有一个表单,使用方法 POST,它充当 MySQL 输出的过滤器。这引发了一个问题,因为当我更改表单设置并提交它们 (POST) 时,地址行 (GET) 中的页面保持不变。在某些情况下,当过滤后的输出页数少于当前设置的页数时,这是一个问题。

提交表单时是否可以将 page 变量设置为 0? 特别是,我使用$_SERVER['REQUEST_METHOD'] == 'POST' 做到了。然而,这只改变了代码中的变量。不在地址行。 另一方面,当我更改输出页面时,我想保留 POST 变量。

提前致谢。

【问题讨论】:

  • 不清楚当前行为是什么以及您要实现什么。假设您要提交表单并保留分页 - 只需添加一个 POST 参数,该参数将说明您所在的结果页面。
  • 是的,也许还不清楚。我试图保持文字简短。事实上,我想在每次提交表单后将页面重定向到 www.something?page=0。

标签: php mysql forms pagination


【解决方案1】:

您的设置中存在逻辑冲突:
与 GET 方法不同,POST 方法不在地址栏中保留变量。但由于某种原因,您正在使用 POST 方法。

因此,解决方案非常简单——使用 GET 方法进行过滤。

要创建分页链接,请使用$_GET 数组中的http_build_query()

【讨论】:

  • 谢谢,我想是的。我会检查 http_build_query() 的使用情况。
【解决方案2】:

事实上,最好在地址中发送过滤条件(GET 方法)。它将解决您的分页问题,​​并且您(和您的用户)将拥有指向搜索结果的直接链接。

【讨论】:

  • 好的,谢谢。我只是在想同样的方法。我认为,这应该很容易做到。结果的直接链接也是一个好点。再次感谢:)
【解决方案3】:

在您的 PHP 代码中,如果您正在提交(通过按“过滤器”按钮或其他任何名称),您希望重定向到删除页面 GET 参数的 URL。所以它将从第 0 页开始。

您必须自己重写 URL(或使用插件)。

已纠正错字,我的意思是第 0 页,而不是第 1 页:P

【讨论】:

  • 是的,类似的。提交表格后,我想去 www.something.php?page=0.
猜你喜欢
  • 1970-01-01
  • 2010-11-11
  • 2017-08-25
  • 2017-01-25
  • 2018-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多