2012-12-12 152 views
2

我正在處理一個塊,它將顯示最後10個帖子,當用戶點擊「加載更多」按鈕時,我想顯示10箇舊帖子。mysql:從DESC LIMIT選擇最後10行

我如何選擇最後10行,如果我已經使用DESC LIMIT?

mysql_query("SELECT title,id,alt_name FROM dle_post WHERE approve='1' AND date >= '$monthagodate' 
AND date < '$curdate' + INTERVAL 1 day ORDER BY date DESC LIMIT $more;"); 
+0

什麼是不工作關於你在做什麼?你看到什麼錯誤?它應該工作得很好,可以更好的參數化,只需重新渲染帖子.... – Colleen

回答

4

您正在使用一個參數進行限制。但是您可以使用LIMIT x,y來指定x(返回的第一條記錄的位置)和y(要返回的記錄數)。

將一個變量傳遞給像results.php?start=x這樣的頁面來設置一個起始位置。

if (!isset($_REQUEST['start'])) { $start = 0; } else { $start = (int)$_REQUEST['start']; } 

mysql_query("SELECT title,id,alt_name FROM dle_post WHERE approve='1' AND date >= '$monthagodate' 
AND date < '$curdate' + INTERVAL 1 day ORDER BY date DESC LIMIT $start,10;"); 

然後你就可以產生像這樣一個鏈接到下一個頁面:

echo '<a href="results.php?start=' . ($_REQUEST['start']+10) . '">Next 10 results</a>';

+0

值得指出的是,在鏈接到下一個結果頁面時,我們應該使用'$ start'變量來填充代碼的頂部而不是'$ _REQUEST ['start']')像這樣:'...。 ($ start + 10)。 ...'。原因在於,如果用戶在URL中未傳遞啓動變量的情況下訪問該頁面,則會在嘗試訪問'$ _REQUEST'變量中的未定義索引'start'時生成警告級別錯誤。 –

1

您應該添加另一個參數$start,並使用下面的查詢

mysql_query("SELECT title,id,alt_name FROM dle_post WHERE approve='1' AND date >= '$monthagodate' AND date < '$curdate' + INTERVAL 1 day ORDER BY date DESC LIMIT $start, $more;"); 

這裏$start用於電話MySQL要提取記錄的起始點。