thinkphp分页+条件查询
最近项目上面有一个带条件查询的分页列表,一开始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分页+条件查询的更多相关文章
- Mybatis 的分页条件查询语句编写
刚来到一家新公司, 翻看项目代码, 发现一位同事写的查询逻辑很好, 不用插件, 一个语句完成了分页条件查询. 而我之前一般都是在业务层对参数进行判断, 如果有条件,就调用条件查询的方法, 如果没有条件 ...
- thinkphp where()条件查询
今天来给大家讲下查询最常用但也是最复杂的where方法,where方法也属于模型类的连贯操作方法之一,主要用于查询和操作条件的设置.where方法的用法是ThinkPHP查询语言的精髓,也是Think ...
- Thinkphp分页时查询条件保存方法
web应用中经常要根据用户提交的查询条件进行过滤,再以列表方式显示在浏览器上.如果这种查询是多种条件的组合,并要进行分页显示,则如何在分页导航中保持查询条件,是必须解决的问题. 在Thinkphp中, ...
- JPA简单的分页条件查询
1,service层代码: @Override public QrCodeRecordPaging getPage(String projectId, Integer pageNumber, Inte ...
- 【Spring Data 系列学习】Spring Data JPA 自定义查询,分页,排序,条件查询
Spring Boot Jpa 默认提供 CURD 的方法等方法,在日常中往往时无法满足我们业务的要求,本章节通过自定义简单查询案例进行讲解. 快速上手 项目中的pom.xml.application ...
- thinkphp 带条件分页查询
thinkphp 带条件分页查询:form表单传值时候,method='get'. 用 get 传值
- ThinkPHP中 按条件查询后列表显示
最近在项目中遇到了需要根据下拉框的条件筛选出符合条件的数据,然后进行列表显示的问题. 在ThinkPHP中进行列表显示的传统过程:通过在后台控制器中查询出数据,然后通过$this->assign ...
- TP条件查询和分页查询
一.条件查询 前端页面 <!doctype html> <html> <head> <meta charset="utf-8"> & ...
- jqGrid jqGrid分页参数+条件查询
HTML <div class="row"> <div class="col-sm-20"> <form id="for ...
随机推荐
- C# 关于跨线程访问控件问题
跨线程访问控件问题的原因是:控件都是在主线程中创建的,而系统默认控件的修改权归其创建线程所有.在子线程中如果需要直接修改控件的内容,需要使用委托机制将控件的修改操作交给主线程处理.因此,当没有使用委托 ...
- Spring-boot 项目中使用 jackson 遇到的一个问题
jackson介绍 java代码中实现序列化和反序列化的工具类 jackson使用Demo https://github.com/Naylor55/JavaDebrisCode/tree/branch ...
- MongoDB的安装避坑(踩坑)
下载 可以去官网下载:https://www.mongodb.com/download-center/community 安装 下载完了就可以使用安装包安装:我下载的mongodb版本是:v4.0.9 ...
- 洛谷P1979 华容道(70分 暴力)
P1979 华容道 题目描述 [问题描述] 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面, 华容道是否根本就无法完成,如果能完成, 最少 ...
- [USACO14MAR]破坏Sabotage 二分答案
题目描述 Farmer John's arch-nemesis, Farmer Paul, has decided to sabotage Farmer John's milking equipmen ...
- UDP可靠传输简易设计
UDP,鉴于其丢包和乱序(后发先至)问题,为保证其可靠性设计如下报头协议,供大家参考 数据包设计 数据包总大小按照MTU设计设置,小于1500字节 数据包示意图 包头类型说明 1.类型(1字节) 数值 ...
- iOS开发 - CocoaPods远程私有库从0到1
1. 创建主工程 路径:/Users/Funky/Desktop/CocoaPodRemoteLib/MyMainProject/MyMainProject.xcodeproj 2. 在码云(htt ...
- jmeter 签名MD5生成(转)
请求接口需要同时发送签名,签名定义为: 可以看出签名就是把用户的密码 .用户名 和签名key生成一个md5串就可以了 刚好jmeter 有个md5 生成,生成前需要获取name ,password k ...
- 牛客练习赛41D(思维转化)
AC通道 要点 思路:题解中将所求进行转化\[max\{相似度\} = max\{M-不相似度\} = M-min\{不相似度\}\]因此转化为求某01串T与所给众S串的最小不相似度,而最终答案是选取 ...
- 05-树9 Huffman Codes (30 分)
In 1953, David A. Huffman published his paper "A Method for the Construction of Minimum-Redunda ...