一个简单的CI分页类

  1. <span style="font-size:16px;">/** 
  2.  *  
  3.  * 关于 页码有效性的判断需要加在 控制器中判断,即当页码数<1或者>总页数 
  4.  * 
  5.  */  
  6.    
  7. class Custom_pagination  
  8. {  
  9.     var $page_url = ''//分页目标URL  
  10.     var $page_size = 10; //每一页行数  
  11.     var $page_num = 1;//页码  
  12.     var $rows_num'';//数据总行数  
  13.     var $links_num= 3;//选中链接前后的链接数,必须大于等于1  
  14.   
  15.     var $anchor_class'';//链接样式类  
  16.     var $current_class'';//当前页样式类  
  17.     var $full_tag_open'';//分页开始标签  
  18.     var $full_tag_close'';//分页结束标签  
  19.     var $info_tag_open'';  
  20.     var $info_tag_close' ';  
  21.     var $first_tag_open'';  
  22.     var $first_tag_close' ';  
  23.     var $last_tag_open' ';  
  24.     var $last_tag_close'';  
  25.     var $cur_tag_open' <strong>';  
  26.     var $cur_tag_close'</strong>';  
  27.     var $next_tag_open' ';  
  28.     var $next_tag_close' ';  
  29.     var $prev_tag_open' ';  
  30.     var $prev_tag_close'';  
  31.     var $num_tag_open' ';  
  32.     var $num_tag_close'';  
  33.   
  34.     public function __construct($params = array())  
  35.     {  
  36.         if (count($params) > 0)  
  37.         {  
  38.             $this->init($params);  
  39.         }  
  40.     }  
  41.    
  42.     function init($params = array()) //初始化数据  
  43.     {  
  44.         if (count($params) > 0)  
  45.         {  
  46.             foreach ($params as $key => $val)  
  47.             {  
  48.                 if (isset($this->$key))  
  49.                 {  
  50.                     $this->$key = $val;  
  51.                 }  
  52.             }  
  53.         }  
  54.     }  
  55.    
  56.     function create_links()  
  57.     {  
  58.         ///////////////////////////////////////////////////////  
  59.         //准备数据  
  60.         ///////////////////////////////////////////////////////  
  61.         $page_url = $this->page_url;  
  62.         $rows_num = $this->rows_num;  
  63.         $page_size = $this->page_size;  
  64.         $links_num = $this->links_num;  
  65.   
  66.         if ($rows_num == 0 OR $page_size == 0)  
  67.         {  
  68.             return '';  
  69.         }  
  70.   
  71.         $pages = intval($rows_num/$page_size);  
  72.         if ($rows_num % $page_size)  
  73.         {  
  74.             //有余数pages+1  
  75.             $pages++;  
  76.         };  
  77.         $page_num = $this->page_num < 1 ? '1' : $this->page_num;  
  78.   
  79.         $anchor_class = '';  
  80.         if($this->anchor_class !== '')  
  81.         {  
  82.             $anchor_class = 'class="'.$this->anchor_class.'" ';  
  83.         }  
  84.   
  85.         $current_class = '';  
  86.         if($this->current_class !== '')  
  87.         {  
  88.             $current_class = 'class="'.$this->current_class.'" ';  
  89.         }  
  90.         if($pages == 1)  
  91.         {  
  92.             return '';  
  93.         }  
  94.         if($links_num < 0)  
  95.         {  
  96.             return '- -!links_num必须大于等于0';  
  97.         }  
  98.         ////////////////////////////////////////////////////////  
  99.         //创建链接开始  
  100.         ////////////////////////////////////////////////////////  
  101.         $output = $this->full_tag_open;  
  102.         $output .= $this->info_tag_open.'共'.$rows_num.'条数据  第 '.$page_num.'/'.$pages.' 页'.$this->info_tag_close;  
  103.         //首页  
  104.         if($page_num > 1)  
  105.         {  
  106.             $output .= $this->first_tag_open.'<a '.$anchor_class.' href="'.site_url($page_url).'" >首页</a>'.$this->first_tag_close;  
  107.         }  
  108.         //上一页  
  109.         if($page_num > 1)  
  110.         {  
  111.             $n = $page_num - 1;  
  112.             $output .= $this->prev_tag_open.'<a '.$anchor_class.' href="'.site_url($page_url.'/'.$n).'" >上一页</a>'.$this->prev_tag_close;  
  113.         }  
  114.         //pages  
  115.         for($i=1;$i<=$pages;$i++)  
  116.         {  
  117.             $pl = $page_num - $links_num < 0 ? 0 : $page_num - $links_num;  
  118.             $pr = $page_num + $links_num > $pages ? $pages : $page_num + $links_num;  
  119.             //判断链接个数是否太少,举例,假设links_num = 2,则链接个数不可少于 5 个,主要是 当page_num 等于 1, 2 和 n,n-1的时候  
  120.             if($pr < 2 * $links_num + 1)  
  121.             {  
  122.                 $pr = 2 * $links_num + 1;  
  123.             }  
  124.             if($pl > $pages-2 * $links_num)  
  125.             {  
  126.                 $pl = $pages - 2 * $links_num;  
  127.             }  
  128.             if($i == $page_num)  
  129.             {   //current page  
  130.                 $output .= $this->cur_tag_open.'<span '.$current_class.' >'.$i.'</span>'.$this->cur_tag_close;  
  131.             }else if($i >= $pl && $i <= $pr)  
  132.             {  
  133.                 $output .= $this->num_tag_open.'<a '.$anchor_class.' href="'.site_url($page_url.'/'.$i).'" >'.$i.'</a>'.$this->num_tag_close;  
  134.             }  
  135.         }  
  136.         //下一页  
  137.         if($page_num < $pages)  
  138.         {  
  139.             $n = $page_num + 1;  
  140.             $output .= $this->next_tag_open.'<a '.$anchor_class.' href="'.site_url($page_url.'/'.$n).'" >下一页</a>'.$this->next_tag_close;  
  141.         }  
  142.         //末页  
  143.         if($page_num < $pages)  
  144.         {  
  145.             $output .= $this->last_tag_open.'<a '.$anchor_class.' href="'.site_url($page_url.'/'.$pages).'" >末页</a>'.$this->last_tag_close;  
  146.         }  
  147.   
  148.         $output.=$this->full_tag_close;  
  149.         return $output;  
  150.     }  
  151.   
  152.   
  153.   
  154. }  
  155.   
  156. </span>  
