2010-10-27 119 views
1

无论用户何时尝试通过$ _GET浏览第二页,如果他们已经提交了$ _POST数据,我都会遇到问题。

if(!isset($_POST['submit'])) { 
//search input box 
} 
else { 
//search details output 
//pagination code 
} 

每当用户按下第2页,它显示//search input box回来。

我想搜索显示页面2而不是//search input box回来。

+0

好的,但是有什么问题? – 2010-10-27 13:53:11

+0

我不确定你的问题是什么......我认为你正在寻找'$ _REQUEST ['']'。如果提交'​​$ _GET ['asdf']'或'$ _POST ['asdf']',那么您可以通过'$ _REQUEST ['asdf']' – Entity 2010-10-27 13:53:57

回答

2

As @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暂时地方,这样你有数据显示在页面上。

0

类似于您的逻辑的接缝扭曲。只需看看你的代码和附加评论:

// if POST submit is NOT set 
if(!isset($_POST['submit'])) { 
    // show search input box 
} 
3

这是因为你没有发送POST数据到第二页。

$_GET$_POST是根据请求设置的。如果要保存第一个POST数据,则需要使用会话并将其存储在会话中,或将POST数据返回到您的页面并重新提交。

+0

获取该值。 – cicakman 2010-10-27 13:54:46

+0

它会是怎样的?正如其他人所说的,你需要告诉我们更多关于你在做什么以及你想要我们帮助的事情。 – 2010-10-27 14:03:35

0

您不应该通过POST提交搜索请求。搜索是一种理想适用于GET请求和查询字符串的只读操作。您所要做的就是修改查询字符串,以包含类似&page=2的内容,以便将链接添加到链接中。

0

更好的方法是将表单处理分割成自己的脚本。这使得它更有组织和更合理,以便您可以通过AJAX更轻松地执行POST等操作。解决我看到的其他问题的提示是,如果您有多页表单,则应将它们在前一页上提交的数据存储在某处。一个常见的地方是会话数据。还有其他一些方法可以将它们全部存储在JavaScript数据对象中,直到表单完成。看看使用框架,他们会帮助。