分页本身很简单,无非就是一个 [limit $offset, $length] 的过程。
$length 是每页显示的数据量,这个是固定的。要确定的就只有 $offset了。
在CI中的分页类同样要依据这个来做,他在选择 offset 依据时有两种可选方式:
(1)在url中填入offset,这个参数可以直接作为从数据库中取数据的 $offset 值
(2)在url中填入当前的页码,$offset = ($cur_page-1) * $length
实质上,两者是一致的。只是计算的方式不同:
(1)limit $offset, $per_page
(2)limit ($cur_page-1) * $per_page, $per_page
理解了这个,CI的分页类就很容易使用了。采用哪种方式是通过该类中下面的这个属性来做的:
var $use_page_numbers = FALSE; // Use page number for segment instead of offset
默认是使用方式(2)。 要使用该类,最重要的还是要清楚我们需要怎样的一个URL,根据该URL要获取哪些信息。
这里以 /controller/method/ 为例子,要在method中分页,应该是要构造这样的URL:
/controller/method/123/4 // 123是数据的id, 4 可以是 (1)$offset 或者 (2)$cur_page
那么。就这样配置分页类的数据(这里采用了默认的方式):
public function method($cat_id = 0, $offset=0) {
$config['base_url'] = base_url('controller/method/' . $cat_id);
$config['total_rows'] = $this->some_model->get_tb_count($cat_id);
$config['per_page'] = 2;
$config['uri_segment'] = 4; // 分页信息在 segment 段中的位置。 这里是 /controller/method/$cat_id/$_page_sg
$this->pagination->initialize($config);$all_data = $this->some_model->get_data_limited($cat_id, $config['per_page'], $offset);
}
上面最后这一句对应的函数应该是这样的:
public function get_data_limited($cat_id=-1, $offset, $length) {
return $this->db
->select('pc.photopicid, pc.title, pc.smallpic, pc.bigpic')
->from('t_photo p')
->join('t_photopic pc', 'pc.photoid=p.photoid', 'inner')
->where(array('p.classid'=>intval($cat_id), 'pc.isclose'=>0))
->limit($offset, $length) //这里取分页数据
->get()
->result_array();
} 要对其进行定制也很容易了。。

CI 分页类的使用的更多相关文章

  1. Ci 分页类的所有属性总结

    //#######################自定义分页 $config['uri_segment'] = 3;//分页方法自动测定你 URI 的哪个部分包含页数 $config['num_lin ...

  2. 一个简单的CI分页类

    [php] view plaincopy <span style="font-size:16px;">/** * * 关于 页码有效性的判断需要加在 控制器中判断,即当 ...

  3. PHP CI分页类带多个参数

    通过修改system中的pagination.php,给每个<a>都增加了class="pagination". view页面 <div class=" ...

  4. Ci 自己的分页类【原创】

    这里是自己手写的一个CI分页类的实现 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); /** ...

  5. 二十八、CI框架之自己写分页类,符合CI的路径规范

    一.参照了CSDN上某个前辈写的一个CI分页类,自己删删改改仿写了一个类似的分页类,代码如下: 二.我们在模型里面写2个数据查询的函数,一个用于查询数据数量,一个用于查询出具体数据 三.我们在控制器里 ...

  6. CI分页,搜索之后翻页不能用问题

     最近在学习用php的CI框架写一个自己的CMS,遇到了些问题.其中一个就是CI分页的时候,我的URL带有其他参数,才能查出我想要的数据.于是我翻遍了谷歌度娘,终于找到了解决办法,和我想的差不多,就贴 ...

  7. ***CI分页:为CodeIgniter写的分页类

    ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ...

  8. 二十七、CI框架之自己写分页类并加载(写分页还是有难度,搞了一整天)

    一.我们写好自己的分页代码,防止library目录中,带构造函数 二.在模型中,添加2个函数,一个是查询数据的条数,第二个是取出数据库中的数据 三.在控制中,写入相应的代码,如下: 四.在界面中,写入 ...

  9. CI框架分页类

    分页类1.分页类参数说明 'base_url' => 指向你的分页所在的控制器类/方法的完整的 URL, 'total_rows' => 数据的总行数, 'per_page' => ...

随机推荐

  1. AngularJS(八):http服务

    本文也同步发表在我的公众号“我的天空” http服务 之前我们的示例都是在本地获取模拟数据,在实际应用中,所有的项目都将不可避免的从后台获取数据,我们都是通过Ajax来实现与服务器的通信.在Angul ...

  2. 1126 数字统计 2010年NOIP全国联赛普及组

    1126 数字统计 2010年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver         题目描述 Description 请统计某个 ...

  3. xampp默认配置拿shell

    xampp默认配置拿shell 首先我们先来科普一下xampp(Apache+MySQL+PHP+PERL)是一个功能强大的建 XAMPP 软件站集成软件包 是一个易于安装且包含 MySQL.PHP ...

  4. 【Python图像特征的音乐序列生成】第一阶段的任务分配

    从即日起到7月20号,项目成员进行了第一次任务分配. 赵同学A.岳同学.周同学,负责了图像数据的情感数据集制作,他们根据自己的经验,对图像进行了情绪提取. 赵同学B全权负责向量映射这一块的网络搭建. ...

  5. CAD控件的鼠标事件(网页版)

    _DMxDrawXEvents::MouseEvent CAD控件中的鼠标事件. 参数 说明 LONG lType 事件类型,1鼠标移动,2是鼠标左键按下,3是鼠标右键按下,4是鼠标左键双击 5是鼠标 ...

  6. Python 求两个文本文件以行为单位的交集 并集 差集

    Python 求两个文本文件以行为单位的交集 并集 差集,来代码: s1 = set(open('a.txt','r').readlines()) s2 = set(open('b.txt','r') ...

  7. Java中的ArrayList类和LinkedList

    集合的体系: ----------| Collection 单列集合的根接口----------------| List 如果实现了List接口的集合类,具备的特点: 有序,可重复.--------- ...

  8. js中替换字符串

    function formatStr(str){ str=str.replace(/\r\n/ig,"<br/>"); return str; } 要注意两点: 要使用 ...

  9. Nginx正向代理代理http和https服务

    Nginx正向代理代理http和https服务 1. 背景需求 通过Nginx正向代理,去访问外网.可实现局域网不能访问外网的能力,以及防止在上网行为上,留下访问痕迹. 2. 安装配置 2.1安装 w ...

  10. Postgres-XL的限制

    Postgres-XL是基于PostgreSQL的一个分布式数据库. 相比于PostgreSQL,XL的表的数据是可以分布到不同的datanode上的,对存在于不同的datanode上的数据进行处理, ...