控制器里调用
  1. <span style="font-size:16px;">$config['page_url']  
  2. 'about/science';  
  3. $config['page_size'] = $pagesize;  
  4. $config['rows_num'] = $num_rows;  
  5. $config['page_num'] = $page;  
  6.    
  7.    
  8. $this->load->library('Custom_pagination');  
  9. $this->custom_pagination->init($config);  
  10. echo $this->custom_pagination->create_links();</span>  




  1. <?php  
  2. class page{  
  3.       
  4.     public $page//当前页  
  5.     public $pagenum;  // 页数  
  6.     public $pagesize;  // 每页显示条数  
  7.     public function __construct($count$pagesize){  
  8.         $this->pagenum = ceil($count/$pagesize);  
  9.         $this->pagesize = $pagesize;  
  10.         $this->page =(isset($_GET['p'])&&$_GET['p']>0) ? intval($_GET['p']) : 1;  
  11.     }  
  12.     /** 
  13.      * 获得 url 后面GET传递的参数 
  14.      */   
  15.     public function getUrl(){     
  16.         $url = 'index.php?'.http_build_query($_GET);  
  17.         $url = preg_replace('/[?,&]p=(w)+/','',$url);  
  18.         $url .= (strpos($url,"?") === false) ? '?' : '&';  
  19.         return $url;  
  20.     }  
  21.     /** 
  22.      * 获得分页HTML 
  23.      */  
  24.     public function getPage(){  
  25.         $url = $this->getUrl();  
  26.         $start = $this->page-5;  
  27.         $start=$start>0 ? $start : 1;   
  28.         $end   = $start+9;  
  29.         $end = $end<$this->pagenum ? $end : $this->pagenum;  
  30.         $pagestr = '';  
  31.         if($this->page>5){  
  32.             $pagestr = "<a href=".$url."p=1".">首页</a> ";  
  33.         }  
  34.         if($this->page!=1){  
  35.             $pagestr.= "<a href=".$url."p=".($this->page-1).">上一页</a>";  
  36.         }  
  37.           
  38.         for($i=$start;$i<=$end;$i++){  
  39.             $pagestr.= "<a href=".$url."p=".$i.">".$i."</a>  ";                       
  40.         }  
  41.         if($this->page!=$this->pagenum){  
  42.             $pagestr.="<a href=".$url."p=".($this->page+1).">下一页</a>";  
  43.               
  44.         }  
  45.         if($this->page+5<$this->pagenum){  
  46.             $pagestr.="<a href=".$url."p=".$this->pagenum.">尾页</a> ";  
  47.         }  
  48.         return $pagestr;      
  49.     }  
  50.       
  51. }  
  52. // 测试代码  
  53. $page = new page(100,10);  
  54. $str=$page->getPage();  
  55. echo $str;  
  56.   
  57.   
  58. ?>  

原文地址:https://www.cnblogs.com/moqiang02/p/4061261.html