我需要一个选择查询来在我的电子商店中进行搜索。我有以下 mysql 表
id | product_id | param | value
1 | 123 | Head 1 | v1
2 | 456 | Head 1 | v2
3 | 789 | Head 1 | v3
4 | abc | Head 2 | v4
5 | def | Head 2 | v5
我需要选择不同的“param”以及与该参数对应的值。
示例:
Head 1 - v1, v2, v3
Head 2 - v4, v5
我需要将其添加到HTML:
<h3>Head 1</h3>
<div class="vyber">
<select>
<option>v1</option>
<option>v2</option>
<option>v3</option>
</select>
</div>
<h3>Head 2</h3>
<div class="vyber">
<select>
<option>v4</option>
<option>v5</option>
</select>
</div>
我的SQL:
SELECT p.*
FROM Parametre p
JOIN produkty pr ON p.ProduktID = pr.ProId
WHERE pr.KATEGORIA_URL = '$Kategoria'
GROUP BY p.Hodnota
ORDER BY p.Param, p.Hodnota
这是PHP代码
$pamet = '';
$konec = '';
while($ParamVyhladavanieResult = mysqli_fetch_object($ParamVyhladavanie)){
$Param = htmlspecialchars($ParamVyhladavanieResult->param);
$Hodnota = htmlspecialchars($ParamVyhladavanieResult->value);
$CisloHodnoty = $ParamVyhladavanieResult->id;
if (($ParamVyhladavanieResult->param)!=$pamet)
{
$pamet = $ParamVyhladavanieResult->param;
echo "
<h3>".$Param."</h3>
<div class=\"vyber\">
<select class=\"bielePozadie\" style=\"height:35px;color:#000;border:1px solid grey;outline:none;width:100%\">
<option value=\"0\">--nevybraté--</option>
";
$konec = "</select>
</div>";
}
echo " <option value=\"$CisloHodnoty\">".$Hodnota."</option>
";
}
echo $konec;
最佳答案
如果您使用 MySQL,则可以使用 GROUP_CONCAT()
SELECT param, GROUP_CONCAT(value) value
FROM table1
GROUP BY param
输出:
| PARAM | VALUE | |--------|----------| | Head 1 | v1,v2,v3 | | Head 2 | v4,v5 |
这里是SQLFiddle 演示
然后,您可以在迭代结果集并构建 html 时轻松地 explode()
value
列的值。
关于php - SQL,PHP - 如何选择标题和当前标题的所有子标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19634132/