昨夜渡轮 发表于 2011-1-17 19:04:28

分享一下我的分页类

本帖最后由 昨夜渡轮 于 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(总数据量, 每个页页显示数);

地址是自动获取的当前页看代码就知道了:)

Hex 发表于 2011-1-17 19:25:33

是否用了路由?如果有路由要用 rsegment();
具体请看手册。

昨夜渡轮 发表于 2011-1-17 19:31:13

是否用了路由?如果有路由要用 rsegment();
具体请看手册。
Hex 发表于 2011-1-17 19:25 http://codeigniter.org.cn/forums/images/common/back.gif


Hex老大就是及时啊,不过为什么放在控制器里segment()能收到数据,放到类里就不能用了呢?

昨夜渡轮 发表于 2011-1-17 19:49:04

rsegment();
怎么用我的出错了

Hex 发表于 2011-1-17 20:14:08

要仔细看手册。。。。。。。。。。
http://codeigniter.org.cn/user_guide/libraries/uri.html

昨夜渡轮 发表于 2011-1-17 20:42:39

呵呵解决了,是我的失误不好意轏,我多写了句代码

jackbang 发表于 2011-2-5 00:09:41

又打一个标签

平凡的世界 发表于 2012-4-14 20:08:30

支持一下

★♂翼☆ 发表于 2012-4-25 22:42:48

不错 支持一下
页: [1]
查看完整版本: 分享一下我的分页类