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

[中级] Codeigniter按条件查询以后进行分页的问题

[复制链接]
发表于 2011-4-29 12:20:22 | 显示全部楼层 |阅读模式
本帖最后由 sunxch100 于 2011-4-29 12:22 编辑

看论坛很多朋友说CI带条件分页很麻烦,这里贴出我的一点总结,来自我做的实际项目中,希望对你有帮助。


在CI框架中,如果根据条件查询一些结果,并且对结果进行分页,如果点击下一页,可能会导致下一页显示的就是不是符合条件的结果集了,而


只是显示全部的结果,就像没有按条件显示一样。


可以这样处理这个问题:

$config['base_url'] = 'http://example.com/index.php/test/page/';

这里有个base_url,关键就在这里

当分页以后,鼠标移到分页连接上,会看到这样的超链接:

http://example.com/index.php/test/page/2

这里会自动给加上偏移量,这里是2。

再进一步,如果到查询条件,例如

http://example.com/index.php/test/page/aUser/admin/2

这里'aUser'和'admin'是查询条件,2是偏移量

那么可以在配置base_url的时候这样写

$config['base_url'] ="
http://example.com/index.php/test/page/$username/$type";

当然了page方法也必须要接受参数

function page($username,$type){}

这样的话,就可以每次根据条件显示结果了。

至于参数何来,在首次生成base_url的时候,那些参数就带上了,生成的分页链接也自然是:

http://example.com/index.php/test/page/aUser/admin/2

这样在点击的时候也会自动将搜索的关键字传递到方法中去。

希望对你有所帮助,呵呵。





发表于 2011-5-6 21:54:22 | 显示全部楼层
好,收藏,我做实验测试一下
发表于 2011-10-17 22:35:44 | 显示全部楼层
您好,您的意思我大概明白。是用查询参数,事先占住参数的位置,这样取偏移量时,就可以固定取(如您例子所示)第五个了。。。
想问您,如果不查询只翻页(查询参数没有值)的话,是不是得有个默认的值来占位?比如如果没有查询,是不是翻页的链接应该是:http://example.com/index.php/test/page/null/null/offset ?
发表于 2011-10-20 12:16:45 | 显示全部楼层
本帖最后由 sunboat 于 2011-10-20 12:18 编辑

我是把page的segment设置成4. segment(3)是查询条件。3是把条件数组json后再base64_encode.
当然,URL允许的字符里要加上=号才行。

类似 http://localhost/index.php/controller/action/a3kjasdl3jfklkj39lkj=/page
发表于 2011-10-25 11:31:32 | 显示全部楼层
楼上比我的想法好,至少省的算最后一个参数是第几个了。。。而且可以不用什么默认值占位。。。就是如果路径的字符数是不是有限的?如果是的话,超了可能不太好吧?
发表于 2011-11-17 21:33:50 | 显示全部楼层
用get传参就行啦
发表于 2012-5-16 16:43:40 | 显示全部楼层
感谢楼主,非常棒
发表于 2013-2-23 11:01:24 | 显示全部楼层
Mark 先研究下

本版积分规则