在開發模組功能最怕遇到就是多條件的資料表交叉查詢,例如查詢資料表條件A+條件B,但又可單獨查詢條件A及條件B,如果只有1-2個查詢項目還好,但如果同時有5個或更多的查詢項目,有時候容易出錯,所以想出來一個高效率又方便的交叉查詢function寫法分享給大家!!
例如像下面這個介面圖有5項查詢功能,要能同時查詢單項及多項交叉查詢並將結果顯示右方的總表內容中!!
這樣必須設資料表的where查詢條件!如果一個一個判斷,5項查詢會產生5*5=25總組合!會寫到累死,所以乾脆直接function起來批次處理!!
//資料交叉查詢組合
function crossquery($where=""){
foreach($where as $key=> $val){
$wherevar.=$val;
}
$wherevar=!empty($wherevar) ? "where ".$wherevar."" : ''; // get TRUE
//去除最後字元
$wherevar=substr($wherevar,0,-4);
return $wherevar;
}
這樣就吧查詢條件全部交叉組合起來了,只需要在要讀取資料表的php檔中呼叫crossquery()函式並吧$where陣列直送入
//資料交叉查詢
$wherevar['0']=!empty($setuptime) ? "`setuptime` LIKE '%$setuptime%' and " : false; //時間有值
$wherevar['1']=!empty($enfunction) ? "`enfunction` = '".$enfunction."' and " : false; //功能有值
$wherevar['2']=!empty($basid) ? "`basid` = '".$basid."' and " : false; //單位有值
$wherevar['3']=!empty($review) ? "`review` = '".$review."' and " : false; //審核狀態有值
$wherevar['4']=!empty($search) ? "`title` LIKE '%$search%' and " : false; //搜尋有值
$where=crossquery($where=$wherevar);
如果要增加6.7.8個查詢只要增加$wherevar[]陣列加上查詢條件就能使用!!
實際查看看,先以單項時間查詢看結果!!順便echo $where看數值是否正確!
所以查單項是沒問題,那5個條件都查呢,測試看看!!
設定的查詢條件都能搜尋到需要顯示的資料,這樣真的方便很多,分享給有需要的朋友參考看看!!
教學撰寫:徐嘉裕 Neil hsu
例如像下面這個介面圖有5項查詢功能,要能同時查詢單項及多項交叉查詢並將結果顯示右方的總表內容中!!
這樣必須設資料表的where查詢條件!如果一個一個判斷,5項查詢會產生5*5=25總組合!會寫到累死,所以乾脆直接function起來批次處理!!
//資料交叉查詢組合
function crossquery($where=""){
foreach($where as $key=> $val){
$wherevar.=$val;
}
$wherevar=!empty($wherevar) ? "where ".$wherevar."" : ''; // get TRUE
//去除最後字元
$wherevar=substr($wherevar,0,-4);
return $wherevar;
}
這樣就吧查詢條件全部交叉組合起來了,只需要在要讀取資料表的php檔中呼叫crossquery()函式並吧$where陣列直送入
//資料交叉查詢
$wherevar['0']=!empty($setuptime) ? "`setuptime` LIKE '%$setuptime%' and " : false; //時間有值
$wherevar['1']=!empty($enfunction) ? "`enfunction` = '".$enfunction."' and " : false; //功能有值
$wherevar['2']=!empty($basid) ? "`basid` = '".$basid."' and " : false; //單位有值
$wherevar['3']=!empty($review) ? "`review` = '".$review."' and " : false; //審核狀態有值
$wherevar['4']=!empty($search) ? "`title` LIKE '%$search%' and " : false; //搜尋有值
$where=crossquery($where=$wherevar);
如果要增加6.7.8個查詢只要增加$wherevar[]陣列加上查詢條件就能使用!!
實際查看看,先以單項時間查詢看結果!!順便echo $where看數值是否正確!
所以查單項是沒問題,那5個條件都查呢,測試看看!!
設定的查詢條件都能搜尋到需要顯示的資料,這樣真的方便很多,分享給有需要的朋友參考看看!!
教學撰寫:徐嘉裕 Neil hsu
留言
張貼留言