ThinkPHP使用getlist方法實現(xiàn)數(shù)據(jù)搜索功能示例
本文實例講述了ThinkPHP使用getlist方法實現(xiàn)數(shù)據(jù)搜索功能。分享給大家供大家參考,具體如下:
自己在ThinkPHP之中的model之中書寫getlist方法,其實所謂的搜索功能無非就是數(shù)據(jù)庫查詢之中用到的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>
看到?jīng)]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']);//將日期轉(zhuǎn)為時間戳 $where.= " and $tableName.add_time >=".$_GET['begintime'].""; $_GET['begintime']=date('Y-m-d',$_GET['begintime']);//將日期轉(zhuǎn)為時間戳 } if(!empty($_GET['endtime'])){//下單結(jié)束日期搜索 $_GET['endtime']=strtotime($_GET['endtime']);//將日期轉(zhuǎn)為時間戳 $where.= " and $tableName.add_time <=".$_GET['endtime'].""; $_GET['endtime']=date('Y-m-d',$_GET['endtime']);//將時間戳轉(zhuǎn)換成日期,方便刷新頁面后前臺顯示 } if(!empty($_GET['finishbegintime'])){//交易完成開始日期搜索 $_GET['finishbegintime']=strtotime($_GET['finishbegintime']);//將日期轉(zhuǎn)為時間戳 $where.= " and $tableName.ok_time >=".$_GET['finishbegintime'].""; $_GET['finishbegintime']=date('Y-m-d',$_GET['finishbegintime']);//將日期轉(zhuǎn)為時間戳 } if(!empty($_GET['finishendtime'])){//交易完成結(jié)束日期搜索 $_GET['finishendtime']=strtotime($_GET['finishendtime']);//將日期轉(zhuǎn)為時間戳 $where.= " and $tableName.ok_time <=".$_GET['finishendtime'].""; $_GET['finishendtime']=date('Y-m-d',$_GET['finishendtime']);//將時間戳轉(zhuǎn)換成日期,方便刷新頁面后前臺顯示 } if(!empty($_GET['send'])){//查詢已發(fā)貨預警訂單,發(fā)貨時間距離此刻超過五天 $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'])){//查詢預警的訂單:已經(jīng)付款且時間超過24小時未發(fā)貨 $where.= " and $tableName.pay_time < '".(time()-60*60*24)."'"; } if(!empty($_GET['warningorder'])){//查詢預警的訂單:已經(jīng)付款且時間超過24小時未發(fā)貨 $where.= " and $tableName.is_pay = 1 "; } if(!empty($_GET['warningorder'])){//查詢預警的訂單:已經(jīng)付款且時間超過24小時未發(fā)貨 $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'])){//查詢采購商賬號 $where.= " and fab_user.user_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){//查詢訂單狀態(tài) $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數(shù)據(jù)獲取,然后進行拼接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用于數(shù)據(jù)自動驗證
更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門教程》、《CI(CodeIgniter)框架進階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術(shù)總結(jié)》。
希望本文所述對大家基于ThinkPHP框架的PHP程序設(shè)計有所幫助。
相關(guān)文章
通過dbi使用perl連接mysql數(shù)據(jù)庫的方法
這篇文章主要介紹了通過dbi使用perl連接mysql數(shù)據(jù)庫的方法,需要的朋友可以參考下2014-04-04thinkPHP5.1框架使用SemanticUI實現(xiàn)分頁功能示例
這篇文章主要介紹了thinkPHP5.1框架使用SemanticUI實現(xiàn)分頁功能,結(jié)合實例形式分析了SemanticUI擴展插件的定義及使用分頁相關(guān)操作技巧,需要的朋友可以參考下2019-08-08thinkphp框架表單數(shù)組實現(xiàn)圖片批量上傳功能示例
這篇文章主要介紹了thinkphp框架表單數(shù)組實現(xiàn)圖片批量上傳功能,結(jié)合實例形式分析了js前端圖片上傳與后臺thinkPHP文件處理相關(guān)操作技巧,需要的朋友可以參考下2020-04-04Zend?Framework框架的Filter過濾器使用示例
這篇文章主要介紹了Zend?Framework框架的Filter過濾器使用示例,代碼中有注釋,需要的朋友可以參考下2014-03-03PHP判斷用戶是否已經(jīng)登錄(跳轉(zhuǎn)到不同頁面或者執(zhí)行不同動作)
這篇文章主要介紹了PHP判斷用戶是否已經(jīng)登錄(跳轉(zhuǎn)到不同頁面或者執(zhí)行不同動作)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-09-09Laravel Eloquent ORM 實現(xiàn)查詢表中指定的字段
今天小編就為大家分享一篇Laravel Eloquent ORM 實現(xiàn)查詢表中指定的字段,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10