我尝试使用PHP从mysql数据库创建多个下拉列表。
基本上,下拉列表所需的所有数据都在mysql数据库和不同列中的一个表中。
解释一下,这就是它在mysql中的样子:
表名:drop_options
表格结构:
id sub_cat_name op_name op_value
1 apple colour red
2 apple colour yellow
3 apple colour green
4 apple size small
5 apple size big
6 apple size medium
etc etc....
所以我需要创建这样的下拉选项:
<select name="colour">
<option>red</option>
<option>yellow</option>
<option>green</option>
</select>
<select name="size">
<option>small/option>
<option>medium</option>
<option>big</option>
</select>
但是我的代码如下所示,它会为每个结果创建1个选择,并将选项分成不同的选项!
示例如下:
<select name="size">
<option>small/option>
</select>
<select name="size">
<option>medium</option>
</select>
<select name="size">
<option>big</option>
</select>
这是我的代码:
$drops ="";
$sql44 ="SELECT * FROM drop_options WHERE sub_cat_name='$currentproduct'";
$query44 = mysqli_query($db_conx, $sql44);
$productCount44 = mysqli_num_rows($query44); // count the output amount
if ($productCount44 > 0) {
while($row44 = mysqli_fetch_array($query44, MYSQLI_ASSOC)){
$op_name = $row44["op_name"];
$op_value = $row44["op_value"];
/*foreach($op_value as $opval){
$dropsv ='<option>'.$op_value.'</option>';
}*/
$drops .='<div class="col-md-3 col-xs-12">
<p class="margin-bottom-zero">'.$op_name.'</p>
<select name="'.$op_name.'" class="selectpicker">
<option>Select</option>
<option>'.$op_value.'</option>
</select>
</div>';
}
} else {
$drops ='';
}
有人可以就此问题提出建议吗?
任何帮助都将不胜感激。
提前致谢
编辑:
<div class="col-md-3 col-xs-12">
<p class="margin-bottom-zero">Material</p>
<select name="Material" class="selectpicker">
<option>Select</option>
<option>450gsm silk</option></select></div><option>350gsm silk</option>
</div>
</div>
</div>
答案 0 :(得分:1)
你应该试试这个:
我在下面放了两个if
条件。
1。)$op_name
在while循环之外分配了一个值,以确保select
与最后一个相同时不会启动新的下拉列表$op_name
。
2.)$first
确保我们在每个下拉列表实例后关闭下拉列表和div标签。
$drops ="";
$sql44 ="SELECT * FROM drop_options WHERE sub_cat_name='$currentproduct'";
$query44 = mysqli_query($db_conx, $sql44);
$productCount44 = mysqli_num_rows($query44); // count the output amount
if ($productCount44 > 0)
{
$op_name = '';
$first = 0;
while($row44 = mysqli_fetch_array($query44, MYSQLI_ASSOC))
{
$op_value = $row44["op_value"];
if($op_name != $row44["op_name"])
{
if($first)
{
$drops .='</select></div>';
}
$op_name = $row44["op_name"];
$drops .='<div class="col-md-3 col-xs-12">
<p class="margin-bottom-zero">'.$op_name.'</p>
<select name="'.$op_name.'" class="selectpicker">
<option>Select</option>
<option>'.$op_value.'</option>';
}
else
{
$drops .= '<option>'.$op_value.'</option>';
}
$first = 1;
}
}
else
{
$drops ='';
}
$drops .='</select></div>';
此代码应该可以正常工作,但万一它不会分享您的输出,我会稍微调整一下以确保它能满足您的需求。
答案 1 :(得分:0)
尝试此查询:
SELECT sub_cat_name, op_name, GROUP_CONCAT(op_value)
FROM drop_options
WHERE sub_cat_name='$currentproduct'
GROUP BY sub_cat_name, op_name
并且foreach循环:
foreach (explode(',', $op_value) as $select_value) {
echo '<option>'.$select_value.'</option>';
}