2010-10-27 78 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數據對象中,直到表單完成。看看使用框架,他們會幫助。