這篇文章主要為大家詳細介紹了php封裝一個顯示頁碼的分頁類,具有一定的參考價值,感興趣的小夥伴們可以參考一下
本文執行個體為大家分享了php封裝顯示頁碼的分頁類,供大家參考,具體內容如下
一、代碼
conn.php
<?php class Mysql{ public function __construct(){ $this->connect(); } public function connect(){ $conn=mysql_pconnect('localhost','root','root') or die("Connect MySQL False"); mysql_select_db('db_database20',$conn) or die("Connect DB False"); mysql_query("SET NAMES utf8"); } } ?>
index.php
<link rel="stylesheet" type="text/css" href="css/style.css" rel="external nofollow" > <?php include_once("conn.php");//包含conn.php檔案 class Page extends Mysql{//建立Page類並繼承Mysql類 private $pagesize;//每頁顯示的記錄數 private $page;//當前是第幾頁 private $pages;//總頁數 private $total;//查詢的總記錄數 private $pagelen;//顯示的頁碼數 private $pageoffset;//頁碼的位移量 private $table;//欲查詢的表名 function __construct($pagesize,$pagelen,$table){ if($_GET['page']=="" || $_GET['page']<0){//判斷地址欄參數page是否有值 $this->page=1;//當前頁定義為1 }else{ $this->page=$_GET['page'];//當前頁為地址欄參數的值 } $this->pagesize=$pagesize; $this->pagelen=$pagelen; $this->table=$table; new Mysql();//執行個體化Mysql類 $sql=mysql_query("select * from $this->table");//查詢表中的記錄 $this->total=mysql_num_rows($sql);//獲得查詢的總記錄數 $this->pages=ceil($this->total/$this->pagesize);//計算總頁數 $this->pageoffset=($this->pagelen-1)/2;//計算頁碼位移量 } function sel(){ $sql=mysql_query("select * from $this->table limit ".($this->page-1)*$this->pagesize.",".$this->pagesize);//查詢當前頁顯示的記錄 return $sql;//返回查詢結果 } function myPage(){ $message="第".$this->page."頁/共".$this->pages."頁 ";//輸出當前第幾頁,共幾頁 if($this->page==1){//如果當前頁是1 $message.="首頁 上一頁 ";//輸出沒有連結的文字 }else{ $message.="<a href='".$_SERVER['PHP_SELF']."?page=1'>首頁</a> ";//輸出有連結的文字 $message.="<a href='".$_SERVER['PHP_SELF']."?page=".($this->page-1)."'>上一頁</a> ";//輸出有連結的文字 } if($this->page<=$this->pageoffset){//如果當前頁小於頁碼的位移量 $minpage=1;//顯示的最小頁數為1 $maxpage=$this->pagelen;//顯示的最大頁數為頁碼的值 }elseif($this->page>$this->pages-$this->pageoffset){//如果當前頁大於總頁數減去頁碼的位移量 $minpage=$this->pages-$this->pagelen+1;//顯示的最小頁數為總頁數減去頁碼數再加上1 $maxpage=$this->pages;//顯示的最大頁數為總頁數 }else{ $minpage=$this->page-$this->pageoffset;//顯示的最小頁數為當前頁數減去頁碼的位移量 $maxpage=$this->page+$this->pageoffset;//顯示的最大頁數為當前頁數加上頁碼的位移量 } for($i=$minpage;$i<=$maxpage;$i++){//迴圈輸出數字頁碼數 if($i==$this->page){ $message.=$i."\n";//輸出沒有連結的數字 }else{ $message.="<a id='num' href='".$_SERVER['PHP_SELF']."?page=".$i."'>".$i."</a>\n";//輸出有連結的數字 } } if($this->page==$this->pages){//如果當前頁等於最大頁數 $message.=" 下一頁 尾頁";//顯示沒有連結的文字 }else{ $message.=" <a href='".$_SERVER['PHP_SELF']."?page=".($this->page+1)."'>下一頁</a> ";//顯示有連結的文字 $message.="<a href='".$_SERVER['PHP_SELF']."?page=".$this->pages."'>尾頁</a>";//顯示有連結的文字 } return $message;//返回變數的值 } } ?> <table border="1" cellpadding="1" cellspacing="1" bordercolor="#FFFFFF" bgcolor="#FF0000"> <tr> <td style="padding-left:3px; padding-right:3px; padding-top:3px; padding-bottom:3px;" bgcolor="#FFFFFF">ID:</td> <td style="padding-left:3px; padding-right:3px; padding-top:3px; padding-bottom:3px;" bgcolor="#FFFFFF">標題</td> <td style="padding-left:3px; padding-right:3px; padding-top:3px; padding-bottom:3px;" bgcolor="#FFFFFF">內容</td> <td style="padding-left:3px; padding-right:3px; padding-top:3px; padding-bottom:3px;" bgcolor="#FFFFFF">時間</td> </tr> <?php $p=new Page('3','3','tb_demo01'); $rs=$p->sel(); while($rst=mysql_fetch_row($rs)){ ?> <tr> <td style="padding-left:3px; padding-right:3px; padding-top:3px; padding-bottom:3px;" bgcolor="#FFFFFF"><?php echo $rst[0] ?></td> <td style="padding-left:3px; padding-right:3px; padding-top:3px; padding-bottom:3px;" bgcolor="#FFFFFF"><?php echo $rst[1] ?></td> <td style="padding-left:3px; padding-right:3px; padding-top:3px; padding-bottom:3px;" bgcolor="#FFFFFF"><?php echo $rst[2] ?></td> <td style="padding-left:3px; padding-right:3px; padding-top:3px; padding-bottom:3px;" bgcolor="#FFFFFF"><?php echo $rst[3] ?></td> </tr> <?php }?> </table> <?php echo $p->myPage(); ?>
二、運行結果