tp3.2下同时实现搜索查询和分页效果

时间:2022-10-27 11:37:40

1.thinkphp下后台博文管理页面:
tp3.2下同时实现搜索查询和分页效果
2.可以看到url地址栏显示后面的参数:其中包括分类和标题的搜索条件,但是如果文章过多需要分页的时候,如何在保证搜索的同时又不影响分页效果呢?先看一下正常搜索代码:

    //接收前台查询条件,赋值给$map变量
        $cateId=I('get.cate_id',0);
        $title=I('get.title','');
        if($cateId){
            $map['a.cate_id']=array('eq',$cateId);
        }
        //strip剔除空格搜索
        if(!empty(strip_tags($title))){
            $map['a.title']=array('like',"%$title%");
        }
        //将get过来的ID和title搜索值赋到模板上进行if判断,在搜索框上保留搜索类名
        $this->assign('cateId',$cateId);
        $this->assign('title',$title);                

3.将搜索代码代入分页和文章查询条件:

//查询满足要求的总记录数(注:如果两表中的cate_id不一致则会出现有分页效果但是数据却显示不出来)
        $count=M('article a')->where($map)->count();

        //自定义单页显示页数
        $size=2;

        //自定义进入index页面时默认显示第一页
        $p=I('get.p',1);


        $Page=new \Think\Page($count,$size);
        /*post查询分页跳转的时候thinkphp3.2下有bug不能使用,以后分页条件查询用get foreach($map as $key=>$val) { $Page->parameter[$key] = urlencode($val); }*/
    //此处page()条件中就是在页面url地址中传入的p参数,因为代入了$map查询条件,所以分页也可以正常使用 
    $artList=M('article a')->join("blog_category AS c ON a.cate_id=c.cate_id")->where($map)->page($p.','.$size)->order('art_id DESC')->select();