通过复选框获取数据

时间:2013-09-20 16:38:13

标签: php mysql

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

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 ,,或者您可能有不同的条件,过滤器等......