带复选框的多个过滤器选择仅适用于1个选择

时间:2014-03-18 09:13:32

标签: php

我的带有复选框的多选过滤器仅适用于复选框上的1个选择。这仅计算在表的同一列中进行多个选择。多选过滤适用于同一表中的交叉列。

我使用以下结构:

$where = ' WHERE TRUE';
$opts = isset($_POST['filterOpts'])? $_POST['filterOpts'] : array('');

if (in_array("medewerker", $opts)){
$where .= " AND medewerker = 1 ";
}  
if (in_array("medewerker1", $opts)){
$where .= " AND medewerker = 2 ";
}  

我已经尝试将代码更改为以下似乎有效,但仅限于2个选项:

if (in_array("medewerker", $opts)){
$where .= " AND medewerker = 1 OR 2";
}  
if (in_array("medewerker1", $opts)){
$where .= " AND medewerker = 2 ";
}  

一旦我将其更改为“1”或“2”或“3”'然后过滤器完全禁用。

1 个答案:

答案 0 :(得分:0)

$where = ' WHERE FALSE ';
$opts = isset($_POST['filterOpts'])? $_POST['filterOpts'] : array('');

if (in_array("medewerker", $opts)){
    $where .= " OR medewerker = 1 ";
}  
if (in_array("medewerker1", $opts)){
    $where .= " OR medewerker = 2 ";
}  

要在没有过滤器的情况下工作,请使用此

$opts = isset($_POST['filterOpts'])? $_POST['filterOpts'] : array('');
if (empty($opts)) {
    $where = ' WHERE TRUE ';
} else {
    $where = ' WHERE FALSE ';
}

if (in_array("medewerker", $opts)){
    $where .= " OR medewerker = 1 ";
}  
if (in_array("medewerker1", $opts)){
    $where .= " OR medewerker = 2 ";
}