PHP+MySQL分頁顯示示例分析
Web開發是今后分布式程式開發的主流,通常的web開發都要涉及到與數據庫打交道,客戶端從服務器端讀取通常都是以分頁的形式來顯示,一頁一頁的閱讀起來既方便又美觀。所以說寫分頁程序是web開發的一個重要組成部分,在這里,我們共同來研究分頁程序的編寫。
一、分頁程序的原理
分頁程序有兩個非常重要的參數:每頁顯示幾條記錄($pagesize)和當前是第幾頁($page)。有了這兩個參數就可以很方便的寫出分頁程序,我們以MySql數據庫作為數據源,在mysql里如果要想取出表內某段特定內容可以使用的 T-SQL語句:select * from table limit offset,rows來實現。這里的offset是記錄偏移量,它的計算方法是offset=$pagesize*($page-1),rows是要顯示的記錄條數,這里就是$page。也就是說select * from table limit 10,10這條語句的意思是取出表里從第11條記錄開始的20條記錄。
二、主要代碼解析
$pagesize=10; //設置每一頁顯示的記錄數$conn=mysql_connect('localhost','root',''); //連接數據庫$rs=mysql_query('select count(*) from tb_product',$conn); //取得記錄總數$rs$myrow = mysql_fetch_array($rs);$numrows=$myrow[0];
//計算總頁數
$pages=intval($numrows/$pagesize);
//判斷頁數設置
if (isset($_GET['page'])){ $page=intval($_GET['page']);}else{ $page=1; //否則,設置為第一頁}
三、創建用例用表myTable
create table myTable(id int NOT NULL auto_increment,news_title varchar(50),news_cont text,add_time datetime,PRIMARY KEY(id))
四、完整代碼
<html><head><title>php分頁示例</title><meta http-equiv='Content-Type' content='text/html; charset=gb2312'> </head>
<body><?php $conn=mysql_connect('localhost','root',''); //設定每一頁顯示的記錄數 $pagesize=1; mysql_select_db('mydata',$conn); //取得記錄總數$rs,計算總頁數用 $rs=mysql_query('select count(*) from tb_product',$conn); $myrow = mysql_fetch_array($rs); $numrows=$myrow[0]; //計算總頁數
$pages=intval($numrows/$pagesize); if ($numrows%$pagesize)$pages++; //設置頁數 if (isset($_GET['page'])){$page=intval($_GET['page']); } else{//設置為第一頁 $page=1; } //計算記錄偏移量 $offset=$pagesize*($page - 1); //讀取指定記錄數 $rs=mysql_query('select * from myTable order by id desc limit $offset,$pagesize',$conn); if ($myrow = mysql_fetch_array($rs)) {$i=0;?><table border='0' width='80%'><tr> <td bgcolor='#E0E0E0'><p align='center'>標題</td><td bgcolor='#E0E0E0'><p align='center'>發布時間</td></tr><?php do {$i++;?><tr> <td width='50%'><?=$myrow['news_title']?></td> <td width='50%'><?=$myrow['news_cont']?></td></tr> <?php } while ($myrow = mysql_fetch_array($rs));echo '</table>';}echo '<div align='center'>共有'.$pages.'頁('.$page.'/'.$pages.')';for ($i=1;$i< $page;$i++) echo '<a href='http://www.aoyou183.cn/bcjs/fenye.php?page='.$i.''>['.$i .']</a> '; echo '['.$page.']'; for ($i=$page+1;$i<=$pages;$i++)echo '<a href='http://www.aoyou183.cn/bcjs/fenye.php?page='.$i.''>['.$i .']</a> ';echo '</div>'; ?></body></html>;
五、總結
本例代碼在windows2000 server+php4.4.0+mysql5.0.16上運行正常。該示例顯示的分頁格式是[1][2][3]…這樣形式。假如想顯示成“首頁 上一頁 下一頁 尾頁”這樣形式,請加入以下代碼:
$first=1;$prev=$page-1;$next=$page+1;$last=$pages;
if ($page > 1){ echo '<a href='http://www.aoyou183.cn/bcjs/fenye.php?page='.$first.''>首頁</a> '; echo '<a href='http://www.aoyou183.cn/bcjs/fenye.php?page='.$prev.''>上一頁</a> ';}
if ($page < $pages){ echo '<a href='http://www.aoyou183.cn/bcjs/fenye.php?page='.$next.''>下一頁</a> echo '<a href='http://www.aoyou183.cn/bcjs/fenye.php?page='.$last.''>尾頁</a> ';}
其實,寫分頁顯示代碼是很簡單的,只要掌握了它的工作原理。希望這篇文章能夠帶給那些需要這方面程序web程序員的幫助。
