thinkphp中分页保持查询条件不变的问题

cffall 2013-04-07 12:38:32
手册中:
import('ORG.Util.Page');// 导入分页类
$mapcount = $User->where($map)->count();// 查询满足要求的总记录数
$Page = new Page($count,25);// 实例化分页类 传入总记录数和每页显示的记录数
//分页跳转的时候保证查询条件
foreach($map as $key=>$val) {
$Page->parameter .= "$key=".urlencode($val).'&';
}
$show = $Page->show();// 分页显示输出


这里我的查询条件使用了in
$map['code'] = array('in',$array);
当点第二页时查询条件就不成功。是不是这里不能用in?
...全文
943 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
喵生初现 2014-10-25
  • 打赏
  • 举报
回复
楼主,求解决方法啊
Code_Bleach 2014-09-28
  • 打赏
  • 举报
回复
请问楼主你是怎么解决的呢
cffall 2013-04-15
  • 打赏
  • 举报
回复
多谢各位,但是还是不行的。 我又仔细的看了一下page.class.php的源码,page->show方法中会对page->parameter进行处理。parameter属性支持2种方式传值:字符串和数组。字符串采用var1=val1&var2=val2...的格式。请看源码中的处理:
$url  =  $_SERVER['REQUEST_URI'].(strpos($_SERVER['REQUEST_URI'],'?')?'':"?").$this->parameter;
        $parse = parse_url($url);
        if(isset($parse['query'])) {
            parse_str($parse['query'],$params);
            unset($params[$p]);
            $url   =  $parse['path'].'?'.http_build_query($params);
        }
这样的话的确是处理不了in、like、between这些条件的。
dalu2211 2013-04-13
  • 打赏
  • 举报
回复
//查询 public function search() { $res=D('Info'); $name=$_REQUEST['name']; $sear['name'] = array('like','%'.$name.'%'); import('ORG.Util.Page');// 导入分页类 $count=$res->where($sear)->count();//查询数据条数 $Page=new Page($count,2);//实例化分页函数 //分页跳转的时候保证查询条件 foreach($name as $key=>$val) { $Page->parameter .= "$key=".urlencode($val)."&";//赋值给Page } $show=$Page->show();//分页显示输出 这是我用的查询分页的代码你看下吧,刚才发的那条虽然能查出来但是不符合规则 这是我总结的文档http://blog.sina.com.cn/s/blog_80742e010101acfq.html,你看下吧
xuzuning 2013-04-13
  • 打赏
  • 举报
回复
你就不能在 foreach($map as $key=>$val) { 之前看一下 $map 吗(print_r($map)) 知道数据时如何保存的,不也就知道该怎么做了吗?
dalu2211 2013-04-13
  • 打赏
  • 举报
回复
我找解决的方法了 //分页跳转的时候保证查询条件 foreach($map as $key=>$val) { $Page->parameter .= "$key=".urlencode($val).'&'; } "$key=".urlencode($val).'&';这里面的$val是指的你的条件 你的是$map['code'] = array('in',$array); 那就改成 foreach($map as $key=>$val) { $Page->parameter .= "$key=".urlencode($code).'&'; }
lang11zi 2013-04-12
  • 打赏
  • 举报
回复
foreach($map as $key=>$val) { $Page->parameter .= "$key=".urlencode($val).'&'; echo "$key=".urlencode($val)."&"; //输出来看看不就行了吗 }
dalu2211 2013-04-12
  • 打赏
  • 举报
回复
上面这个还是不行
wu_rual123 2013-04-12
  • 打赏
  • 举报
回复
你的数组内容是: $map['code'] = array('in',$array); 但是查询条件却是: "$key=".urlencode($val).'&' 这样当然不行
dalu2211 2013-04-12
  • 打赏
  • 举报
回复
这个问题我也遇到了,并且找到了解决的方法了 import('ORG.Util.Page');// 导入分页类 $count=$res->where($sear)->count();//查询数据条数 $Page=new Page($count,2);//实例化分页函数 //分页跳转的时候保证查询条件 foreach($sear as $key=>$val) { if(!is_array($val)) { $Page->parameter .= "$key=".urlencode($val)."&";//赋值给Page } } $show=$Page->show();//分页显示输出 这里添加了一个判断就实现了
longxuu 2013-04-07
  • 打赏
  • 举报
回复
仅仅urlencode还不够,还要先json或者serialize
cffall 2013-04-07
  • 打赏
  • 举报
回复
我这里的$array 是用$_POST里的一个参数为条件到数据库中的一个表里查询出一个字段值的数组。
「已注销」 2013-04-07
  • 打赏
  • 举报
回复
你的$array 哪里来的 $_GET $_POST 还是 $_REQUEST
cffall 2013-04-07
  • 打赏
  • 举报
回复
foreach($map as $key=>$val) {
    $Page->parameter   .=   "$key=".urlencode(json_encode($val)).'&';
}
改成这样还是不行啊!

4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