找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 448|回复: 0
打印 上一主题 下一主题

Thinkphp搜索时首页分页和搜索页保持条件分页的方法

[复制链接]

2649

主题

2649

帖子

7875

积分

论坛元老

Rank: 8Rank: 8

积分
7875
跳转到指定楼层
楼主
发表于 2018-2-14 05:51:39 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

            本文实例讲述了Thinkphp实现搜索时首页分页和搜索页保持条件分页的方法。分享给大家供大家参考。具体实现方法如下:
在做搜索查询时突然发现在首页用的分页代码在搜索页使用时出现错误,首页分页代码(代码中标注start与end部分为分页代码)
[U]复制代码[/U] 代码如下:public function index(){
  $res=D('Info');// 实例化Data数据对象
  /**********start************/
  import('ORG.Util.Page');// 导入分页类
  $count= $res->count();// 查询满足要求的总记录数
  $Page = new Page($count,3);// 实例化分页类 传入总记录数(另一个参数为自定义分页条数)
  //$Page->rollPage = 3;//默认情况下,页面显示的页数是5  可以修改
  $show= $Page->show();// 分页显示输出
  // 进行分页数据查询
  $list = $res->order('iid desc')->limit($Page->firstRow.','.$Page->listRows)->select();
  /**********end************/
  $this->assign('list',$list);// 赋值数据集
  /*********start*************/
  $this->assign('page',$show);// 赋值分页输出
  /*********end*************/
  $this->display(); // 输出模板
}
搜索代码(代码中start与end之间标注的部分为分页代码,注释标注了分页跳转时保存查询条件),以下两种方法都可以保存条件(不清楚这样是不是写的规范),查询:
[U]复制代码[/U] 代码如下:public function search() {
   $res=D('Info');
   $name=$_REQUEST['name'];
   $sear['name'] = array('like','%'.$name.'%');
   /*********start*************/
   import('ORG.Util.Page');// 导入分页类
   $count=$res->where($sear)->count();//查询数据条数
   $Page=new Page($count,2);//实例化分页函数
   /*********end*************/
   //分页跳转的时候保存查询条件
   foreach($sear as $key=>$val) {
    $Page->parameter   .=   "$key=".urlencode($name)."&";//赋值给Page
   }
   /*********start*************/
   $show=$Page->show();//分页显示输出
   // 进行分页数据查询
    $val=$res->where($sear)->$val=$res->where($sear)->limit($Page->firstRow.','.$Page->listRows)->select();
    /*********end*************/
   $this->assign('search',$val);
   /*********start*************/
   $this->assign('page',$show);
   /*********end*************/
   $this->display();
}
注:
[U]复制代码[/U] 代码如下:   foreach($sear as $key=>$val) {
    $Page->parameter   .=   "$key=".urlencode($name)."&";//赋值给Page
   }
   "$key=".urlencode($name)."&";这里面的$name 相对应提取的是 $name=$_REQUEST['name'];获取的值。
第二种:
[U]复制代码[/U] 代码如下:public function search() {  
   $res=D('Info');  
   $name=$_REQUEST['name'];  
   $sear['name'] = array('like','%'.$name.'%');  
   import('ORG.Util.Page');// 导入分页类  
   $count=$res->where($sear)->count();//查询数据条数  
   $Page=new Page($count,2);//实例化分页函数  
   //分页跳转的时候保证查询条件  
   foreach($sear as $key=>$val) {      
    $Page->parameter   .=   "$key=".urlencode($val[1]).'&';  
   }  
   $show=$Page->show();//分页显示输出  
   // 进行分页数据查询  
   $val=$res->where($sear)->limit($Page->firstRow.','.$Page->listRows)->select();  
   $this->assign('search',$val);  
   $this->assign('page',$show);  
   $this->display();  
}
使用$val[1]是因为$sear是一个数组,而$val[1]对应的是我要查找的条件,这样就可以保持条件进行分页了.
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》及《ThinkPHP常用方法总结
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
            
            
您可能感兴趣的文章:
  • thinkphp 一个页面使用2次分页的实现方法
  • ThinkPHP分页类使用详解
  • ThinkPHP让分页保持搜索状态的方法
  • 仿dedecms下拉分页样式修改的thinkphp分页类实例
  • ThinkPHP有变量的where条件分页实例
  • ThinkPHP3.2.3实现分页的方法详解
  • thinkphp3.2.3 分页代码分享
  • Thinkphp3.2.3分页使用实例解析
  • Thinkphp和Bootstrap结合打造个性的分页样式(推荐)
  • 在Thinkphp中使用ajax实现无刷新分页的方法
  • ThinkPHP 整合Bootstrap Ajax分页样式
  • thinkPHP3.2实现分页自定义样式的方法
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端