2010-09-30 73 views
1

我有一個區域,從php mysql查詢中獲得大約100條記錄。Ajax陣列顯示控件 - 分頁

需要添加AJAX分頁意思是先加載10條記錄,然後在用戶點擊後,讓我們說「+」字它填充的,而不是顯示一次性將顯示20下一個20

所以區域,然後點擊,然後下一個20,下一個...等等,不刷新。

我應該在會話變量上轉儲100條記錄嗎?

我應該每次用戶點擊下一頁觸發器時調用Myqsl查詢嗎?

不確定什麼是最好的方法......或者解決這個問題的方法。

我擔心的是數據庫會從100增長到10,000。

任何幫助的方向是非常apreciated。

回答

1

如果您有大量記錄集可以經常查看(但不是經常更新),請查看APC以緩存數據並在會話中共享數據。您還可以創建一個靜態文件,在數據更改時重寫。

如果需要對頁面上的數據進行排序/操作,您需要限制加載的記錄數以防止JavaScript運行時間過長。 ExtJS有一些很好的小部件可以做到這一點,只需提供JSON數據(在您的記錄集上使用PHP的編碼方法)。我們和甲骨文談了一次,並且很容易地做了20條記錄的分頁。

如果大型唱片集經常更新,並且數據必須是「實時」準確的,你有一些顯著面臨的挑戰。我想看看彗星,猿,或網絡工作者輪詢/推解決方案,建立自己的API僅在更新協議,「核心」的數據 - 再次,可能是緩存在服務器上,而不是從數據庫中每一次拉昇。

+0

感謝這樣一個詳細的解答。 – Codex73 2010-09-30 21:07:12

1

您的ajax調用應該調用一個頁面,該頁面僅從數據庫中提取所需的確切數量的行。所以從第一頁的查詢中選擇前20行,依此類推。你的ajax調用可以使用一個名爲pagenum的參數,並且這取決於你實際從數據庫中提取的記錄。不需要會話變量。

+0

我迷失在最後一部分。所以我保持pagenum在一個會話變量,然後用ajax調用正確的更新? – Codex73 2010-09-30 19:05:26

+0

我一般做它作爲查詢字符串,所以我的ajax頁面會像ajax.php?pagenum = 1 – Caimen 2010-09-30 19:11:34

+0

ajax頁面應返回以下之一顯示,xml,json,或只是直線html – Caimen 2010-09-30 19:12:41