php封装一个显示页码的分页类

一 代码

conn.php
Python代码  收藏代码
  1. <?php  
  2.     class Mysql{  
  3.         public function __construct(){  
  4.             $this->connect();  
  5.         }  
  6.         public function connect(){  
  7.             $conn=mysql_pconnect('localhost','root','root') or die("Connect MySQL False");  
  8.             mysql_select_db('db_database20',$conn) or die("Connect DB False");  
  9.             mysql_query("SET NAMES utf8");  
  10.         }  
  11.     }  
  12. ?>  
 
index.php
Php代码  收藏代码
  1. <link rel="stylesheet" type="text/css" href="css/style.css">  
  2. <?php  
  3.     include_once("conn.php");//包含conn.php文件  
  4.     class Page extends Mysql{//创建Page类并继承Mysql类  
  5.       private $pagesize;//每页显示的记录数  
  6.       private $page;//当前是第几页  
  7.       private $pages;//总页数  
  8.       private $total;//查询的总记录数  
  9.       private $pagelen;//显示的页码数  
  10.       private $pageoffset;//页码的偏移量  
  11.       private $table;//欲查询的表名  
  12.       function __construct($pagesize,$pagelen,$table){  
  13.         if($_GET['page']=="" || $_GET['page']<0){//判断地址栏参数page是否有值  
  14.           $this->page=1;//当前页定义为1  
  15.         }else{  
  16.           $this->page=$_GET['page'];//当前页为地址栏参数的值  
  17.         }  
  18.         $this->pagesize=$pagesize;  
  19.         $this->pagelen=$pagelen;  
  20.         $this->table=$table;  
  21.         new Mysql();//实例化Mysql类  
  22.         $sql=mysql_query("select * from $this->table");//查询表中的记录  
  23.         $this->total=mysql_num_rows($sql);//获得查询的总记录数  
  24.         $this->pages=ceil($this->total/$this->pagesize);//计算总页数  
  25.         $this->pageoffset=($this->pagelen-1)/2;//计算页码偏移量  
  26.       }  
  27.       function sel(){  
  28.         $sql=mysql_query("select * from $this->table limit ".($this->page-1)*$this->pagesize.",".$this->pagesize);//查询当前页显示的记录  
  29.         return $sql;//返回查询结果  
  30.       }  
  31.       function myPage(){  
  32.         $message="第".$this->page."页/共".$this->pages."页&nbsp;&nbsp;&nbsp;";//输出当前第几页,共几页  
  33.         if($this->page==1){//如果当前页是1  
  34.           $message.="首页&nbsp;上一页&nbsp;&nbsp;&nbsp;";//输出没有链接的文字  
  35.         }else{  
  36.           $message.="<a href='".$_SERVER['PHP_SELF']."?page=1'>首页</a>&nbsp;";//输出有链接的文字  
  37.           $message.="<a href='".$_SERVER['PHP_SELF']."?page=".($this->page-1)."'>上一页</a>&nbsp;&nbsp;";//输出有链接的文字  
  38.         }  
  39.         if($this->page<=$this->pageoffset){//如果当前页小于页码的偏移量  
  40.           $minpage=1;//显示的最小页数为1  
  41.           $maxpage=$this->pagelen;//显示的最大页数为页码的值  
  42.         }elseif($this->page>$this->pages-$this->pageoffset){//如果当前页大于总页数减去页码的偏移量  
  43.           $minpage=$this->pages-$this->pagelen+1;//显示的最小页数为总页数减去页码数再加上1  
  44.           $maxpage=$this->pages;//显示的最大页数为总页数  
  45.         }else{  
  46.           $minpage=$this->page-$this->pageoffset;//显示的最小页数为当前页数减去页码的偏移量  
  47.           $maxpage=$this->page+$this->pageoffset;//显示的最大页数为当前页数加上页码的偏移量  
  48.         }  
  49.         for($i=$minpage;$i<=$maxpage;$i++){//循环输出数字页码数  
  50.           if($i==$this->page){  
  51.             $message.=$i."\n";//输出没有链接的数字  
  52.           }else{  
  53.             $message.="<a id='num' href='".$_SERVER['PHP_SELF']."?page=".$i."'>".$i."</a>\n";//输出有链接的数字  
  54.           }  
  55.         }  
  56.         if($this->page==$this->pages){//如果当前页等于最大页数  
  57.           $message.="&nbsp;&nbsp;下一页&nbsp;尾页";//显示没有链接的文字  
  58.         }else{  
  59.           $message.="&nbsp;&nbsp;<a href='".$_SERVER['PHP_SELF']."?page=".($this->page+1)."'>下一页</a>&nbsp;";//显示有链接的文字  
  60.           $message.="<a href='".$_SERVER['PHP_SELF']."?page=".$this->pages."'>尾页</a>";//显示有链接的文字  
  61.         }  
  62.         return $message;//返回变量的值  
  63.       }  
  64.     }  
  65. ?>  
  66. <table border="1" cellpadding="1" cellspacing="1" bordercolor="#FFFFFF" bgcolor="#FF0000">  
  67.   <tr>  
  68.     <td style="padding-left:3px; padding-right:3px; padding-top:3px; padding-bottom:3px;" bgcolor="#FFFFFF">ID:</td>  
  69.     <td style="padding-left:3px; padding-right:3px; padding-top:3px; padding-bottom:3px;" bgcolor="#FFFFFF">标题</td>  
  70.     <td style="padding-left:3px; padding-right:3px; padding-top:3px; padding-bottom:3px;" bgcolor="#FFFFFF">内容</td>  
  71.     <td style="padding-left:3px; padding-right:3px; padding-top:3px; padding-bottom:3px;" bgcolor="#FFFFFF">时间</td>  
  72.   </tr>  
  73. <?php  
  74.     $p=new Page('3','3','tb_demo01');  
  75.     $rs=$p->sel();  
  76.     while($rst=mysql_fetch_row($rs)){  
  77. ?>  
  78.   <tr>  
  79.     <td style="padding-left:3px; padding-right:3px; padding-top:3px; padding-bottom:3px;" bgcolor="#FFFFFF"><?php echo $rst[0] ?></td>  
  80.     <td style="padding-left:3px; padding-right:3px; padding-top:3px; padding-bottom:3px;" bgcolor="#FFFFFF"><?php echo $rst[1] ?></td>  
  81.     <td style="padding-left:3px; padding-right:3px; padding-top:3px; padding-bottom:3px;" bgcolor="#FFFFFF"><?php echo $rst[2] ?></td>  
  82.     <td style="padding-left:3px; padding-right:3px; padding-top:3px; padding-bottom:3px;" bgcolor="#FFFFFF"><?php echo $rst[3] ?></td>  
  83.   </tr>  
  84. <?php }?>  
  85. </table>  
  86. <?php  
  87.     echo $p->myPage();  
  88. ?>  
 
二 运行结果

posted @ 2017-06-06 11:58  天涯海角路  阅读(300)  评论(0)    收藏  举报