php查询后条件不消失,thinkphp中分页保持查询条件不变的问题

手册中:

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?

回复讨论(解决方案)

仅仅urlencode还不够,还要先json或者serialize

foreach($map as $key=>$val) { $Page->parameter .= "$key=".urlencode(json_encode($val)).'&';}

改成这样还是不行啊!

你的$array 哪里来的 $_GET $_POST 还是 $_REQUEST

我这里的$array 是用$_POST里的一个参数为条件到数据库中的一个表里查询出一个字段值的数组。

这个问题我也遇到了,并且找到了解决的方法了

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();//分页显示输出

这里添加了一个判断就实现了

你的数组内容是:

$map['code'] = array('in',$array);

但是查询条件却是:

"$key=".urlencode($val).'&'

这样当然不行

上面这个还是不行

foreach($map as $key=>$val) {

$Page->parameter .= "$key=".urlencode($val).'&';

echo "$key=".urlencode($val)."&"; //输出来看看不就行了吗

}

我找解决的方法了

//分页跳转的时候保证查询条件

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).'&';

}

你就不能在 foreach($map as $key=>$val) {

之前看一下 $map 吗(print_r($map))

知道数据时如何保存的,不也就知道该怎么做了吗?

//查询

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,你看下吧

多谢各位,但是还是不行的。

我又仔细的看了一下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这些条件的。

请问楼主你是怎么解决的呢

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值