0

我试图通过复选框在 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 根本不会返回任何内容。任何帮助将不胜感激。

4

2 回答 2

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) . ")";
}
于 2013-09-20T16:44:00.247 回答
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,,或者您可能有不同的条件、过滤器等...

于 2013-09-20T16:46:24.677 回答