zoukankan      html  css  js  c++  java
  • 一个简单的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. ?>  

  • 相关阅读:
    easyui改变tab标题
    java获取request中的参数、java解析URL问号后的参数
    java生成word文档
    jquery即时获取上传文件input file文件名
    微信公众号开发(三)
    Linux中文乱码 更改Linux字符集
    微信公众号开发(五)
    NSCache
    MIT神技术绘制用户界面至任意物体
    导弹工厂到摩托车间:制造业如何应用大数据
  • 原文地址:https://www.cnblogs.com/moqiang02/p/4061261.html
Copyright © 2011-2022 走看看