2016-03-07 74 views
1

我有4個複選框filterung MySQL的結果。複選框可以激活所有或單了。我不知道如何做出sql語句。我真的必須手動使用所有合併的可能性還是有一個simplier解決方案?也許用「開關」?PHP的MySQL搜索選項組合

沒有作爲先聲明我有:

if ($vart1 == "1" AND !isset($vart2) AND !isset($vart2) AND !isset($vart2) AND !isset($vart4)) {  
    $tname_sql .= " a.tdesc = 'option1' AND";    
}; 

多少變化呢?

謝謝你的幫助。

問候, 奧拉夫。

+0

閱讀關於AND OR操作符在mysql – Deep

+0

對不起,但這並沒有什麼幫助。我需要所有情況的組合的可能性......更好的在php我認爲。 –

+0

很難確切知道你想要達到的目標,但我猜測一個簡單的a.tdesc IN('option1,'option2')等可以爲你工作。如果複選框與數組相關,請使用數組,以便在代碼中進行管理。 – purpleninja

回答

1

您可以返回WHEREAND這取決於有多少次被稱爲一個簡單的PHP函數:

$wa = 0; 
function whereAnd() { 
    global $wa; 
    if ($wa == 0) { 
     $wa = 1; 
     return ' WHERE '; 
    } else { 
     return ' AND '; 
    } 
} 

$query = "SELECT * FROM table1 t "; 
if (isset($var1)) { 
    $query .= whereAnd() . "t.field1 = " . $var1; 
} 
if (isset($var2)) { 
    $query .= whereAnd() . "t.field2 = " . $var2; 
} 
if (isset($var3)) { 
    $query .= whereAnd() . "t.field3 = " . $var3; 
} 
if (isset($var4)) { 
    $query .= whereAnd() . "t.field4 = " . $var4; 
} 

首先調用將返回WHERE,所有其他呼叫將返回AND無論什麼樣的組合,你可能有。你不需要關心有多少複選框被傳遞。

+0

PUH,太好了,太感謝你了。 –