thinkphp分页时保持查询条件

thinkphp 查询数据时需要分页显示时,会出现只有第1页是按查询条件查到的数据,而其他页面都恢复了,我们想要的结果却是:在翻页时,查询条件保持不变

原因是:在分页跳转的时候,没有将查询条件作为分页参数传递到下一页。原来翻页的时候,存储在REQUEST变量中的参数并未被传递到下一页,因为表单的 method = “post”,而点击进入下一页时,很明显form表单被重置了,所以打印REQUEST变量也是空的。

thinkphp RBAC的示例代码中给出了:

PHP

$p = new Page($count, $listRows);
//分页查询数据
$voList = $model->where($map)->order("`" . $order . "` " . $sort)->limit($p->firstRow . ‘,‘ . $p->listRows)->findAll();

//echo $model->getlastsql();
//分页跳转的时候保证查询条件(其实重点不在这里!)
foreach ($map as $key => $val) {
if (!is_array($val)) {
$p->parameter .= "$key=" . urlencode($val) . "&";
}
}
//分页显示
$page = $p->show();

1

2

3

4

5

6

7

8

9

10

11

12

13

$p = new Page($count, $listRows);

//分页查询数据

$voList = $model->where($map)->order("`" . $order . "` " . $sort)->limit($p->firstRow . ‘,‘ . $p->listRows)->findAll();

//echo $model->getlastsql();

//分页跳转的时候保证查询条件(其实重点不在这里!)

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

if (!is_array($val)) {

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

}

}

//分页显示

$page = $p->show();

 试过之后,发现虽然试图在URL参数中加入查询条件,但是显示的结果仍然如初,因为翻到第二页时,查询条件的表单数据已经丢失了。

查看ORG.page类,发现其parameter属性确实是由用户表单输入的查询条件和系统内定的分页参数p经过urlencode最后附加到页码跳转的链接URL上。尽管thinkphp官方说,会优先去POST,再去GET变量,但是结果却并非想象中那么美好。

在模版中,将查询条件的表单提交方式,由POST方式 改为 GET 方式 ,即:method = “get”,问题暂时解决了。

待续…

2013.11.27

今天有了一些新的想法。不知道这种方式好不好。

1、在使用了条件查询时,将查询条件发送到action,

2、action在调用view显示页面时,再把查询条件字段写到页面上。

3、重复1操作。

thinkphp

thinkphp分页时保持查询条件,布布扣,bubuko.com

时间: 2024-08-07 08:36:48

thinkphp分页时保持查询条件的相关文章

ThinkPHP 分页中带入查询(搜索)条件

parameter 属性赋值 例如要检索用户表中状态为 1 (status=1) 并且电子包含 163 的用户,当提交表单时(注意表单是 GET 方式提交),形成的 URL 地址大致如下: http://www.5idev.com/index.php/Index/search/status/1/email/163 在搜索操作(search)中主要代码如下: public function search(){ $Dao = M("User"); // 构造查询条件 $condition[

thinkphp 同一字段不同查询条件实现

搞定了 另外区间查询还可以支持更多的条件,只要是针对一个字段的条件都可以写到一起,例如:$map['name'] = array(array('like','%a%'), array('like','%b%'), array('like','%c%'), 'ThinkPHP','or'); 最后的查询条件是:(`name` LIKE '%a%') OR (`name` LIKE '%b%') OR (`name` LIKE '%c%') OR (`name` = 'ThinkPHP')

thinkphp分页时修改last显示标题

需要修改Page.class.php里lastSuffix为false,这样才能修改last显示标题. 然后就可以设置了

在查询时将查询条件放入Session中,导出时直接根据qpniRGaFiler取查询条件即可

hibernate中带查询条件的分页

所谓分页,从数据库中分,则是封装一个分页类.利用分页对象进行分页. 但,分页往往带查询条件. 分页类的三个重要数据:[当前页码数],[数据库中的总记录数],[每页显示的数据的条数] 原理:select * from  [表名] where   [字段名]  like   ['%条件%']    limit  [开始查询的索引],[每页显示的数据] 带查询条件的分页分两步 (1)第一步:查询出符合条件的数据的总条数 ---->select count(*) from [表名] where  [字段

Thinkphp 查询条件 and 和 or同时使用即复合查询

        thinkphp 3.2快捷查询OR查询&分割表示AND查询讲解         快捷查询方式是一种多字段查询的简化写法,可以进一步简化查询条件的写法,在多个字段之间用|分割表示OR查询,用&分割表示AND查询,可以实现下面的查询,例如:         一.不同字段相同的查询条件 $User = M("User"); // 实例化User对象             $map['name|title'] = 'thinkphp';           

thinkphp 用户登录,查询,大小写区分

mysql查询默认不区分大小写,这在用户登录验证等情况下明显行不通.不过可以加一个关键字,binary,用二进制查询的方式. 而在thinkphp中没有这个查询条件,只好用原生sql查询实现. publicfunction loginCheck(){ $username = I('param.username'); $password = I('param.password'); // echo "<center>".$username." ".$pas

翻页过程中保存查询条件

例如:我的查询条件是 1 <table> 2 <tr> 3 <td> 4 <input type="text" name="goodsNo"/>- 7 </td> 8 <td> 9 <input type="text" name="goodsName"/> 12 </td> 13 <td><input type=&

【php】thinkphp以post方式查询时分页失效的解决方法

好久没有写博客了,最近说实话有点忙,各个项目都需要改bug.昨天晚上一直没有解决的php项目中的bug,就在刚才终于搞定,在这里还需要感谢博客园大神给的帮助! 具体问题描述 最近遇到一个非常棘手的问题,也是因为刚入手thinkphp.在做项目的过程中,因为需要非常多的查询条件,如果以get方式提交表单的话,会因为url长度限制而报错,所以必须使用post方式提交表单数据,但是在分页的过程中,遇到了问题,因为thinkphp自带的分页是以a标签的形式,进行下一页的,这样查询条件就没有传入后台,导致