如果用户尝试通过$ _GET浏览到第二页,如果他们提交了$ _POST数据,我就会遇到问题。
if(!isset($_POST['submit'])) {
//search input box
}
else {
//search details output
//pagination code
}
每当用户按第2页时,它都会显示//search input box
。
我希望搜索显示第2页而不是//search input box
。
答案 0 :(得分:3)
这是因为您没有将POST数据发送到第二页。
每个请求都会设置 $_GET
和$_POST
。如果要保存第一个POST数据,则需要使用会话并将其存储在会话中,或将POSTed数据返回到页面并重新提交。
答案 1 :(得分:2)
正如@Alan所说......第2页没有收到POST
数据,所以submit
未设置,它认为应该再次显示起始表单。跟踪结果页面的第二个GET
变量(例如page
)将允许所有三个页面(开始,第1页+提交,第2页)
if (isset($_REQUEST["page"])) {
//No data received, but reviewing & page-display code should go here
} elseif (isset($_POST["submit"])) {
//POST-processing code goes here
// Page-switching URL should be something like:
// <a href="results.php?page=2">Page 2</a>
} else {
//Nothing posted, not paging - show input
//search input box
}
不要忘记暂时将POST
数据存储在某处,以便在页面上显示数据。
答案 2 :(得分:0)
好像你的逻辑是扭曲的。只需查看您的代码并附加其他评论:
// if POST submit is NOT set
if(!isset($_POST['submit'])) {
// show search input box
}
答案 3 :(得分:0)
您不应该通过POST提交搜索请求。搜索是一种只读操作,非常适合GET请求和查询字符串。您只需修改查询字符串以包含&page=2
之类的内容即可为您的链接添加分页。
答案 4 :(得分:0)
更好的方法是将表单处理拆分为自己的脚本。这使得它更有条理,更符合逻辑,因此您可以更轻松地通过AJAX执行POST操作。解决我看到你遇到的另一个问题的一个提示是,如果你有一个多页表单,你应该存储他们在以前页面上提交的数据。常见的地方是会话数据。还有其他方法可以将其全部存储在javascript数据对象中,直到表单完成。考虑使用框架,他们会帮助。