我试图通过复选框在php中进行产品过滤,基本上我可以用一个过滤器显示产品,但我迷失了如何使多个复选框与彼此合作。
这是我尝试过的:
更改sql命令的部分
if (isset($_GET['checkDress'])){
if (empty($where)){
$where=" where category = 'kleit'";
}elseif(!empty($where)){
$where.=" and category = 'kleit'";
}
}
if (isset($_GET['nightDress'])){
if (empty($where)){
$where=" where category = 'oKleit'";
}elseif(!empty($where)){
$where.=" and category = 'oKleit'";
}
}
sql命令:
$res=mysql_query("select * from items $where $filter");
选中其中一个复选框就可以了,它会返回正确的结果,但同时检查2并不会返回任何内容。任何帮助都将非常感激。
答案 0 :(得分:1)
由于礼服似乎无法同时满足多个类别,因此您似乎希望将or
用于过滤器,而不是and
。这将是一个简单的修复,但我认为你可以改进这个解决方案。
<!-- pass filters as array -->
<input name="filter[]" type=checkbox value=kleit>
<input name="filter[]" type=checkbox value=oKleit>
$filters = $_GET['filters'];
$params = array_fill(0, count($filters), '?');
if ($params) {
$where = "WHERE category IN (" . implode(',', $params) . ")";
}
答案 1 :(得分:0)
这样的事情?
$where = " WHERE ";
$conditions = array();
if (isset($_GET['checkDress'])){
$conditions[] = "category = 'kleit'";
}
if (isset($_GET['nightDress'])){
$conditions[] = "category = 'oKleit'";
}
$where .= implode($conditions, ' AND ');
也许使用IN
代替多个AND
,,或者您可能有不同的条件,过滤器等......