我在尝试着 :
- 根据位置选择显示产品
- 遍历产品并返回 = 1 (true) 的列名
- 创建一个产品过滤器下拉列表,其中包含代表产品功能的这些列名称
目前,过滤器下拉列表默认包含所有列,在某些情况下(基于所选位置),另一方面,如果一个位置只有 20 个产品中的两个产品,则在过滤器中显示很烦人不相关且将返回无结果的下拉功能...
这是我想说的一个简短的例子;
数据库表结构
+------+------------+-------------+----------------+-------------+-------------+
| 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
仅在我不希望在过滤器下拉列表中显示的其余两列中。当我们有许多产品/功能和位置时,这个例子可能更相关......
默认过滤器列表
<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>
默认过滤器列表与某些国家/地区相关,但与美国无关
动态过滤器列表
根据检索到的产品(在本例中为两个),查询数据库并查找这些产品的哪些列具有 TRUE 作为值。
<?php foreach( $feature as $feat) : ?>
<li >
<button data-filter=".<?php print //Col_Name ;?>" ><?php print ect.. ;?></button>
</li>
<?php endforeach; ?>
我为这篇长文道歉,我试图解释我能做到的最好的方式。
我的问题是如何为此目的构建查询?