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

搜索后分页---已解决,可以按照15L的方法

[复制链接]
发表于 2013-7-8 13:15:56 | 显示全部楼层 |阅读模式
本帖最后由 流浪的乞丐 于 2013-7-16 11:22 编辑

我想知道你们搜索后分页的思路。


有没有好心人给说说自己的思路的?
发表于 2013-7-8 17:52:39 | 显示全部楼层
本帖最后由 ppluobo 于 2013-7-8 17:53 编辑
流浪的乞丐 发表于 2013-7-8 17:45
哈哈,先谢谢了。这种方法我之前用过,可行的。 如果最后实在没办法,就采取这个。

翻页后再刷新?不影响查询结果吧,这个跟性能、页面显示什么的也没什么关系。就是代码丑陋,自己偷懒,懒得搞很复杂的方法。
发表于 2013-7-8 14:35:59 | 显示全部楼层
手册上不是有示例了么
发表于 2013-7-8 16:31:35 | 显示全部楼层
{:soso_e127:}搜索后分页跟其他分页有差别么?
你统计一下搜索结果total,规划好每页条数,如pagesize=20,
基本上结果就可以出来了
 楼主| 发表于 2013-7-8 16:45:20 | 显示全部楼层
gogogo1027 发表于 2013-7-8 16:31
搜索后分页跟其他分页有差别么?
你统计一下搜索结果total,规划好每页条数,如pagesize=20,
...

分页后的链接怎么处理?
 楼主| 发表于 2013-7-8 17:07:52 | 显示全部楼层
我很好奇,你们都没有遇到这种问题么?  整个页面是一个列表,列表上有搜索条件,比方说,搜索名字中有字母a的,然后点搜索后,列表里显示的都是名字中包含字母a的数据。

先说说我自己测试遇到的问题。刚开始配置的$config['enable_query_strings']为false,链接都是形如:example.com/blog/index/1/的。blog是控制器,index是方法,后面的1 是一个参数,用户组的参数,这种链接是显示所有用户组id为1的用户信息。

翻页后,链接形如:example.com/blog/index/1/2

问题一:如果我想把翻页后的链接变成形如:example.com/blog/index/1/?pre_page=2    这个时候该怎么设置。我把翻页的配置$config ['page_query_string'] 设置为 TRUE;后,此时的链接变成了:example.com/blog/index/1/&pre_page=2,这个是有问题的。  这个也不重要。

问题二:$config['enable_query_strings']设置为true后,链接形如:example.com?c=blog&m=index的时候,$this->uri->segment()是不是就不能用了?

问题三:比方说,我搜索用户名中包含a的用户,这些用户有很多条,当我点第二页的时候,怎么样把这个条件为a的搜索条件穿过去,用get?还是别的?如果用get,那么怎么样用get,在用get后初始化翻页类的时候,$config ['base_url']改怎么写?


我语文贼差,表达相当有问题,我发现了。



发表于 2013-7-8 17:32:28 | 显示全部楼层
流浪的乞丐 发表于 2013-7-8 16:45
分页后的链接怎么处理?

CI有一个函数直接生成链接的。只要你把参数传进去之后,会自动生成链接
详情http://codeigniter.org.cn/user_guide/libraries/pagination.html
你看看手册吧。
发表于 2013-7-8 17:37:29 | 显示全部楼层
流浪的乞丐 发表于 2013-7-8 17:07
我很好奇,你们都没有遇到这种问题么?  整个页面是一个列表,列表上有搜索条件,比方说,搜索名字中有字母 ...

这个时候,你就要先自定义一个默认的url,比如$url='&page=*';然后再连接进去你查询过后的分页
发表于 2013-7-8 17:42:01 | 显示全部楼层
本帖最后由 ppluobo 于 2013-7-8 17:49 编辑

我在项目中使用了简易的js操作,比较丑陋,供参考

1,页面中的检索表单:
PHP复制代码
 
<?php
$this->load->helper('form');
$attr = array('id'=>'q_form');
echo form_open('user/user_list',$attr);?>
// .... 检索条件的input内容....
 <?php echo form_close(); ?>
// .... 数据显示部分
<?php echo $links; /*$links为分页类生产的链接*/?>
 
<script type="text/javascript">
$(function(){
         $('#example_paginate a').click(function(){
                $('#q_form').attr('action',$(this).attr('href')).submit();
                return false;
        });        
});
</script>
 
复制代码


代码比较丑陋,但实现了不修改CI类库的情况下,传递分页查询条件的问题。

PS:分页类里面确实有传递参数的例子,但是感觉不够实用,<a>链接默认使用get请求,会导致处理一些字符编码等问题,比较麻烦。而且带查询参数的分页一般会有一个用于检索的form表单,所以想到直接使用这个表单提交分页参数。












 楼主| 发表于 2013-7-8 17:45:05 | 显示全部楼层
ppluobo 发表于 2013-7-8 17:42
我在项目中使用了简易的js操作,比较丑陋,供参考

1,页面中的检索表单:

哈哈,先谢谢了。这种方法我之前用过,可行的。 如果最后实在没办法,就采取这个。



我们的测试很BT,翻页后太刷新下,然后.......然后老说是BUG
 楼主| 发表于 2013-7-8 17:45:44 | 显示全部楼层
gogogo1027 发表于 2013-7-8 17:37
这个时候,你就要先自定义一个默认的url,比如$url='&page=*';然后再连接进去你查询过后的分页 ...

能否贴一些代码,thx


本版积分规则