我有一個sql查詢返回了很多結果,我想生成一個html表來顯示它們。問題是我不想將它們全部顯示在一個頁面上,我想一次抓取10個,並翻閱結果頁面。從sql查詢生成html報告
我想爲每個查詢返回100個結果,但我無法弄清楚如何在下一個查詢中獲取NEXT 100。
我有一個sql查詢返回了很多結果,我想生成一個html表來顯示它們。問題是我不想將它們全部顯示在一個頁面上,我想一次抓取10個,並翻閱結果頁面。從sql查詢生成html報告
我想爲每個查詢返回100個結果,但我無法弄清楚如何在下一個查詢中獲取NEXT 100。
-- return the first 100 rows
SELECT * FROM table LIMIT 0, 100
-- return the next 100 rows
SELECT * FROM table LIMIT 100, 100
-- and the next
SELECT * FROM table LIMIT 200, 100
您需要做的是將一個變量傳遞給您的腳本,該變量將爲每個頁面創建適當的SQL LIMIT語句。
您會在底部定義一個限制。第一頁:
LIMIT 0,100
第二頁
LIMIT 100,100
等。
當您在頁面上放置'下一步'鏈接時,請創建一個$ _GET參數,其中表示start = 100。然後,使用該起始參數作爲限制中的第一個值,並向其中添加100以獲取第二個值。
那麼,它到底會是什麼樣子:
if(empty($_GET['start']))
{
$start = 0;
}
else
{
$start = $_GET['start'];
}
$SQL = "SELECT * FROM TABLE WHERE 1=1 LIMIT ".$start.",100;";
query($sql);
$link = "<a href=\"?start=".$start+100."\">Next</a>";
如果要在進一步擴大,你可以添加一個num參數。這將允許用戶控制他們看到的記錄數量。所以:
if(empty($_GET['start']))
{
$start = 0;
}
else
{
$start = $_GET['start'];
}
if(empty($_GET['num']))
{
$start = 100;
}
else
{
$start = $_GET['num'];
}
$SQL = "SELECT * FROM TABLE WHERE 1=1 LIMIT ".$start.",".$num.";";
query($sql);
$link = "<a href=\"?start=".$start+100."&num=".$num."\">Next</a>";
當然,你想要sanatize /驗證所有這些數字。
您將需要使用LIMIT sql語句。使用像SELECT * FROM table LIMIT $ var,100這樣的查詢,然後將url作爲/page.ext?page=2。使用get(即php中的$ _GET ['page']),並將該數乘以100,以獲得$ var值。顯然,你需要確保安全。
您參考的內容稱爲分頁,供將來參考。 – 2009-07-24 00:39:01
您正在使用特定的SQL數據庫/方言嗎?服務器/ sql語言通常決定如何對結果集進行分頁。 – jrista 2009-07-24 00:42:26