PHP:从MYSQL数据库创建多个选择下拉列表?
我正在尝试使用PHP从mysql数据库创建多个下拉列表 基本上,下拉列表所需的所有数据都位于mysql数据库中的一个表中,并位于不同的列中 为了解释这一点,以下是mysql中的情况: 表名称:drop\u选项 表结构:PHP:从MYSQL数据库创建多个选择下拉列表?,php,mysql,Php,Mysql,我正在尝试使用PHP从mysql数据库创建多个下拉列表 基本上,下拉列表所需的所有数据都位于mysql数据库中的一个表中,并位于不同的列中 为了解释这一点,以下是mysql中的情况: 表名称:drop\u选项 表结构: id sub_cat_name op_name op_value 1 apple colour red 2 apple colour yellow 3 apple colour green
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>
但在我下面的代码中,它会为每个结果创建一个select,并在不同的select中分离选项
例如:
<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 ='';
}
有人能就这个问题提出建议吗
任何帮助都将不胜感激
提前谢谢
编辑:
请尝试以下查询:
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>';
}
你应该试试这个:
我在下面设置了两个if条件
一,$在while循环之外为op_name分配一个值,以确保在$op_name与上一个相同时不会启动新的下拉选择。
2. $首先确保在每个下拉实例之后关闭下拉列表和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>';
这段代码应该可以正常工作,但万一不行,请共享您的输出,我会稍微调整一下,以确保它能满足您的需要。这将创建一个选择菜单,但它只会在选择菜单中放置一个选项。否,它将检查$op_名称是否与以前相同,并将$op_值作为选项放在当前的select中。这发生在else部分。是的,我理解,但当我测试它时,它会将一个选项放在select菜单中,将其余选项放在它之外。您可以在此处共享生成的html吗?
$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>';