• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    CI框架简单分页类用法示例

    本文实例讲述了CI框架简单分页类用法。分享给大家供大家参考,具体如下:

    /** 
     * 
     * 关于 页码有效性的判断需要加在 控制器中判断,即当页码数1或者>总页数 
     * 
     */ 
    class Custom_pagination 
    { 
      var $page_url = ''; //分页目标URL 
      var $page_size = 10; //每一页行数 
      var $page_num = 1;//页码 
      var $rows_num= '';//数据总行数 
      var $links_num= 3;//选中链接前后的链接数,必须大于等于1 
     
      var $anchor_class= '';//链接样式类 
      var $current_class= '';//当前页样式类 
      var $full_tag_open= '';//分页开始标签 
      var $full_tag_close= '';//分页结束标签 
      var $info_tag_open= ''; 
      var $info_tag_close= ' '; 
      var $first_tag_open= ''; 
      var $first_tag_close= ' '; 
      var $last_tag_open= ' '; 
      var $last_tag_close= ''; 
      var $cur_tag_open= ' strong>'; 
      var $cur_tag_close= '/strong>'; 
      var $next_tag_open= ' '; 
      var $next_tag_close= ' '; 
      var $prev_tag_open= ' '; 
      var $prev_tag_close= ''; 
      var $num_tag_open= ' '; 
      var $num_tag_close= ''; 
     
      public function __construct($params = array()) 
      { 
        if (count($params) > 0) 
        { 
          $this->init($params); 
        } 
      } 
      
      function init($params = array()) //初始化数据 
      { 
        if (count($params) > 0) 
        { 
          foreach ($params as $key => $val) 
          { 
            if (isset($this->$key)) 
            { 
              $this->$key = $val; 
            } 
          } 
        } 
      } 
      
      function create_links() 
      { 
        /////////////////////////////////////////////////////// 
        //准备数据 
        /////////////////////////////////////////////////////// 
        $page_url = $this->page_url; 
        $rows_num = $this->rows_num; 
        $page_size = $this->page_size; 
        $links_num = $this->links_num; 
     
        if ($rows_num == 0 OR $page_size == 0) 
        { 
          return ''; 
        } 
     
        $pages = intval($rows_num/$page_size); 
        if ($rows_num % $page_size) 
        { 
          //有余数pages+1 
          $pages++; 
        }; 
        $page_num = $this->page_num  1 ? '1' : $this->page_num; 
     
        $anchor_class = ''; 
        if($this->anchor_class !== '') 
        { 
          $anchor_class = 'class="'.$this->anchor_class.'" '; 
        } 
     
        $current_class = ''; 
        if($this->current_class !== '') 
        { 
          $current_class = 'class="'.$this->current_class.'" '; 
        } 
        if($pages == 1) 
        { 
          return ''; 
        } 
        if($links_num  0) 
        { 
          return '- -!links_num必须大于等于0'; 
        } 
        //////////////////////////////////////////////////////// 
        //创建链接开始 
        //////////////////////////////////////////////////////// 
        $output = $this->full_tag_open; 
        $output .= $this->info_tag_open.'共'.$rows_num.'条数据 第 '.$page_num.'/'.$pages.' 页'.$this->info_tag_close; 
        //首页 
        if($page_num > 1) 
        { 
          $output .= $this->first_tag_open.'a '.$anchor_class.' href="'.site_url($page_url).'" rel="external nofollow" >首页/a>'.$this->first_tag_close; 
        } 
        //上一页 
        if($page_num > 1) 
        { 
          $n = $page_num - 1; 
          $output .= $this->prev_tag_open.'a '.$anchor_class.' href="'.site_url($page_url.'/'.$n).'" rel="external nofollow" rel="external nofollow" >上一页/a>'.$this->prev_tag_close; 
        } 
        //pages 
        for($i=1;$i=$pages;$i++) 
        { 
          $pl = $page_num - $links_num  0 ? 0 : $page_num - $links_num; 
          $pr = $page_num + $links_num > $pages ? $pages : $page_num + $links_num; 
          //判断链接个数是否太少,举例,假设links_num = 2,则链接个数不可少于 5 个,主要是 当page_num 等于 1, 2 和 n,n-1的时候 
          if($pr  2 * $links_num + 1) 
          { 
            $pr = 2 * $links_num + 1; 
          } 
          if($pl > $pages-2 * $links_num) 
          { 
            $pl = $pages - 2 * $links_num; 
          } 
          if($i == $page_num) 
          {  //current page 
            $output .= $this->cur_tag_open.'span '.$current_class.' >'.$i.'/span>'.$this->cur_tag_close; 
          }else if($i >= $pl  $i = $pr) 
          { 
            $output .= $this->num_tag_open.'a '.$anchor_class.' href="'.site_url($page_url.'/'.$i).'" rel="external nofollow" >'.$i.'/a>'.$this->num_tag_close; 
          } 
        } 
        //下一页 
        if($page_num  $pages) 
        { 
          $n = $page_num + 1; 
          $output .= $this->next_tag_open.'a '.$anchor_class.' href="'.site_url($page_url.'/'.$n).'" rel="external nofollow" rel="external nofollow" >下一页/a>'.$this->next_tag_close; 
        } 
        //末页 
        if($page_num  $pages) 
        { 
          $output .= $this->last_tag_open.'a '.$anchor_class.' href="'.site_url($page_url.'/'.$pages).'" rel="external nofollow" >末页/a>'.$this->last_tag_close; 
        } 
     
        $output.=$this->full_tag_close; 
        return $output; 
      } 
    } 
    
    

    控制器里调用

    $config['page_url'] 
    = 'about/science'; 
    $config['page_size'] = $pagesize; 
    $config['rows_num'] = $num_rows; 
    $config['page_num'] = $page; 
    $this->load->library('Custom_pagination'); 
    $this->custom_pagination->init($config); 
    echo $this->custom_pagination->create_links(); 
    
    
    ?php 
    class page{ 
       
      public $page; //当前页 
      public $pagenum; // 页数 
      public $pagesize; // 每页显示条数 
      public function __construct($count, $pagesize){ 
        $this->pagenum = ceil($count/$pagesize); 
        $this->pagesize = $pagesize; 
        $this->page =(isset($_GET['p'])$_GET['p']>0) ? intval($_GET['p']) : 1; 
      } 
      /** 
       * 获得 url 后面GET传递的参数 
       */  
      public function getUrl(){   
        $url = 'index.php?'.http_build_query($_GET); 
        $url = preg_replace('/[?,]p=(\w)+/','',$url); 
        $url .= (strpos($url,"?") === false) ? '?' : ''; 
        return $url; 
      } 
      /** 
       * 获得分页HTML 
       */ 
      public function getPage(){ 
        $url = $this->getUrl(); 
        $start = $this->page-5; 
        $start=$start>0 ? $start : 1;  
        $end  = $start+9; 
        $end = $end$this->pagenum ? $end : $this->pagenum; 
        $pagestr = ''; 
        if($this->page>5){ 
          $pagestr = "a href=".$url." rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" p=1".">首页/a> "; 
        } 
        if($this->page!=1){ 
          $pagestr.= "a href=".$url." rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" p=".($this->page-1).">上一页/a>"; 
        } 
         
        for($i=$start;$i=$end;$i++){ 
          $pagestr.= "a href=".$url." rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" p=".$i.">".$i."/a> ";            
        } 
        if($this->page!=$this->pagenum){ 
          $pagestr.="a href=".$url." rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" p=".($this->page+1).">下一页/a>"; 
           
        } 
        if($this->page+5$this->pagenum){ 
          $pagestr.="a href=".$url." rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" p=".$this->pagenum.">尾页/a> "; 
        } 
        return $pagestr;   
      } 
       
    } 
    // 测试代码 
    $page = new page(100,10); 
    $str=$page->getPage(); 
    echo $str; 
    ?>
    
    

    更多关于CodeIgniter相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《php优秀开发框架总结》、《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《Zend FrameWork框架入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

    希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)
    • CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解
    • Codeigniter(CI)框架分页函数及相关知识
    • PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
    • CodeIgniter分页类pagination使用方法示例
    • codeigniter实现get分页的方法
    • Codeigniter框架实现获取分页数据和总条数的方法
    • codeigniter中测试通过的分页类示例
    上一篇:简单的php购物车代码
    下一篇:php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    CI框架简单分页类用法示例 框架,简单,分页,类,用法,