2011-09-03 46 views
0

我想爲我的房地產業務做一個網站。 直到現在我還設法讓使用下拉式選單,選擇價格平方米,臥室正確的查詢等使用複選框的PHP多標準搜索

現在我想做一個多搜索條件,其中用戶可以選擇那種個公寓 的發現。如複式工作室,閣樓,單層公寓等。 在我的數據庫中,我有8列相應的房屋種類,他們每個人都可以採取布爾值。 列被命名爲OB_STUDIO,OB_PENTHOUSE,..... 我所做的是爲類別

<input type="checkbox" name="chk1" value="studio" /> 
<input type="checkbox" name="chk2" value="penthouse" /> 

創造儘可能多chkboxes。 。 然後在我的PHP代碼,我寫了....

if ($chk1 == 'studio') { 
$where .= " and A.OB_STUDIO= true "; 
} 
if ($ch2 == 'penthouse') { 
$where .= " and A.OB_PENTHOUSE= true "; 
} 

然後我通過查詢字符串作爲變量

$request_string = "from " . G_DB_PREFIX . "OBJECTS A, 
" . G_DB_PREFIX . "OBJECT_TR B, 
" . G_DB_PREFIX . "TRANSLATION C 
where A.OB_ID=B.OTR_OBJECTID and B.OTR_LANG='" . G_LANG . "' 
and A.OB_PRODUCTID=C.TR_REFID and C.TR_LANG='" . G_LANG . "' and 
C.TR_REFNAME='PRODUCTID' $where"; 

但不是走回頭路所有屬於這兩類房屋(如果我們同時檢查)什麼也不做。我明白,原因是因爲它的查詢是搜索屬於這兩個類別的產品。 我必須用什麼樣的表達來實現我想要的? 可能我必須使用複選框數組呢? 該代碼工作得很好,如果我只檢查一個類別。 我真的很新手到PHP,所以如果你能給我一隻手,我將不勝感激。 Thanx提前

回答

1

試試這個:

$conditions = array(); 
if ($chk1 == 'studio') { 
$conditions[] = 'A.OB_STUDIO= true'; 
} 
if ($chk2 == 'penthouse') { 
$conditions[] = 'A.OB_PENTHOUSE= true'; 
} 

$where = !empty($conditions) ? ' and ('.implode(' or ',$conditions).') ' : ''; 
+0

感謝名單了很多卡米爾。你剛剛救了我的一天!!!這完美的工作。 – user926652

1

您的查詢返回任何內容,因爲您要求所有屬於這兩個類別的房屋在同一時間。如果你從任何一類需要的房子,你應該詢問:

$where .= " and (A.OB_STUDIO= true or A.OB_PENTHOUSE= true)";