上文中http://www.BkJia.com/kf/201204/128413.html我給大家講了遞歸函數的運行機制及使用,不知道大家是否明白,若不明白可以在下面跟帖提問,我會隨時幫助大家解答。
這兩天有很多同學在提問問題的時候在分頁上面除了問題,那麼今天我來給大家詳細說下分頁技術的應用:
我們經常會在一些web應用中看到漂亮的分頁,
點擊下一頁就會顯示後一頁的內容,這樣是不是頁面美觀不少呢。
好,看完本文的講解相信同學們也能寫出漂亮的分頁來
現在我有一張數據表,表名為mytable,有以下數據:
首先,先來做一個分頁鏈接
<?php
echo "<a href=''>上一頁</a><br/>";
echo "<a href=''>下一頁</a><br/>";
echo "共計條";
?>
我們思考一下,點擊上一頁,當前頁碼減一,並且會顯示上一頁的數據
假設,當前頁碼我們用一個變量$page來控制,那麼上一頁是不是就應該是$page-1
下一頁的頁碼是$page+1
所以我們上面的鏈接應該改為:
<?php
echo "<a href='index.php?page=".$page-1."'>上一頁</a><br/>";
echo "<a href='index.php?page=".$page+1."'>下一頁</a><br/>";
?>
這樣大家就應該很明白了,怎麼去傳上一頁和下一頁的頁碼
但是在實際的開發中,一個web軟件不可能讓用戶來傳頁碼,用戶訪問頁面只會訪問到index.php
所以我們會對這種情況做相關處理:
<?php
$page = !empty($_GET['page'])?$_GET['page']:1
?>
此時我們的$page如果沒有給定,即$_GET['page']為空,我們直接給$page賦值為1
下一步,我們來把數據分開顯示,也就是說第一頁只顯示第一頁的數據,第二頁只顯示第二頁的數據........第N頁只顯示第N頁的數據
這樣的話,我們需要對sql語句進行操作,要想分頁顯示數據,我們就用到了sql語句的limit子句
好,那我們想,如果每頁數據只顯示5條記錄,sql語句應該什麼樣子的?
那麼我們的
第一頁:
顯示的第一條到第五條的數據是不是就應該是“limit 0,5”;
第二頁:
顯示的第六條到第十條的數據就應該是“limit 5,5”;
第三頁:
顯示的第十一條到第十五條的數據就應該是“limit 10,5”;
..............
我們看一個規律,
仔細觀察,我們的第n頁是不是就應該是
limit (n-1)*每頁顯示的條數,每頁顯示的條數
也就是說,我們需要的數據有當前頁碼以及每頁顯示條數
好,剛剛我們說了,當前頁碼我們可以通過$_GET['page']來獲取,那麼每頁顯示條數我們可以用一個變量來定義,熟練的同學可以定義一個常量,把它放到配置文件中去,
這裡我們使用變量來定義,設定頁大小為5
$page = $_GET['page'];
$pagesize = 5;
那組裝的sql語句的limit子句就應該是“ limit ($page-1)*$pagesize,$pagesize”
此時,我們已經能夠對數據進行分頁處理了,
但是如果想獲取總共多少頁,我們還需要從數據庫中去統計總計多少條記錄
$sql = "select count(*) from mytable";
$result = mysql_query($sql);
我們可以把執行的結果使用mysql_result()函數取出。
$count = mysql_result($result,0);
好,那當前我們的記錄總數就為$count,
現在我們的總數據條數為9條,每頁顯示5條,大家想想,我們的總頁數是不是應該是2頁,也就是ceil(9/5)=2
那總頁數計算公式為ceil($count/$pagesize),
好,我們需要的所有數據都已經得到,最終組裝成sql語句,並顯示出來,應該為:
<?php
//設置每頁顯示多少條記錄
$pagesize = 5;
//獲取當前頁碼
$page = !empty($_GET['page'])?$_GET['page']:1;
//總共記錄條數
$sql = "select count(*) from mytable";
$result = mysql_query($sql);
$count = mysql_result($result,0);
//總共有多少頁
$page_count = ceil($count/$pagesize);
//判斷當前給定頁碼是否越界
if($page<1){
$page=1;
}elseif($page>$page_count){
$page=$page_count;
}
//開始組裝sql語句
$sql = "select id,name,age,sex from mytable limit ".($page-1)*$pagesize.','.$pagesize;
//發送sql語句
$result = mysql_query($sql);
//輸出表格
echo "<table border='1'>";
echo "<tr>";
echo "<th>用戶名</th><th>年齡</th><th>性別</th>";
echo "</tr>";
//定義性別數組
$sex = array('男','女');
//遍歷輸出結果集
while($row = mysql_fetch_assoc($result)){
echo "<tr>";
echo "<td>".$row['name']."</td>";
echo "<td>".$row['age']."</td>";
echo "<td>".$sex[$row['sex']]."</td>";
[backcolor=#ffffff][color=#008ef1]echo "</tr>";[/color][/backcolor]
}
echo "</table>";
//加分頁顯示連接
$up = (($page-1)<1)?1:($page-1);
$down = (($page+1)>$page_count)?$page_count:($page+1);
echo "<a href='test.php?page=".$up."'>上一頁</a> ";
echo "<a href='test.php?page=".$down."'>下一頁</a> ";
echo "共計".$page_count."頁 ";
echo "當前第".$page."頁 ";
echo "共計".$count."條記錄";
?>
好,這樣我們就把分頁功能加上了,怎麼樣,是不是很簡單。
我來總結下分頁的具體步驟:
第一步:設置頁大小(每頁顯示多少條)
第二步:獲取當前頁碼
第三步:獲取總記錄條數
第四步:獲取總頁數
第五步:判斷當前給定頁碼是否越界
第六步:組裝sql語句
第七步:發送sql語句給mysql服務器
第八步:遍歷結果集輸出
第九步:加分頁鏈接
只要記住以上捷哥分頁九陽神功的武林秘籍,相信同學們一定能夠悠然馳騁PHP的武林殺場
作者 zdrjlamp