ThinkPHP使用getlist方法实现数据搜索功能示例

2018-09-07 21:28

阅读:413

  本文实例讲述了ThinkPHP使用getlist方法实现数据搜索功能。分享给大家供大家参考,具体如下:

  自己在ThinkPHP之中的model之中书写getlist方法,其实所谓的搜索功能无非就是数据库查询之中用到的like %string%,或者其他的 字段名=特定值,这些sql语句拼接在and语句之中;

  HTML之中:

   <form action= method=get> <table class=account_table width=100% cellpadding=0 cellspacing=0> <tr> <td style=text-align:right>订单号:</td> <td> <input id=Orderid name=order_sn class=inp_wid3 type=text value={$_GET[order_sn]}/> </td> <td style=text-align:right> 下单日期: </td> <td colspan=5> <input type=text class=inp_wid2 id=BeginTime name=begintime value={$_GET[begintime]} /> 至 <input type=text class=inp_wid2 id=EndTime name=endtime value={$_GET[endtime]} /> 交易完成日期 <input type=text class=inp_wid2 id=txtFinishedBeginTime name=finishbegintime value={$_GET[finishbegintime]} /> 至 <input type=text class=inp_wid2 id=txtFinishedEndTime name=finishendtime value={$_GET[finishendtime]} /> 订单金额: <input type=text class=inp_wid2 id=txtMoneyMin name=count_price_min value={$_GET[count_price_min]}/> 至 <input type=text class=inp_wid2 id=txtMoneyMax name=count_price_max value={$_GET[count_price_max]} /> </td> </tr> <tr> <td style=text-align:right; width:80px>采购商名称:</td> <td style=width:140px> <input id=SupermarketName name=user_nick_name class=inp_wid3 type=text value={$_GET[user_nick_name]} /> </td> <td style=text-align:right; width:80px>采购商账号:</td> <td style=width:140px> <input id=SupermarketZh name=user_name class=inp_wid3 type=text value={$_GET[user_name]} /> </td> </tr> <tr> <td colspan=2> <input class=search_btn1 type=submit value=搜索 id=Search /> </td> </tr> </table> </form>

  看到没GET方法提交表单,这个是查询条件填入选项;

  控制器之中:

   $order_msg=$order->getList(); $this->assign(info,$order_msg);//这个获取订单的详细信息

  Model之中:

   public function getList($pagesize=25){ $tableName = $this->getTableName(); $where = $tableName..service_id = .$_SESSION[service_site][service_id]; if(!empty($_GET[order_sn])){//查询订单号 $where.= and $tableName.`order_sn` like %.$_GET[order_sn].%; } if(!empty($_GET[count_price_min])){//查询订单最小金额nt_price >=.$_GET[count_price_min].; } if(!empty($_GET[begintime])){//下单开始日期搜索 $_GET[begintime]=strtotime($_GET[begintime]);//将日期转为时间戳 $where.= and $tableName.add_time >=.$_GET[begintime].; $_GET[begintime]=date(Y-m-d,$_GET[begintime]);//将日期转为时间戳 } if(!empty($_GET[endtime])){//下单结束日期搜索 $_GET[endtime]=strtotime($_GET[endtime]);//将日期转为时间戳 $where.= and $tableName.add_time <=.$_GET[endtime].; $_GET[endtime]=date(Y-m-d,$_GET[endtime]);//将时间戳转换成日期,方便刷新页面后前台显示 } if(!empty($_GET[finishbegintime])){//交易完成开始日期搜索 $_GET[finishbegintime]=strtotime($_GET[finishbegintime]);//将日期转为时间戳 $where.= and $tableName.ok_time >=.$_GET[finishbegintime].; $_GET[finishbegintime]=date(Y-m-d,$_GET[finishbegintime]);//将日期转为时间戳 } if(!empty($_GET[finishendtime])){//交易完成结束日期搜索 $_GET[finishendtime]=strtotime($_GET[finishendtime]);//将日期转为时间戳 $where.= and $tableName.ok_time <=.$_GET[finishendtime].; $_GET[finishendtime]=date(Y-m-d,$_GET[finishendtime]);//将时间戳转换成日期,方便刷新页面后前台显示 } if(!empty($_GET[send])){//查询已发货预警订单,发货时间距离此刻超过五天 $where.= and $tableName.send_time < .(time()-60*60*24*5).; } if(!empty($_GET[doingorder])){//查询处理中的订单 $where.= and $tableName.status in (0,1); } if(!empty($_GET[warningorder])){//查询预警的订单:已经付款且时间超过24小时未发货 $where.= and $tableName.pay_time < .(time()-60*60*24).; } if(!empty($_GET[warningorder])){//查询预警的订单:已经付款且时间超过24小时未发货 $where.= and $tableName.is_pay = 1 ; } if(!empty($_GET[warningorder])){//查询预警的订单:已经付款且时间超过24小时未发货 $where.= and $tableName.status in (0,1); } if(!empty($_GET[count_price_max])){//查询订单最大金额 $where.= and $tableName.count_price <=.$_GET[count_price_max].; } if(!empty($_GET[user_nick_name])){//查询采购商名称 $where.= and fab_user.nick_name like .$_GET[user_nick_name].%; } if(!empty($_GET[user_name])){//查询采购商账号r_name like .$_GET[user_name].%; } if(!empty($_GET[supplier_nick_name])){//查询供应商商名称 $where.= and fab_supplier.nick_name like .$_GET[supplier_nick_name].%; } if(!empty($_GET[supplier_name])){//查询供应商账号 $where.= and fab_supplier.supplier_name like .$_GET[supplier_name].%; } if($_GET[history] == 1){ $where .= and {$tableName}.status in (2,3,4) ; } if(($_GET[pay_type])!=&&($_GET[pay_type])!=-1){//查询支付方式 $where.= and fab_order_info.pay_type = .$_GET[pay_type].; } if(($_GET[status])!=&&($_GET[status])!=-1){//查询订单状态 $where.= and fab_order_info.status = .$_GET[status].; } if(!empty($_GET[stime]) && !empty($_GET[etime])){ $stime = strtotime($_GET[stime]); $etime = strtotime($_GET[etime]) + 24*60*60; $where.= and ($tableName.`inputtime` between $stime and $etime); } $count = $this->where($where)->count(); $this->countNum = $count; $Page = new \Think\Page($count,$pagesize); $this->page = $Page->show(); $limit = $Page->firstRow.,.$Page->listRows; $sql=select $tableName.*,fab_supplier.nick_name as supplier_nick_name,fab_user.nick_name as user_nick_name from ($tableName left join fab_supplier on fab_order_info.supplier_id=fab_supplier.supplier_id) left join fab_user on fab_order_info.user_id=fab_user.user_id where $where order by $tableName.`order_id` desc limit $limit; $sqls=select sum(fab_order_info.count_price) as order_price,count(fab_order_info.count_price) as order_count from $tableName where $where order by $tableName.`order_id` desc limit $limit; $this->sql_msg=$this->query($sqls); return $this->query($sql);//订单详细信息 }

  你只需要留意那个GET数据获取,然后进行拼接SQL语句;你为何总是拼接错误呢!!!

   <?php namespace Admin\Model; use Think\Model; class KuaidicompanyModel extends Model { private $page = ; public function getList($pagesize=25){ $where = 1; $tableName = $this->getTableName(); $count = $this->where($where)->count(); $Page = new \Think\Page($count,$pagesize); $this->page = $Page->show(); $limit = $Page->firstRow.,.$Page->listRows; return $this->query(select * from $tableName where $where order by $tableName.`id` asc limit $limit ); } public function getPage(){ return $this->page; } }

  精简通用版getlist,实用于分页。

   <?php namespace Admin\Model; use Think\Model; class KuaidicompanyModel extends Model { private $page = ; public function getList($pagesize=25){ $where = 1; $tableName = $this->getTableName(); $count = $this->where($where)->count(); $Page = new \Think\Page($count,$pagesize); $this->page = $Page->show(); $limit = $Page->firstRow.,.$Page->listRows; return $this->query(select * from $tableName where $where order by $tableName.`id` asc limit $limit ); } public function getPage(){ return $this->page; } }

  精简版MODEL用于数据自动验证

  更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

  希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。


评论


亲,登录后才可以留言!