• 技术文章 >后端开发 >php教程

    php显示页码分页类的封装图文详解

    墨辰丷墨辰丷2018-05-21 17:47:25原创685
    这篇文章主要为大家详细介绍了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(); 
    ?>

    二、运行结果

    相关推荐:

    PHP分页类的定义与用法详解

    实例详解php分页类

    TP5-分页类中的each函数

    以上就是php显示页码分页类的封装图文详解的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php 图文 封装
    上一篇:ThinkPhp缓存原理及使用详解 下一篇:PHP使用PHPExcel实现批量上传到数据库
    千万级数据并发解决方案

    相关文章推荐

    • asp转换成php如何转换• 程序修改有关问题• php编码轨范,求高手们帮忙给些意见• 欧拉回路的使用&&http://acm.hdu.edu.cn/showproblem.php?pid=3018• 关于PHP中获取随绝密码的疑问
    1/1

    PHP中文网