0

チェックボックスを介してphpで製品フィルターを実行しようとしていますが、基本的には1つのフィルターで製品を表示することができましたが、複数のチェックボックスを相互に連携させる方法がわかりません。

これが私が試したことです:

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");

チェックボックスの 1 つをチェックすると、正しい結果が返されますが、同時に 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 に答える