本文目錄一覽:
php多條件複合查詢
在我們的網站設計過程中,經常會用到多條件查詢,本文的源碼是一個二手房屋查詢的例子。在本例中,我們要實現能夠通過地理位置,物業類型,房屋價格,房屋面積及信息發布日期等多個條件查詢到客戶所需的資料。
查詢文件(search.php)
一、生成查詢語句:
?
$conn=mysql_connect(“localhost”,”root”,””);
$db=mysql_select_db(“lingyun”);
$query=”select * from message where tradetype='”.$tradetype.”‘”; //交易類型,如出租,出售
$SQL=$SQL . “wuye='” . $wuye . “‘”;
if($housetype!=”不限”){
$query.=” housetype='”.$housetype.”‘”; //房屋類型,如二室一廳,三室二廳
}
if($degree!=”不限”){
$query.=” degree='”.$degree.”‘”; //新舊程度
}
if($wuye!=”不限”){
$query.=” wuye='”.$wuye.”‘”; //物業類型 如住房,商鋪
}
if($price2!=””){
switch($price1){
case “大於”:
$query.=” price'”.$price2.”‘”; //價格
break;
case “等於”:
$query.=” price='”.$price2.”‘”;
break;
case “小於”:
$query.=” price'”.$price2.”‘”;
break;
}
}
if($area2!=””){
switch($area1){
case “大於”:
$query.=” area'”.$area2.”‘”; //面積
break;
case “等於”:
$query.=” area='”.$area2.”‘”;
break;
case “小於”:
$query.=” area'”.$area2.”‘”;
break;
}
}
switch($pubdate){ //發布日期
case “本星期內”:
$query.=” TO_DAYS(NOW()) – TO_DAYS(date)=7″;
break;
case “一個月內”:
$query.=” TO_DAYS(NOW()) – TO_DAYS(date)=30″;
break;
case “三個月內”:
$query.=” TO_DAYS(NOW()) – TO_DAYS(date)=91″;
break;
case “六個月內”:
$query.=” TO_DAYS(NOW()) – TO_DAYS(date)=183″;
break;
}
if($address!=””){
$query.=” address like ‘%$address%'”; //地址
}
if(!$page){
$page=1;
}
?
二、輸出查詢結果:
?php
if ($page){
$page_size=20;
$result=mysql_query($query);
#$message_count=mysql_result($result,0,”total”);
$message_count=10;
$page_count=ceil($message_count/$page_size);
$offset=($page-1)*$page_size;
$query=$query.” order by date desc limit $offset, $page_size”;
$result=mysql_query($query);
if($result){
$rows=mysql_num_rows($result);
if($rows!=0){
while($myrow=mysql_fetch_array($result)){
echo “tr”;
echo “td width=’15’ height=’12’img src=’image/home2.gif’ width=’14’ height=’14’/td”;
echo “td width=’540′ height=’12’$myrow[id] $myrow[tradetype] $myrow[address] $myrow[wuye]($myrow[housetype])font style=’font-size:9pt'[$myrow[date]]/font”;
echo “/td”;
echo “td width=’75’ height=’12’a href=’view_d.php?code=$myrow[code]’ target=’_blank’詳細內容/a/td”;
echo “/tr”;
}
}
else echo “trtddiv align=’center’img src=’image/sorry.gif’brbr沒有找到滿足你條件的記錄/div/td/tr”;
}
$prev_page=$page-1;
$next_page=$page+1;
echo “div align=’center'”;
echo ” 第”.$page.”/”.$page_count.”頁nbsp”;
if ($page=1){
echo “|第一頁|”;
}
else{
echo “a href=’$PATH_INFO?page=1’|第一頁|/a”;
}
echo ” “;
if ($prev_page1){
echo “|上一頁|”;
}
else{
echo “a href=’$PATH_INFO?page=$prev_page’|上一頁|/a”;
}
echo ” “;
if ($next_page$page_count){
echo “|下一頁|”;
}
else{
echo “a href=’$PATH_INFO?page=$next_page’|下一頁|/a”;
}
echo ” “;
if ($page=$page_count){
echo “|最後一頁|”;
}
else{
echo “a href=’$PATH_INFO?page=$page_count’|最後一頁|/a”;
}
echo “/div”;
}
else{
echo “p align=’center’現在還沒有房屋租賃信息!/p”;
}
echo “hr width=”100%” size=”1″”;
?
/table
PHP實現搜索查詢功能的方法技巧
下面是首頁顯示數據表package中的內容,但是有個條件,顯示在首頁的內容還必須是 :字段status=0,且printing=0的數據才能在首頁列表中顯示出來。
頁面上有一個“搜索”功能,輸入條件後就會根據條件來進行查詢。
一般的搜索的話,只要在首頁顯示列表方法index()中給一個:
?
$map=array();//初始化查詢條件
$map=$this-_search();//調用查詢方法
$total = $this-Model-where ($map)-count(); //這個主要是用來計算頁面顯示數據條數的
if ($total == 0) {
$_list = ”;
} else {
$_list = $this-Model-where ($map)-limit( $post_data [‘first’] . ‘,’ . $post_data [‘rows’] )-select();
}
然後,就是寫一個_search():
protected function _search(){
$map = array ();
$post_data = I ( ‘post.’ );
if ($post_data [‘packageid’] != ”) {
$map [‘packageid’] = array (
‘like’,
‘%’ . $post_data [‘packageid’] . ‘%’
);
}
return $map;
}
最後,在設置的“搜索”菜單中,調用這個搜索方法。
但是,這個搜索的.同時,還要確保在字段status=0,且printing=0的數據中進行搜索。
這個限制條件該加在什麼地方。各種嘗試和查詢後,才知道。限制條件直接加在SQL語句中就行了(如下紅色的地方)。(我自己試的時候一直在如下藍色的地方加條件,屢試屢敗!)
$map=array();
$map=$this-_search();
$total = $this-Model-where ($map)-where(array(‘status’ =0,’print_status’=0))-count();
if ($total == 0) {
$_list = ”;
} else {
$_list = $this-Model-where ($map)-where(array(‘status’ =0,’print_status’=0))-limit( $post_data [‘first’] . ‘,’ . $post_data [‘rows’] )-select();
}
更多相關文章推薦:
如何在PHP頁面實現指定條件的查詢
在頁面里把條件都寫到多選按鈕里,post提交,php接收提交的參數,然後拼接成完整的sql語句不就行了?
PHP查詢功能如何實現
//獲得連接
$db = mysql_connect(“localhost”, “root”, “root”) or die(mysql_error());
//echo “Connected to MySQLbr/”;
//連接數據庫
mysql_select_db(“test”) or die(mysql_error());
//echo “Connected to Database”;
$result = mysql_query(“select * from books”,$db);
//循環遍歷
while ($myrow = mysql_fetch_row($result)){
print_r($myrow) ;
}
PHP查詢數據庫中滿足條件的記錄條數(兩種實現方法)
在需要輸出網站用戶註冊數,或者插入數據之前判斷是否有重複記錄的時候,就需要獲取滿足條件的MySQL查詢的記錄數目。
第一種方法:查詢時候直接統計
複製代碼
代碼如下:
$sql=”SELECT
COUNT(*)
AS
count
FROM
TABLE
WHERE
id=’$id'”;
$result=mysql_fetch_array(mysql_query($sql));
$count=$result[‘count’];
第二種方法:先取出,後統計
複製代碼
代碼如下:
$sql=”SELECT
*
FROM
TABLE
WHERE
id=’$id'”;
$result=mysql_fetch_array(mysql_query($sql));
$count=count($result);//或者$count=mysql_num_rows($result);
不過直接使用MySQL的COUNT(*)在數據量龐大的時候,效率的優勢是十分顯著的,因為後者需要二次計算,所以還是最好使用前者進行數據條數的統計。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/248831.html