CI框架简单分页类用法示例
发布:smiling 来源: PHP粉丝网 添加日期:2022-03-13 11:04:10 浏览: 评论:0
本文实例讲述了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;
- }
- }
- /**
- *
- * 关于 页码有效性的判断需要加在 控制器中判断,即当页码数<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;
- ?>
Tags: CI框架分页类
- 上一篇:Laravel 修改验证异常的响应格式实例代码详解
- 下一篇:最后一页
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)