2010-04-26 80 views
0

我創建一個網頁,是搜索結果...與「拯救」數據分頁搜索

當你正在瀏覽的成果之一,在頁面的底部,我需要插入「下一個結果「和」以前的結果「鏈接,就像一個分頁......但從[我認爲]保存的搜索,對吧?

人們會怎麼做?

實驗值:我會使用CakePHP(PHP)和MySQL

-

更新: 的問題不是如何分頁像 「每頁20個結果」 的搜索結果。 ..我需要從一個記錄跳轉到另一個記錄,並在相同的搜索結果中順序跳轉。

比方說,我找到了記錄3,5,8和9與我的搜索...然後我點擊查看#5記錄,我可以點擊「下一個結果」鏈接跳轉到#8記錄。

-

可能的解決方法#1

創建類似的結果ID的數組:

$results = array(3, 5, 8, 9); 

而這個數組中的會話或餅乾存儲與令牌(SHA1 ,MD5或UUID)並將該令牌作爲GET參數傳遞給URL。

+0

它看起來像一個JavaScript的東西。 – Young 2010-04-26 11:51:27

+1

那是怎麼回事? JS在這裏沒有什麼可做的 – 2010-04-26 11:53:28

+0

'從保存的搜索'意味着。 – Young 2010-04-26 12:00:09

回答

1

使用查詢限制和偏移。例如,在第1頁上,偏移量爲0,而限制是您想要的結果數量。隨着分頁的進行,抵消也是如此。例如,偏移量表示您希望從第11個結果中檢索出確定的結果數量。
我從來沒有使用CakePHP,但this article似乎解釋瞭如何做分頁。

+0

請閱讀我的更新。 – 2010-04-26 11:58:40

+1

哦,我明白了。我想到的是:構建一個數組並用檢索結果填充它。然後你只需要重複它就可以得到下一個相關的結果。我不知道如何在頁面跳轉之間存儲數組。 – 2010-04-26 12:01:22

+0

@Jorge - 是的...這是我認爲這是最好的解決方案...也許在會議中?餅乾?或最糟糕的...數據庫? :S – 2010-04-26 12:03:09

0

我不知道蛋糕,但所有你必須做的 - 使用GET方法的搜索表單,並保留URL中的查詢字符串值。

在純PHP我會用http_build_query()功能,比方說,

if (isset($_GET['page'])) unset($_GET['page']); 
$qs=http_build_query_string($_GET); 
$url="?$qs&page=$page"; 

爲分頁代碼,你可以在這裏找到近千個主題上SO

+0

你的意思是'http_build_query()'? – 2010-04-26 11:53:52

+0

哦是的,謝謝 – 2010-04-26 11:55:40

+0

保存搜索字符串會話是一個選項。一個糟糕的選擇,但。 – 2010-04-26 11:55:56