程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 淺談PHP第五彈---分頁之九陽神功

淺談PHP第五彈---分頁之九陽神功

編輯:關於PHP編程

上文中http://www.BkJia.com/kf/201204/128413.html我給大家講了遞歸函數的運行機制及使用,不知道大家是否明白,若不明白可以在下面跟帖提問,我會隨時幫助大家解答。

這兩天有很多同學在提問問題的時候在分頁上面除了問題,那麼今天我來給大家詳細說下分頁技術的應用:

我們經常會在一些web應用中看到漂亮的分頁,

點擊下一頁就會顯示後一頁的內容,這樣是不是頁面美觀不少呢。

好,看完本文的講解相信同學們也能寫出漂亮的分頁來

現在我有一張數據表,表名為mytable,有以下數據:



id  name  pass  age  sex
1  狗蛋 wrw7921sqa5eb72c92a549dd5avfr112  20  1
2  高富帥 vdf79218965eb72c92a549dd5a334534  20  0
3  捷哥 gbj792saa65eb72c92a549dd5avfd321  22  1
4  兄弟連 45379218965eb72ccdd549dd5a330342  24  1
5  lampbrothers cdc79218965eb72c92a549dd5vsfdwsx  24  1
6  lamp ret79218965eb72c92a549dd5a33bgyt  25  0
7  php 123qwe18965eb72c92a549dd5a330875  26  1
8  mysql 76e79218965eb72c92a549ddvfdd0dsa  28  0
9  apache 54ebnm18965eb72c92a549dd5a330cxz  30  1


首先,先來做一個分頁鏈接
<?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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved