A-A+

PHP实现简单实用的分页类代码

2019年10月13日 我爱编程 暂无评论

本文实例讲述了PHP实现简单实用的分页类。分享给大家供大家参考,具体如下:

  1. <?php
  2.   class Page {
  3.      private $total;   //总记录
  4.      private $pagesize;  //每页显示多少条
  5.      private $limit;     //limit
  6.      private $page;      //当前页码
  7.      private $pagenum;   //总页码
  8.      private $url;      //地址
  9.      private $bothnum;   //两边保持数字分页的量
  10.    //构造方法初始化
  11.    public function __construct($_total$_pagesize) {
  12.      $this->total = $_total ? $_total : 1;
  13.      $this->pagesize = $_pagesize;
  14.      $this->pagenum = ceil($this->total / $this->pagesize);
  15.      $this->page = $this->setPage();
  16.      $this->limit = "LIMIT ".($this->page-1)*$this->pagesize.",$this->pagesize";
  17.      $this->url = $this->setUrl();
  18.      $this->bothnum = 2;
  19.    }
  20.    //拦截器
  21.    private function __get($_key) {
  22.      return $this->$_key;
  23.    }
  24.    //获取当前页码
  25.    private function setPage() {
  26.      if (!emptyempty($_GET['page'])) {
  27.         if ($_GET['page'] > 0) {
  28.           if ($_GET['page'] > $this->pagenum) {
  29.              return $this->pagenum;
  30.           } else {
  31.              return $_GET['page'];
  32.           }
  33.         } else {
  34.           return 1;
  35.         }
  36.      } else {
  37.         return 1;
  38.      }
  39.    }
  40.    //获取地址
  41.    private function setUrl() {
  42.      $_url = $_SERVER["REQUEST_URI"];
  43.      $_par = parse_url($_url);
  44.      if (isset($_par['query'])) {
  45.         parse_str($_par['query'],$_query);
  46.         unset($_query['page']);
  47.         $_url = $_par['path'].'?'.http_build_query($_query);
  48.      }
  49.      return $_url;
  50.    }   //数字目录
  51.    private function pageList() {
  52.      for ($i=$this->bothnum;$i>=1;$i--) {
  53.       $_page = $this->page-$i;
  54.       if ($_page < 1) continue;
  55.         $_pagelist .= ' <a href="'.$this->url.'&page='.$_page.'">'.$_page.'</a> ';
  56.      }
  57.      $_pagelist .= ' <span class="me">'.$this->page.'</span> ';
  58.      for ($i=1;$i<=$this->bothnum;$i++) {
  59.       $_page = $this->page+$i;
  60.         if ($_page > $this->pagenum) break;
  61.         $_pagelist .= ' <a href="'.$this->url.'&page='.$_page.'">'.$_page.'</a> ';
  62.      }
  63.      return $_pagelist;
  64.    }
  65.    //首页
  66.    private function first() {
  67.      if ($this->page > $this->bothnum+1) {
  68.         return ' <a href="'.$this->url.'">1</a> ...';
  69.      }
  70.    }
  71.    //上一页
  72.    private function prev() {
  73.      if ($this->page == 1) {
  74.         return '<span class="disabled">上一页</span>';
  75.      }
  76.      return ' <a href="'.$this->url.'&page='.($this->page-1).'">上一页</a> ';
  77.    }
  78.    //下一页
  79.    private function next() {
  80.      if ($this->page == $this->pagenum) {
  81.         return '<span class="disabled">下一页</span>';
  82.      }
  83.      return ' <a href="'.$this->url.'&page='.($this->page+1).'">下一页</a> ';
  84.    }
  85.    //尾页
  86.    private function last() {
  87.      if ($this->pagenum - $this->page > $this->bothnum) {
  88.         return ' ...<a href="'.$this->url.'&page='.$this->pagenum.'">'.$this->pagenum.'</a> ';
  89.      }
  90.    }
  91.    //分页信息
  92.    public function showpage() {
  93.      $_page .= $this->first();
  94.      $_page .= $this->pageList();
  95.      $_page .= $this->last();
  96.      $_page .= $this->prev();
  97.      $_page .= $this->next();
  98.      return $_page;
  99.    }
  100.  }
  101. ?>

使用说明:

  1. <?php
  2.   $_page = new Page($_total,$_pagesize);
  3.   //其中 $_total 是数据集的总条数,$_pagesize 是每页显示的数量.
  4. ?>
标签:

给我留言

Copyright © 四季博客 保留所有权利.   Theme  Ality

用户登录