2008-11-14 61 views
0

我的意思是什麼是最有效的方式來獲取有關您的網頁的項目數量的信息,並使用LIMIT您需要的SQL查詢。或者我應該得到所有的項目,然後用PHP函數裁剪數組?如何執行頁面控制?

現在我做了2個查詢:首先計算所有項目,第二個獲得LIMIT所需的項目。

好吧,我會更具體。例如,我需要在我的頁面上顯示一個問題,並且回答這個問題。在頁面底部有頁面控制:鏈接到下一頁,上一頁等等。我想顯示正確數量的鏈接(答案數量/ 20),並且當我轉到任何鏈接時,我想要接收正確的答案(例如,3d頁面上的41到60)。那麼,獲得多少項目(答案)以顯示適當數量的鏈接並獲得每個鏈接的正確答案的最佳方式是什麼?

+0

我不知道你想要完成什麼,你能重新解釋一下這個問題嗎? – 2008-11-14 08:14:06

+0

嘗試尋找分頁,有大量類似的問題已經回答了 – 2008-11-14 09:09:43

回答

1

我假設你想要計算你將閱讀的行數,以便做一些分頁或類似的?我不明白你在問題的背景下對LIMIT的需求。但是,如果您只需要計算找到多少行,請使用以下選項之一。

可以選擇所有的行數,如:

select count(*) as counted, name, address 
from contact 

或被發現行:

SELECT SQL_CALC_FOUND_ROWS, name, address 
from contact 

這可能是MySQL的具體的我也不太清楚。

更新:

對於分頁,你會做類似如下 - (僞代碼)

$行=陣列($結果)
$ NUM_ROWS = SQL_CALC_FOUND_ROWS
$ per_page = 20
$頁=小區($ NUM_ROWS/$ per_page)


$ rows_this_page =陣列()
$ rows_this_page = get_values($行,(分鐘指數)$ PAGE_NUMBER * $ per_page - $ per_page,(最大索引)$ PAGE_NUMBER * $ per_page - 1)

+0

非常感謝,我需要LIMIT獲得適當的項目(答案)或我sholdn'做到這一點? – user37590 2008-11-14 08:39:36

2

我想站立着試圖假設你想知道查詢中有多少項目/答案,但只能閱讀最多20個項目的分頁。

首先:你真的應該尋找一個分頁包;很多很多人都遇到過同樣的問題,並且可能爲您的編程語言和框架提供免費/開源和專有解決方案。 (如果你說你用的是什麼語言我敢肯定有人可以reccomend的解決方案適合您。)

不管怎樣,我知道我想知道是如何工作的,所以這是它通常是如何做:

據我所知,分頁代碼通過使用select count(*) from tblX where something執行一個查詢來計算頁面數,並將該數字與每頁項目數和使用上限(例如4.1 => 5)分開。

用於列出每頁結果a 查詢是必需的;不要擔心計數查詢比獲取每個結果丟棄不需要的結果要快得多不要這樣做(這就是成爲this page頂級報道的接受者)。類似select * from tblX where something limit Y offset Z其中Y是每頁的項目數,Z是(requested_page - 1)*Y;第1頁將有偏移量0,第2頁有偏移量20(如果這就是Y是什麼)等等。

但是不要嘗試手動實現它,這是不必要的,乏味和容易出錯,更好地使用您的時間自定義現成的解決方案。