我的带有复选框的多选过滤器仅适用于复选框上的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”'然后过滤器完全禁用。
答案 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 ";
}