这篇文章主要介绍了ThinkPHP使用getlist方法实现数据搜索功能,结合实例形式较为详细的分析了thinkPHP基于getlist实现根据给定条件进行数据的读取、显示等相关操作技巧,需要的朋友可以参考下
本文实例讲述了ThinkPHP使用getlist方法实现数据搜索功能。分享给大家供大家参考,具体如下:
自己在ThinkPHP之中的model之中书写getlist方法,其实所谓的搜索功能无非就是数据库查询之中用到的like %string%,或者其他的 字段名=特定值,这些sql语句拼接在and语句之中;
HTML之中:
<table class="account_table" width="100%" cellpadding="0" cellspacing="0"> <tr> <td style="text-align:right">订单号:</td><td> </td><td style="text-align:right"> 下单日期: </td><td colspan="5"> 至 交易完成日期 至 订单金额: 至 </td></tr><tr> <td style="text-align:right;width:80px">采购商名称:</td><td style="width:140px"> </td><td style="text-align:right;width:80px">采购商账号:</td><td style="width:140px"> </td></tr><tr> <td colspan="2"> </td></tr></table>
看到没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'])){//查询订单最小金额 $where.= " and $tableName.count_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['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 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语句;你为何总是拼接错误呢!!!
getTableName(); $count = $this->where($where)->count(); $Page = new \Think\Page($count,$pagesize); $this->page = <i style="color:transparent">来源gaodai$ma#com搞$代*码网</i>$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,实用于分页。
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程序设计有所帮助。
以上就是ThinkPHP使用getlist方法实现数据搜索功能示例的详细内容,更多请关注gaodaima搞代码网其它相关文章!