2010-11-22 159 views
0

我有一個關於屬性搜索的搜索表單,它有一些搜索會給出結果的元素。如地區,地點,城市,沒有臥室等。 一旦表單被提交,我可以通過$ _post獲取所有表單元素的值。問題是,當我實現分頁時,如何獲取下一頁上的元素值?我應該使用某種全局變量/數組或會話嗎? 你有什麼建議?php mysql搜索查詢

+0

完全取決於您如何存儲數據。它是否塞入一個數組?在數據庫中? – cdhowie 2010-11-22 08:04:43

回答

1

爲了讓你的下一個頁面上$ _ POST值來傳遞$ _ POST在分頁鏈接值。

舉例來說,您有一個名爲搜索的輸入字段,您正在執行搜索。 所以你必須在每個分頁鏈接上傳遞$ _POST ['search']。

<a href='search.php?page=2&search="'. $_POST['search'].'"'>Page 2</a> 

現在在第2頁,你可以得到$ _GET [ '搜索']和您的查詢

使用它================== ============================================

您可以使用會話也

當您提交後,您的$ _Post值啓動會話並將其保存在會話變量中。在這種情況下,你沒有傳遞價值分頁鏈接

session_start(); 
$_SESSION['search'] = $_POST['search']; 

現在你可以直接使用$ _SESSION在查詢[「搜索」]值。

但是對於每次新的搜索,這個會話變量都是空的,所以如果搜索字段沒有任何搜索值,那麼它不會在數據庫中搜索其舊值。

+0

我該怎麼做才能顯示最後一頁。我的意思是,如果我的搜索結果在7頁中,我將如何顯示page1 page2 .... page7 – booota 2010-11-22 09:21:29

+0

首先用它的搜索條件計算記錄總數。然後用每頁記錄數除。所以你會看到總頁數。比如記錄總數= 30;每頁記錄= 10;因此,頁面將爲3.現在使用for循環顯示鏈接(i = 1; i <= 3; i ++){Page $i } – 2010-11-22 09:30:15

0

我建議你在你的mysql-query中使用LIMIT。如第一頁,如果你想10分的結果:

SELECT * FROM searchtable LIKE %%WHATEVER%% LIMIT 0,10 

這將限制結果,以10 對於2頁你賢者:

SELECT * FROM searchtable LIKE %%WHATEVER%% LIMIT 11,20 

當然你要幹什麼將限制設置爲來自PHP的變量。 希望這有助於!

0

使用2搜索查詢,第一次爲
select count(1) from _table_ WHERE _where_
和第二個爲
select _fields_ from table where _where_ LIMIT _limit_
其中_limit_$pagenum*$itemsPerPage, ($pagenum+1)*$itemsPerPage