thinkphp分页搜索查询
本篇文章将为大家讲述thinkphp框架如何进行分页搜索查询
相信很多人都会在网上搜索thinkphp如何分页搜索,并且当点击第二页的时候搜索条件保持不变,博主在整理,修改自己之前写的一个网站的时候也遇到过,也百度过,但其实很多的做法只是对一半,并全可以,下面我将给大家介绍如何简单的实现,下面这个方法自己测试过可以用,所以大家可以试试,也欢迎大家抽空访问我的另一个网站--汤圆快到碗里来。
我们分页搜索查询其实可以使用thinkphp自带的分页类就可以实现,只是我们在使用过程中必须注意,就是前端页面的条件传递必须是GET请求方法,如果是POST方式,那么将无法实现,这也是很多开发者往往代码是正确的,只是因为这一个问题而造成无法实现。
首先是前端代码,我们先弄一个查询表单,大家根据自己需求,查询不同的条件,我这里是可以查询标题、状态、时间,其中表单的action地址这里不填,默认是当前地址,这个可以根据不同需求,写自己的地址,代码如下:
下面我将介绍我的后端控制器代码,首先是接收条件的代码如下:
if ($_GET) { $title = I('get.title'); $status = I('get.status'); $start = strtotime(I('get.query_start_time')); $end = strtotime(I('get.query_end_time')); //标题 if ($title != '') { $where['title'] = array('like', "%{$title}%"); } //状态 if ($status != '2') { $where['status'] = $status; } //时间 if ($_GET['query_start_time'] && $_GET['query_end_time']) { $where['publish_time'] = array('BETWEEN', array($start, $end)); } else if ($_GET['query_start_time']) { $where['publish_time'] = array('EGT', $start); } else if ($_GET['query_end_time']) { $where['publish_time'] = array('ELT', $end); } }
然后是开始执行条件查询代码,代码如下:
$articleList = M('article')->where($where)->order('id desc')-> page($_GET['p'] . ',12')->select(); $count1 = M('article')->where($where)->count(); $Page = new \Think\Page1($count1, 12);// 实例化分页类 传入总记录数和每页显示的记录数 $show = $Page->show(); // 分页显示输出 $this->assign('page', $show); // 赋值分页输出 $this->assign('articleList', $articleList); $this->display();
这样我们便完成了后端代码了,后端代码其实就是接收条件并组合成数组进行查询,然后将获取的结果返回前端就可以了,记住前端条件是用GET传递,后端接收条件同样也是用GET,这样便可以使我们在第二页的时候,条件依然不变。有时候你还想当跳转第二页的时候,查询的条件依然还存在前端页面的查询栏中,只要在相应的查询控件中的value值加入{:I('get.相应ID名')},例如我的是标题input控件,他的ID是title,那么代码如下:
这样就可以保持搜索条件依然显示在控件上,不同的ID,获取的ID值不同。
以上就是我为大家讲解的thinkphp使用分页查询搜索,我这里的版本是3.2。
0条评论