Thinkphp中的条件分页

时间:2022-10-27 17:33:31

Thinkphp中的条件分页

最近做一个项目,用的是tp框架,在做查询页面的时候我用的post传递查询条件,但是这时候分页就出问题了,结果的第一页是正确的,但是当点击其他页面的时候发现原来的条件没有了,查询的结果变成了数据库里所有的信息。最后在网上找了很久,也被坑了很多次,最后总算解决了这个问题,下面说一下解决方法。这里只说关键代码,重要的是思路
首先要把条件保存到分页的对象里,因为点击其他页的时候条件会以GET的方式返回,所以只用post接收条件是不行的,这里我用$_REQUEST

//$cond是一个数组条件
$cond=I('request');//此处用request既可以接收post数据也可以接受get数据
/*此处需要解码因为即便条件是原始状态传过去的在page类里也会用urlencode进行编码 */
foreach($cond as $key=>$value){
    $cond[$key]=urldecode($value);
}
$num = $person->where($cond)->count();//$num是总纪录数
$Page = new \Think\Page($num, 2,$cond);//在实例化分页类的时候把条件传入
 $person = $person->where($cond)->
 limit($Page->firstRow . ',' . $Page->listRows)->select();
 //查询信息
 $show = $Page->show();
 //$show保存分页信息

在上面的代码中要注意$cond是一个一维数组
,此处只给出了关键代码,重要是的一个思路,例如把条件赋值也有很多种方式,而且在接收条件的时候也必须进行处理,此处不再多说,重要是理解怎么用Thinkphp实现条件分页