我需要在我的电子商店中选择查询搜索。我有以下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”和与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;
答案 0 :(得分:1)
如果您使用的是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 演示
然后,您可以轻松explode()
value
列的值,同时迭代结果集并构建您的html。
答案 1 :(得分:0)
你可以举例如。制作2个嵌套循环:
另一种选择是选择all - 按param排序 - 并在PHP中询问param的差异以创建视图。
答案 2 :(得分:0)
//First select DISTINCT params
$result = mysql_query('SELECT DISTINCT param FROM YOUR_TABLE');
while($row = mysql_fetch_array($result))
{
// now fetch its values
$sub_result = mysql_query('SELECT * FROM YOUR_TABLE WHERE param = "'.$row['param'].'"');
while($sub_row = mysql_fetch_array($sub_result))
{
// generate your HTML here
}
}
替代方法
$last_param = '';
$result = mysql_query('SELECT * FROM YOUR_TABLE ORDER BY param');
while($row = mysql_fetch_array($result))
{
if($row['param'] != $last_param)
{
if($last_param != '')
{
?>
</select>
</div>
<?php
}
$last_param = $row['param'];
?>
<h3><?php echo $last_param; ?></h3>
<div class="vyber">
<select>
<?php
}
else
{
?>
<option><?php echo $row['value'];?></option>
<?php
}
}
答案 3 :(得分:0)
SQL中的简单查询
select param, value from table;
在HTML中,根据您的要求,我们可以使用json将结果传递给Javascript并从那里处理。使用Jquery代码shor
<div id="SelectHolder">
</div>
<script type="text/javascript">
var ResultArray = <?php echo json_encode(mysqlresult, JSON_UNESCAPED_SLASHES); ?>;
for(var i=0; i<ResultArray.length;i++)
{
if(document.getElementbyId(ResultArray[i][0])!=undefined && document.getElementbyId(ResultArray[i][0])!=null)
{
$('#'+ResultArray[i][0]).append('<option>'+ResultArray[i][1]+'</option>');
}
else
{
$('#SelectHolder').append('<select id="'+ResultArray[i][0]+'">'+ResultArray[i][0]+'</select>');
$('#'+ResultArray[i][0]).append('<option>'+ResultArray[i][1]+'</option>');
}
}
</script>