当前位置:首页 > PHP文摘 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2019-10-08 10:38:29 浏览: 评论:0 

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

  1. <?php 
  2.  
  3.   class Page { 
  4.  
  5.      private $total;   //总记录 
  6.  
  7.      private $pagesize;  //每页显示多少条 
  8.  
  9.      private $limit;     //limit 
  10.  
  11.      private $page;      //当前页码 
  12.  
  13.      private $pagenum;   //总页码 
  14.  
  15.      private $url;      //地址 
  16.  
  17.      private $bothnum;   //两边保持数字分页的量 
  18.  
  19.    //构造方法初始化 
  20.  
  21.    public function __construct($_total$_pagesize) { 
  22.  
  23.      $this->total = $_total ? $_total : 1; 
  24.  
  25.      $this->pagesize = $_pagesize
  26.  
  27.      $this->pagenum = ceil($this->total / $this->pagesize); 
  28.  
  29.      $this->page = $this->setPage(); 
  30.  
  31.      $this->limit = "LIMIT ".($this->page-1)*$this->pagesize.",$this->pagesize"
  32.  
  33.      $this->url = $this->setUrl(); 
  34.  
  35.      $this->bothnum = 2; 
  36.  
  37.    } 
  38.  
  39.    //拦截器 
  40.  
  41.    private function __get($_key) { 
  42.  
  43.      return $this->$_key
  44.  
  45.    } 
  46.  
  47.    //获取当前页码 
  48.  
  49.    private function setPage() { 
  50.  
  51.      if (!emptyempty($_GET['page'])) { 
  52.  
  53.         if ($_GET['page'] > 0) { 
  54.  
  55.           if ($_GET['page'] > $this->pagenum) { 
  56.  
  57.              return $this->pagenum; 
  58.  
  59.           } else { 
  60.  
  61.              return $_GET['page']; 
  62.  
  63.           } 
  64.  
  65.         } else { 
  66.  
  67.           return 1; 
  68.  
  69.         } 
  70.  
  71.      } else { 
  72.  
  73.         return 1; 
  74.  
  75.      } 
  76.  
  77.    } 
  78.  
  79.    //获取地址 
  80.  
  81.    private function setUrl() { 
  82.  
  83.      $_url = $_SERVER["REQUEST_URI"]; 
  84.  
  85.      $_par = parse_url($_url); 
  86.  
  87.      if (isset($_par['query'])) { 
  88.  
  89.         parse_str($_par['query'],$_query); 
  90.  
  91.         unset($_query['page']); 
  92.  
  93.         $_url = $_par['path'].'?'.http_build_query($_query); 
  94.  
  95.      } 
  96.  
  97.      return $_url
  98.  
  99.    }   //数字目录 
  100.  
  101.    private function pageList() { 
  102.  
  103.      for ($i=$this->bothnum;$i>=1;$i--) { 
  104.  
  105.       $_page = $this->page-$i
  106.  
  107.       if ($_page < 1) continue
  108.  
  109.         $_pagelist .= ' <a href="'.$this->url.'&page='.$_page.'">'.$_page.'</a> '
  110.  
  111.      } 
  112.  
  113.      $_pagelist .= ' <span class="me">'.$this->page.'</span> '
  114.  
  115.      for ($i=1;$i<=$this->bothnum;$i++) { 
  116.  
  117.       $_page = $this->page+$i
  118.  
  119.         if ($_page > $this->pagenum) break
  120.  
  121.         $_pagelist .= ' <a href="'.$this->url.'&page='.$_page.'">'.$_page.'</a> '
  122.  
  123.      } 
  124.  
  125.      return $_pagelist
  126.  
  127.    } 
  128.  
  129.    //首页 
  130.  
  131.    private function first() { 
  132.  
  133.      if ($this->page > $this->bothnum+1) { 
  134.  
  135.         return ' <a href="'.$this->url.'">1</a> ...'
  136.  
  137.      } 
  138.  
  139.    } 
  140.  
  141.    //上一页 
  142.  
  143.    private function prev() { 
  144.  
  145.      if ($this->page == 1) { 
  146.  
  147.         return '<span class="disabled">上一页</span>'
  148.  
  149.      } 
  150.  
  151.      return ' <a href="'.$this->url.'&page='.($this->page-1).'">上一页</a> '
  152.  
  153.    } 
  154.  
  155.    //下一页 
  156.  
  157.    private function next() { 
  158.  
  159.      if ($this->page == $this->pagenum) { 
  160.  
  161.         return '<span class="disabled">下一页</span>'
  162.  
  163.      } 
  164.  
  165.      return ' <a href="'.$this->url.'&page='.($this->page+1).'">下一页</a> '
  166.  
  167.    } 
  168.  
  169.    //尾页 
  170.  
  171.    private function last() { 
  172.  
  173.      if ($this->pagenum - $this->page > $this->bothnum) { 
  174.  
  175.         return ' ...<a href="'.$this->url.'&page='.$this->pagenum.'">'.$this->pagenum.'</a> '
  176.  
  177.      } 
  178.  
  179.    } 
  180.  
  181.    //分页信息 
  182.  
  183.    public function showpage() { 
  184.  
  185.      $_page .= $this->first(); 
  186.  
  187.      $_page .= $this->pageList(); 
  188.  
  189.      $_page .= $this->last(); 
  190. //phpfensi.com 
  191.      $_page .= $this->prev(); 
  192.  
  193.      $_page .= $this->next(); 
  194.  
  195.      return $_page
  196.  
  197.    } 
  198.  
  199.  } 
  200.  
  201. ?> 

使用说明:

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

Tags: PHP分页类

分享到: