2016-03-07 65 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,太好了,太感谢你了。 –