私は。。をしようとしています :
- 場所の選択に基づいて製品を表示する
- 製品をループし、列名 = 1 (true) を返します。
- 製品の機能を表すこれらの列名を含む製品フィルター ドロップダウンを作成します。
現時点では、フィルター ドロップダウンにはデフォルトですべての列が含まれていますが、一部のシナリオ (選択した場所に基づく) ではこれで問題ありませんが、場所に 20 個の製品のうち 2 個しかない場合、フィルターに表示するのは面倒です。無関係で結果を返さないドロップダウン機能...
これは、私が言おうとしていることの簡単な例です。
データベース テーブルの構造
+------+------------+-------------+----------------+-------------+-------------+
| SKU | HDMI | 3D | Android | Ethernet | location |
+------+------------+-------------+----------------+-------------+-------------+
|TV1X | 0 | 0 | 0 | 0 |all |
|TV5X | 0 | 0 | 0 | 0 |fr uk usa |
|TV3Z | 1 | 0 | 0 | 1 |usa |
|TVH3 | 1 | 1 | 1 | 1 |mex |
|TVH1 | 1 | 1 | 1 | 1 |fr es uk |
+------+------------+-------------+----------------+-------------+-------------+
機能列のタイプbit
製品表示
まあ言ってみれば$location = "%".'usa'."%"
$queryString = "SELECT * FROM `products` WHERE `location` LIKE :location" ;
$statement = $dbh->prepare($queryString)
$statement->bindParam(':location', $location, PDO::PARAM_STR);
$statement->execute();
$statement->setFetchMode(PDO::FETCH_ASSOC);
$result = $statement->fetchAll();
上記のクエリは、米国に関連するTV5X
&TV3Z
を返します。「TRUE」であるこれらの製品機能はHDMI
+Ethernet
であり、フィルター ドロップダウンに表示したくない残りの 2 つの列のみです。この例は、多くの製品/機能と場所がある場合に、より適切になる可能性があります...
デフォルトのフィルタ リスト
<li >
<button data-filter=".HDMI" >HDMI</button>
</li>
<li >
<button data-filter=".3D" >3D</button>
</li>
<li >
<button data-filter=".Android" >Android OS</button>
</li>
<li >
<button data-filter=".Ethernet" >Ethernet</button>
</li>
デフォルトのフィルタ リストは一部の国に関連していますが、米国には関連していません
動的フィルター リスト
取得した製品 (この場合は 2 つ) に基づいて、データベースにクエリを実行し、これらの製品のどの列の値が TRUE であるかを見つけます。
<?php foreach( $feature as $feat) : ?>
<li >
<button data-filter=".<?php print //Col_Name ;?>" ><?php print ect.. ;?></button>
</li>
<?php endforeach; ?>
長い投稿で申し訳ありませんが、できる限り最善の方法で説明しようとしています。
私の質問は、この目的のためにどのようにクエリを作成するのですか?