加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2023-04-17 14:16:21 所属栏目:PHP教程 来源:
导读:本篇内容介绍了“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;
 
?>
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!