php - Mysql 使用 php 按大小获取产品
问题描述
使用过滤器选项按尺寸获取产品。
这是产品数据库结构:
id | size
------------
1 | S,M
2 | S,M,L
3 | S
4 | M,L
这是 Shirtsize 数据库结构:
id | size
------------
1 | S
2 | M
3 | L
这是过滤器的输入值获取代码
<div class="list-group">
<h3>Size</h3>
<?php
$query = "SELECT DISTINCT(shirtsize) FROM shirtsize ORDER BY id DESC";
$statement = $connect->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
foreach($result as $row)
{
?>
<div class="list-group-item checkbox">
<label>
<input type="checkbox" class="common_selector size" value="<?php echo $row['shirtsize']; ?>">
<?php echo $row['shirtsize']; ?>
</label>
</div>
<?php
}
?>
</div>
此代码从数据库中获取值:
if(isset($_POST["size"]))
{
$size_filter = implode("','", $_POST["size"]);
if (is_array($size_filter))
{
foreach ($size_filter as $value)
{
$query .= "AND size like('%".$value."%')";
}
}
else{
$query .= "AND size like('%".$size_filter."%')";
}
}
在这里我有像 s,m,l 这样的数据库,并且发布数据也像这样.
解决方案
直接从 MySQL 处理您当前的数据模型可能需要一些 SQL olympics。相反,我将提供一个更好的规范化数据结构:
id | size
------------
1 | S
1 | M
2 | S
2 | M
2 | L
3 | S
4 | M
4 | L
现在,如果您想获得不同的尺寸,您只需要:
SELECT DISTINCT(size) FROM shirtsize;
如果您想获得每个尺寸的计数id
,只需使用:
SELECT id, COUNT(*) AS cnt FROM shirtsize GROUP BY id;
通常,切勿将 CSV 数据存储在 SQL 表中。
推荐阅读
- linux - 如何在 bash 的 GUI 对话框中打印命令行菜单
- python - 如何将一行零添加到矩阵中?
- flutter - 如何从有状态小部件类 Flutter 访问小部件状态
- json - 为什么会出现“错误:无效 JSON:意外令牌”?(对此全新!)
- docker-compose - 测试容器:无法初始化 DockerComposeContainer
- imagemagick - ImageMagick 在 Singularity 容器内转换 OOMing
- sql - 从现有表创建表,但删除缺少数据 SQL 过多的字段
- vim - vim 初学者,为 vim-Latex 设置 .vimrc
- jquery - 无法使用 jquery 绑定网格视图
- python-3.x - pandas.merge 如何扩展?