最近项目上面有一个带条件查询的分页列表,一开始form用的post,点击第二页就没有跳转成功,原因是分页是get请求,post数据链接到其他页面就会被清除。

解决办法:

1、form表单method=get

2、后台代码用I('get.parameterName')获取URL参数(查询条件)

3、修改thinkphp3.2.3的Page类:

第47行 改为$this->parameter  = empty($parameter) ? array_urlencode($_GET) : $parameter;

array_urlencode函数(对多维数组进行urlEncode,防止GET参数中文乱码)是全局公共函数,写在Common/Common/function.php里,

function array_urlencode($data){
$new_data = array();
foreach($data as $key => $val){
// 这里我对键也进行了urlencode
$new_data[urlencode($key)] = is_array($val) ? array_urlencode($val) : urlencode($val);
}
return $new_data;
}

至此完成了带条件查询的分页功能。

如果读者跟我的项目一样,要对get请求进行区分,可以在html页面的form表单加入input=hidden的区分条件,条件成立表示带查询条件的get,不成立则是普通get加载页面

给出后台代码:

public function definedTypeList(){
if(empty(I('get.isSearch'))){ //不是查询条件的get
$count = M('docDefinedType')->count("d_type_id");
$Page = new \Think\Page($count, 10);
$Page->lastSuffix = false;//最后一页不显示为总页数
$Page->setConfig('header','<li class="disabled hwh-page-info"><a>共<em>%TOTAL_ROW%</em>条 <em>%NOW_PAGE%</em>/%TOTAL_PAGE%页</a></li>');
$Page->setConfig('prev','上一页');
$Page->setConfig('next','下一页');
$Page->setConfig('last','末页');
$Page->setConfig('first','首页');
$Page->setConfig('theme','%HEADER% %FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%');
$page_show = bootstrap_page_style($Page->show());//转bootstrap样式
$list = M('docDefinedType')->limit($Page->firstRow . ',' . $Page->listRows)
->order('doc_type desc,defined_type desc')->select();
$this->assign('definedTypeList', $list);
if ($count <= 10) {
$this->assign("page", '<b>共1页</b>');
} else {
$this->assign("page", $page_show);
}
$this->display();
}else{
// header("Content-type: text/html;charset=utf-8");
$typeCondition=$_GET['typeCondition'];
if(!empty($typeCondition)){
$map['defined_type']=array('like','%'.$typeCondition.'%');
}
$categoryCondition=$_GET['categoryCondition'];
if(!empty($categoryCondition)){
$map['doc_type']=array('like','%'.$categoryCondition.'%');
}
$count = M('docDefinedType')->where($map)->count("d_type_id");
$Page = new \Think\Page($count, 10);
$Page->lastSuffix = false;//最后一页不显示为总页数
$Page->setConfig('header','<li class="disabled hwh-page-info"><a>共<em>%TOTAL_ROW%</em>条 <em>%NOW_PAGE%</em>/%TOTAL_PAGE%页</a></li>');
$Page->setConfig('prev','上一页');
$Page->setConfig('next','下一页');
$Page->setConfig('last','末页');
$Page->setConfig('first','首页');
$Page->setConfig('theme','%HEADER% %FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%');
// p($Page->parameter);
$page_show = bootstrap_page_style($Page->show()); $list = M('docDefinedType')->where($map)->limit($Page->firstRow . ',' . $Page->listRows)
->order('doc_type desc,defined_type desc')->select();
// p($list);
$this->assign('definedTypeList', $list);
if ($count <= 10) {
$this->assign("page", '<b>共1页</b>');
} else {
$this->assign("page", $page_show);
}
$searchArr['typeCondition']=$typeCondition;
$searchArr['categoryCondition']=$categoryCondition;
$this->assign('searchArr',$searchArr);
$this->display();
}
}

