分享一下我的分页类
本帖最后由 昨夜渡轮 于 2011-1-17 22:47 编辑CI自带的分页类我不喜欢用于是我写了一个分页类,高手不要笑话我哈:loveliness:
如果配置了$config['url_suffix'] = ".html";
地址是这样的:http://localhost/article/index/page_8.html
反之地址是:http://localhost/article/index/page_8
代码如下:
<?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 : intval($item);
$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(总数据量, 每个页页显示数);
地址是自动获取的当前页看代码就知道了:) 是否用了路由?如果有路由要用 rsegment();
具体请看手册。 是否用了路由?如果有路由要用 rsegment();
具体请看手册。
Hex 发表于 2011-1-17 19:25 http://codeigniter.org.cn/forums/images/common/back.gif
Hex老大就是及时啊,不过为什么放在控制器里segment()能收到数据,放到类里就不能用了呢? rsegment();
怎么用我的出错了 要仔细看手册。。。。。。。。。。
http://codeigniter.org.cn/user_guide/libraries/uri.html 呵呵解决了,是我的失误不好意轏,我多写了句代码 又打一个标签 支持一下 不错 支持一下
页:
[1]