top
Loading...
PHP+MySQL下分頁顯示的實現
最近,論壇里有很我人都在問如何實現查詢結果的分頁顯示。我希望下面的這段代碼對你改進自己的程序能有所幫助。這些代碼是用于MYSQL的,但很容易移植到其它SQL上。

由于每個程序的特殊性,所以我在MYSQL的查詢里使用了一些很通用的語句。用你的表名替換TABLE;用你的條件語句代替YOUR_CONDITION_HERE;用你希望按其排序的字段名代替WHATEVER(當然如果要排倒序,別忘了加上DESC子句)。

<?php

$qh=mysql_query("SELECT COUNT(*) AS rcnt FROM TABLE WHERE YOUR_CONDITION_HERE ORDER BY WHATEVER");

$data=mysql_fetch_array($qh);

$nr=$data["rcnt"];

//判斷偏移量參數是否傳遞給了腳本,如果沒有就使用默認值0

if (empty($offset))

{

$offset=0;

}

//查詢結果(這里是每頁20條,但你自己完全可以改變它)

$result=mysql_query("SELECT id,name,phone FROM TABLE WHERE YOUR_CONDITION_HERE ORDER BY WHATEVER LIMIT $offset, 20");

//顯示返回的20條記錄

while ($data=mysql_fetch_array($result))

{

//換成你用于顯示返回記錄的代碼

}

//下一步,要寫出到其它頁面的鏈接

if(!$offset) //如果偏移量是0,不顯示前一頁的鏈接

{

$preoffset=$offset-20;

print "<a href="$PHP_SELF?offset=$preoffset">前一頁</a> ";

}

//計算總共需要的頁數

$pages=ceil($nr/20); //$pages變量現在包含所需的頁數

for ($i=1; $i <= $pages; $i++)

{

$newoffset=20*$i;

print "<a href="$PHP_SELF?offset=$newoffset">$i</a> ";

}

//檢查是否是最后一頁

if ($pages!=0 && ($newoffset/20)!=$pages)

{

print "<a href="$PHP_SELF?offset=$newoffset">下一頁</a> ";

}

?>

這只是向你大概地介紹了實現將查詢結果分頁顯示的方法,其他的功能你自己完成。

注意兩點:$PHP_SELF只有偏移量一個參數,你可以根據需要加入自己的東西;這種辦法對包含百萬條記錄以上的表的查詢效率不高。
phpbuiler.com

北斗有巢氏 有巢氏北斗