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();
        }
    }
时间: 2024-10-24 02:35:38

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

springmvc+java+mysql分页条件查询自学代码

jsp: <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <% String path = request.getContextPath(); String b

分页 --条件查询再分页

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

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

Spring Boot Jpa 默认提供 CURD 的方法等方法,在日常中往往时无法满足我们业务的要求,本章节通过自定义简单查询案例进行讲解. 快速上手 项目中的pom.xml.application.properties与 Chapter1 相同 实体类映射数据库表 user 实体类 @Entity public class User implements Serializable { private static final long serialVersionUID = -39076354

thinkphp分页时保持查询条件

thinkphp 查询数据时需要分页显示时,会出现只有第1页是按查询条件查到的数据,而其他页面都恢复了,我们想要的结果却是:在翻页时,查询条件保持不变. 原因是:在分页跳转的时候,没有将查询条件作为分页参数传递到下一页.原来翻页的时候,存储在REQUEST变量中的参数并未被传递到下一页,因为表单的 method = “post”,而点击进入下一页时,很明显form表单被重置了,所以打印REQUEST变量也是空的. thinkphp RBAC的示例代码中给出了: PHP $p = new Page

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中 按条件查询后列表显示

最近在项目中遇到了需要根据下拉框的条件筛选出符合条件的数据,然后进行列表显示的问题. 在ThinkPHP中进行列表显示的传统过程:通过在后台控制器中查询出数据,然后通过$this->assign()来实现控制器数据向页面的传递,在页面中通过<foreach>或<volist>标签来进行数据的解析,(注:在通过标签进行数据的解析时需要以“$”符号的形式). 在进行条件查询时,需要通过jquery中ajax的方式将条件GET到后台控制器,后台控制器中接收数据,然后根据条件进行查询

thinkphp条件查询和模糊查询的一些方法

1 #文章管理 2 public function adminArticle(){ 3 $adminArticle=M("article"); 4 $arr_seach=$this->seach($adminArticle,10,"now desc","");//参数格式seach($db,$num,$order,$where) 5 ##按最早排序 6 if([email protected]empty($_POST['time'])){

Django-rest-framework多条件查询/分页/多表Json

Django-rest-framework多条件查询/分页/多表Json django-rest-framework多条件查询需要覆写ListAPIView.get_queryset方法,代码示例: def get_queryset(self):     """     使用request.query_params实现多条件查询,也可以使用django filter ,较简单的     方法是在filter_fields中指定要过滤的字段,但只能表示等值,不灵活,灵活的方式是

2016/3/13 七种查询 (普通查询 条件查询 排序查询 模糊查询 统计查询 分组查询 分页查询 )

一句话概括的话,SQL作为结构化查询语言,是标准的关系型数据库通用的标准语言: T-SQL 是在SQL基础上扩展的SQL Server中使用的语言 1,普通查询 #查询Info表中的所有列 select * from Info #查询Info表中的Name和Code列 select Name,Code from Info 2,条件查询 关键字where #查询Info表的左右列 限定范围 列名为p001 select * from Info where 列名="p001" #查询条件之