用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3943|回复: 8
收起左侧

分享一下我的分页类

[复制链接]
发表于 2011-1-17 19:04:28 | 显示全部楼层 |阅读模式
本帖最后由 昨夜渡轮 于 2011-1-17 22:47 编辑

CI自带的分页类我不喜欢用于是我写了一个分页类,高手不要笑话我哈
如果配置了$config['url_suffix'] = ".html";
地址是这样的:http://localhost/article/index/page_8.html
反之地址是:http://localhost/article/index/page_8

代码如下:
PHP复制代码
 
<?php
class Pager {
 var $pageurl = ''; //输出地址
 var $pagetag = 3; //偏移数
 var $pageall = 0; //总数据
 var $pagenum = 0; //总分页
 var $pagecur = 1; //当前页
 var $pageper = 0; //每页数
 var $pagearr = array();//用来构造分页的数组
 /**
 * 分页函数
 * @return page(数据总数, 每页显示数, 当前页数, 翻页地址)
 */

 function page($pageall,$pageper)
 {
  $CI =& get_instance();
  $CI->load->helper('url');
  $this->pageall = $pageall;
  $this->pageper = $pageper;
  $this->pagenum = ceil($this->pageall/$this->pageper);
  $this->pagenum = ($this->pagenum == 0) ? 1 : $this->pagenum; //数据库记录为0时总页数为1反之不变
  //取得当前页
  $item = explode('_', $CI->uri->rsegment(3, 0));
  $this->pagecur = empty($item[1]) ? 1 : intval($item[1]);
  $pageprev = site_url($CI->uri->rsegment(1, 0).'/'.$CI->uri->rsegment(2, 0).'/page_'.($this->pagecur-1)); //上页
  $pagenext = site_url($CI->uri->rsegment(1, 0).'/'.$CI->uri->rsegment(2, 0).'/page_'.($this->pagecur+1)); //下页
  $pagefirst = site_url($CI->uri->rsegment(1, 0).'/'.$CI->uri->rsegment(2, 0).'/page_1'); //首页
  $pagelast =  site_url($CI->uri->rsegment(1, 0).'/'.$CI->uri->rsegment(2, 0).'/page_'.$this->pagenum); //尾页
  if($this->pagecur > 1)
  {
   $this->pageurl .= '<a href="'.$pagefirst.'"> [首页] </a>';
   $this->pageurl .= '<a href="'.$pageprev.'"> [上页] </a>';
  }else{
   $this->pageurl .= ' [首页] ';
   $this->pageurl .= ' [上页] ';
  }
  if($this->pagecur < $this->pagenum)
  {
   $this->pageurl .= '<a href="'.$pagenext.'"> [下页] </a>';
   $this->pageurl .= '<a href="'.$pagelast.'"> [尾页] </a>';
  }else{
   $this->pageurl .= ' [下页] ';
   $this->pageurl .= ' [尾页] ';
  }
  if($this->pagenum <= 1)
  {
   $this->pageurl = '';
  }
  return $this->pageurl;
 }
}
?>
 
复制代码


使用方法:
$this->load->library('pager');
echo $this->pager->page(总数据量, 每个页页显示数);

地址是自动获取的当前页看代码就知道了:)
发表于 2011-1-17 19:25:33 | 显示全部楼层
是否用了路由?如果有路由要用 rsegment();
具体请看手册。
 楼主| 发表于 2011-1-17 19:31:13 | 显示全部楼层
是否用了路由?如果有路由要用 rsegment();
具体请看手册。
Hex 发表于 2011-1-17 19:25



Hex老大就是及时啊,不过为什么放在控制器里segment()能收到数据,放到类里就不能用了呢?
 楼主| 发表于 2011-1-17 19:49:04 | 显示全部楼层
rsegment();
怎么用我的出错了
发表于 2011-1-17 20:14:08 | 显示全部楼层
要仔细看手册。。。。。。。。。。
http://codeigniter.org.cn/user_guide/libraries/uri.html
 楼主| 发表于 2011-1-17 20:42:39 | 显示全部楼层
呵呵解决了,是我的失误不好意轏,我多写了句代码
发表于 2011-2-5 00:09:41 | 显示全部楼层
又打一个标签
发表于 2012-4-14 20:08:30 | 显示全部楼层
支持一下
发表于 2012-4-25 22:42:48 | 显示全部楼层
不错 支持一下

本版积分规则