PHP简单漂亮的分页类

2021-06-28 21:06

阅读:545

标签:样式   pager   src   replace   page   cti   function   eric   show   

本文介绍一款原生的PHP分页类,分页样式有点类似bootstrap。

技术分享

  1. php
  2.  
  3. /* * *********************************************
  4.  * @类名:   page
  5.  * @参数:   $myde_total - 总记录数
  6.  *          $myde_size - 一页显示的记录数
  7.  *          $myde_page - 当前页
  8.  *          $myde_url - 获取当前的url
  9.  * @功能:   分页实现
  10.  * @作者:   叶国方
  11.  */
  12.  
  13. class page {
  14.  
  15.     private $myde_total;          //总记录数
  16.     private $myde_size;           //一页显示的记录数
  17.     private $myde_page;           //当前页
  18.     private $myde_page_count;     //总页数
  19.     private $myde_i;              //起头页数
  20.     private $myde_en;             //结尾页数
  21.     private $myde_url;            //获取当前的url
  22.     /*
  23.      * $show_pages
  24.      * 页面显示的格式,显示链接的页数为2*$show_pages+1。
  25.      * 如$show_pages=2那么页面上显示就是[首页] [上页] 1 2 3 4 5 [下页] [尾页] 
  26.      */
  27.     private $show_pages;
  28.  
  29.     public function __construct($myde_total = 1, $myde_size = 1, $myde_page = 1, $myde_url, $show_pages = 2) {
  30.         $this->myde_total = $this->numeric($myde_total);
  31.         $this->myde_size = $this->numeric($myde_size);
  32.         $this->myde_page = $this->numeric($myde_page);
  33.         $this->myde_page_count = ceil($this->myde_total / $this->myde_size);
  34.         $this->myde_url = $myde_url;
  35.         if ($this->myde_total  0)
  •             $this->myde_total = 0;
  •         if ($this->myde_page  1)
  •             $this->myde_page = 1;
  •         if ($this->myde_page_count  1)
  •             $this->myde_page_count = 1;
  •         if ($this->myde_page > $this->myde_page_count)
  •             $this->myde_page = $this->myde_page_count;
  •         $this->limit = ($this->myde_page - 1) * $this->myde_size;
  •         $this->myde_i = $this->myde_page - $show_pages;
  •         $this->myde_en = $this->myde_page + $show_pages;
  •         if ($this->myde_i  1) {
  •             $this->myde_en = $this->myde_en + (1 - $this->myde_i);
  •             $this->myde_i = 1;
  •         }
  •         if ($this->myde_en > $this->myde_page_count) {
  •             $this->myde_i = $this->myde_i - ($this->myde_en - $this->myde_page_count);
  •             $this->myde_en = $this->myde_page_count;
  •         }
  •         if ($this->myde_i  1)
  •             $this->myde_i = 1;
  •     }
  •  
  •     //检测是否为数字
  •     private function numeric($num) {
  •         if (strlen($num)) {
  •             if (!preg_match("/^[0-9]+$/", $num)) {
  •                 $num = 1;
  •             } else {
  •                 $num = substr($num, 0, 11);
  •             }
  •         } else {
  •             $num = 1;
  •         }
  •         return $num;
  •     }
  •  
  •     //地址替换
  •     private function page_replace($page) {
  •         return str_replace("{page}", $page, $this->myde_url);
  •     }
  •  
  •     //首页
  •     private function myde_home() {
  •         if ($this->myde_page != 1) {
  •             return " . $this->page_replace(1) . "‘ title=‘首页‘>首页";
  •         } else {
  •             return "

    首页

    ";
  •         }
  •     }
  •  
  •     //上一页
  •     private function myde_prev() {
  •         if ($this->myde_page != 1) {
  •             return " . $this->page_replace($this->myde_page - 1) . "‘ title=‘上一页‘>上一页";
  •         } else {
  •             return "

    上一页

    ";
  •         }
  •     }
  •  
  •     //下一页
  •     private function myde_next() {
  •         if ($this->myde_page != $this->myde_page_count) {
  •             return " . $this->page_replace($this->myde_page + 1) . "‘ title=‘下一页‘>下一页";
  •         } else {
  •             return"

    下一页

    ";
  •         }
  •     }
  •  
  •     //尾页
  •     private function myde_last() {
  •         if ($this->myde_page != $this->myde_page_count) {
  •             return " . $this->page_replace($this->myde_page_count) . "‘ title=‘尾页‘>尾页";
  •         } else {
  •             return "

    尾页

    ";
  •         }
  •     }
  •  
  •     //输出
  •     public function myde_write($id = ‘page‘) {
  •         $str = "
     . $id . ">";
  •         $str.=$this->myde_home();
  •         $str.=$this->myde_prev();
  •         if ($this->myde_i > 1) {
  •             $str.="

    ...

    ";
  •         }
  •         for ($i = $this->myde_i; $i  $this->myde_en; $i++) {
  •             if ($i == $this->myde_page) {
  •                 $str.=" . $this->page_replace($i) . "‘ title=‘第" . $i . "页‘ class=‘cur‘>$i";
  •             } else {
  •                 $str.=" . $this->page_replace($i) . "‘ title=‘第" . $i . "页‘>$i";
  •             }
  •         }
  •         if ($this->myde_en  $this->myde_page_count) {
  •             $str.="

    ...

    ";
  •         }
  •         $str.=$this->myde_next();
  •         $str.=$this->myde_last();
  •         $str.="

    " . $this->myde_page_count .

  •                 "页" . $this->myde_total . "条数据";
  •         $str.="
  • ";
  •         return $str;
  •     }
  •  
  • }
  •  
  • ?>
  •  

    PHP简单漂亮的分页类

    标签:样式   pager   src   replace   page   cti   function   eric   show   

    原文地址:http://www.cnblogs.com/gfang/p/7142385.html


    评论


    亲,登录后才可以留言!

    推荐文章

    最新文章

    置顶文章