技術討論區 > 網頁技術
請問那有關於PHP 的分頁設定教學
ericshei:
哇!新增"網頁設計"這個專區,實在太好了,這也是小弟很有與趣的東東哦!
呵!我是第一個用這一區的哦!第一名!第一名!
如題!偶不知道怎麼分頁哩!
ericshei:
呵...找到了,給像小弟一樣的初學者參考!
專貼自:http://ysl.idv.tw/lab/index.php?func=teach&act=show&id=11
文件提供者:YSL 文件類型: 個人創作 發表日期:2001-02-22 點齒蜈G726
Copyright 2001 The YSL網路實驗室(YI Shiu Lin). All Rights Reserved.本文件歡迎轉載,但必須保留上述版權告示,並先通知原作者。
其實分頁弁鄐j多是利用,資料庫查詢語法裡的 limit 的弁遄A使用Limit $Start,$OnePageNum 來限制只由資料庫取出目前頁數的資料,其他頁數的就不取出來了,所以分頁弁鄐W,最大的問題就在於如何計算$Start ( $OnePageNum 由使用者定義固定每頁顯示多少筆資料),所以最大的關鍵就在於計算分頁連結中下一個欲連結頁數上,計算,還有沒有下一頁,有沒有上一頁等,底下是一個非常簡單,而且很好實作的分頁弁遄C
首先定義每頁顯示資料筆數,此資料必須為固定值。
<? $OnePageNum = 5; ?>
2. 計算目前頁數為第幾筆資料開始
<? $Start = $Page*$OnePageNum; ?>
3. 由資料庫取出目前頁數的資料範圍
<?
$QStr = "Select *
From Table
Order By ID
Limit $Start,$OnePageNum";
$Link = mysql_pconnect($DB_SERVER,$DB_USER,$DB_PASSWD);
$Result = mysql_db_query($DB_NAME,$QStr,$Link);
?>
4. 以迴圈顯示目前頁數所有資料
<?
while($Data = mysql_fetch_object($Result))
{
echo ("顯示目前頁數所有資料");
}
?>
5. 計算顯示分頁連結
1. 如果現在頁數不是第一頁,則顯示上一頁連結
<?
if($Page!=0)
{
$UpPage = $Page-1;
echo ("<a href="$PHP_SELF?Page=$UpPage">上一頁</a>");
}
?>
Ps.第一頁資料在資料庫內為 第零筆 到 第四筆,因此第一頁應該由 0 開始。
2. 如果在頁數不是最後一頁,則顯示下一頁連結
<?
if(mysql_num_rows($Result)==$OnePageNum)
{
$DLPage = $Page+1;
echo ("<a href="$PHP_SELF?Page=$DLPage">下一頁</a>");
}
?>
這裡比較值得注意的是,在判斷是不是最後一頁的方式上,是採計算目前此頁由資料庫取出的資料筆數是不是跟每頁應當顯示的筆數相同,如果不相同代表沒有下一頁了,因為最後一頁的資料筆數一定小於或等於每頁該顯示資料筆數。
如果相同,代表有下一頁。事實上這個方式有一點小 Bug,那就是如果剛好資料庫內的資料筆數剛好為每頁顯示筆數的倍數,那麼在最後一頁的判斷上,會有一點瑕疵,因為資料庫的筆數為每頁顯示筆數的倍數,所以真正的最後一頁查詢出來,資料筆數會剛好等於每頁顯示筆數,所以會判斷成不是最後一頁,而造成最後一頁顯示時會剛好沒有任何資料。
結論:以上這個簡單的分頁程式,非常的容易實作,如果您要在您已經寫好的程式裡加上分頁的弁遄A用這個方法您不需要修改太多的程式碼,你只需要在一開始先定義$OnePageNum,再加上起始資料的計算($Start = $Page*$OnePageNum),然後修改查詢的語法,加上Limit $Start,$OnePageNum,最後後再加上分頁連結判斷的顯示。簡單幾個步驟,即可為您的程式加上分頁弁遄C
以下是本範例的全部程式碼內容:
<?
$OnePageNum = 5;
$Start = $Page*$OnePageNum;
$QStr = "Select *
From Table
Order By ID
Limit $Start,$OnePageNum";
$Link = mysql_pconnect($DB_SERVER,$DB_USER,$DB_PASSWD);
$Result = mysql_db_query($DB_NAME,$QStr,$Link);
while($Data = mysql_fetch_object($Result))
{
echo ("顯示目前頁數所有資料");
}
if($Page!=0)
{
$UpPage = $Page-1;
echo ("<a href="$PHP_SELF?Page=$UpPage">上一頁</a>");
}
if(mysql_num_rows($Result)==$OnePageNum)
{
$DLPage = $Page+1;
echo ("<a href="$PHP_SELF?Page=$DLPage">下一頁</a>");
}
?>
YSL 網路實驗室 http://www.topfly.idv.tw 2001-02-22
Copyright© 1999-2002 YSL網路實驗室, Inc. 版權所有
[ 這篇文章被編輯過: ericshei 在 2002-01-23 09:57 ]
VBird:
阿!抱歉,看錯你的程式碼,傷腦筋....
另外,其實 MySQL 及 PHP 的相關資料也可以到底下兩個網站上去看看喔!
http://php.wilson.gs/bible/index.php
http://cnpa.yzu.edu.tw/~cfc/docs/mysqldoc_big5/manual_toc.html
ericshei:
講到彩券心就痛,一張都沒中.......傷心中....
洪七公:
http://163.23.89.67/teach/php_page.php
導覽
[0] 文章列表
[#] 下頁
前往完整版本