设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 数据 创业者 手机
当前位置: 首页 > 站长学院 > PHP教程 > 正文

CI框架分页类用法指什么,具体实例是怎样

发布时间:2022-12-01 08:46 所属栏目:121 来源:互联网
导读:本篇内容介绍了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;
  ?>

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读