thinkphp分页+条件查询的更多相关文章

  1. Mybatis 的分页条件查询语句编写

    刚来到一家新公司, 翻看项目代码, 发现一位同事写的查询逻辑很好, 不用插件, 一个语句完成了分页条件查询. 而我之前一般都是在业务层对参数进行判断, 如果有条件,就调用条件查询的方法, 如果没有条件 ...

  2. thinkphp where()条件查询

    今天来给大家讲下查询最常用但也是最复杂的where方法,where方法也属于模型类的连贯操作方法之一,主要用于查询和操作条件的设置.where方法的用法是ThinkPHP查询语言的精髓,也是Think ...

  3. Thinkphp分页时查询条件保存方法

    web应用中经常要根据用户提交的查询条件进行过滤,再以列表方式显示在浏览器上.如果这种查询是多种条件的组合,并要进行分页显示,则如何在分页导航中保持查询条件,是必须解决的问题. 在Thinkphp中, ...

  4. JPA简单的分页条件查询

    1,service层代码: @Override public QrCodeRecordPaging getPage(String projectId, Integer pageNumber, Inte ...

  5. 【Spring Data 系列学习】Spring Data JPA 自定义查询,分页,排序,条件查询

    Spring Boot Jpa 默认提供 CURD 的方法等方法,在日常中往往时无法满足我们业务的要求,本章节通过自定义简单查询案例进行讲解. 快速上手 项目中的pom.xml.application ...

  6. thinkphp 带条件分页查询

    thinkphp 带条件分页查询:form表单传值时候,method='get'. 用 get 传值

  7. ThinkPHP中 按条件查询后列表显示

    最近在项目中遇到了需要根据下拉框的条件筛选出符合条件的数据,然后进行列表显示的问题. 在ThinkPHP中进行列表显示的传统过程:通过在后台控制器中查询出数据,然后通过$this->assign ...

  8. TP条件查询和分页查询

    一.条件查询 前端页面 <!doctype html> <html> <head> <meta charset="utf-8"> & ...

  9. jqGrid jqGrid分页参数+条件查询

    HTML <div class="row"> <div class="col-sm-20"> <form id="for ...

随机推荐

  1. 【TMF eTOM】eTOM的概念和术语

    eTOM的概念 为了有效地理解和使用eTOM业务流程框架,我们首先要理解构成eTOM的关键概念.这些概念使eTOM成为集成业务流程设计/评估与传统过程的一个非常有效的工具.在这些概念中使用了在本文中详 ...

  2. mssql 递归

    --递归id往下所有内容with temp ( URE_ID, URE_PARENT_ID,URE_NAME ,URE_TYPE)as(select URE_ID, URE_PARENT_ID,URE ...

  3. [CentOS7] vncviewer与windows之间的复制粘贴

    转载:https://my.oschina.net/seava/blog/226966 用VNC连接到Linux之后,最纠结的问题就是无法复制粘贴.其实很简单,在Linux里面,打开一个终端,然后输入 ...

  4. java二分法查找实现代码

    package util; class BinarySearch { static int binarySearch(int[] array,int goal){//传入排好序的数组和目标数字 int ...

  5. 谢特——后缀数组+tire 树

    题目 [题目描述] 由于你成功地在 $ \text{1 s} $ 内算出了上一题的答案,英雄们很高兴并邀请你加入了他们的游戏.然而进入游戏之后你才发现,英雄们打的游戏和你想象的并不一样…… 英雄们打的 ...

  6. BZOJ1816(二分)

    反思 由于受我第一次遇到的构造最多三角形的题的影响,这种几个分成一组最多多少组的题我老是往贪心上想. 事实上一般贪心也能贪,但这道题,还有突然想起的前些天做的cf140C,都是用二分可以更简单地解决, ...

  7. MySQL表结构,表空间,段,区,页,MVCC

    索引组织表(IOT表):为什么引入索引组织表,好处在那里,组织结构特点是什么,如何创建,创建IOT的限制LIMIT. IOT是以索引的方式存储的表,表的记录存储在索引中,索引即是数据,索引的KEY为P ...

  8. 车牌号校验js

    var regExp = /(^[\u4E00-\u9FA5]{1}[A-Z0-9]{6}$)|(^[A-Z]{2}[A-Z0-9]{2}[A-Z0-9\u4E00-\u9FA5]{1}[A-Z0-9 ...

  9. 在myecplise中更新代码发布后没效果

    requestmapping指定路径不能访问: 重新发布,重新访问,清除缓存,重新访问,重启浏览器,清除缓存,重新访问,清除Tomcat相关目录,重新发布,重新访问……折腾了很久,可还是没有解决问题. ...

  10. (6)ASP.NET Core 中使用IHttpClientFactory发出HTTP请求

    1.HttpClient类使用存在的问题 HttpClient类的使用所存在的问题,百度搜索的文章一大堆,好多都是单纯文字描述,让人感觉不太好理解,为了更好理解HttpClient使用存在的问题,下面 ...