PHP:从MYSQL数据库创建多个选择下拉菜单?

问题描述:

我想从PHP数据库创建多个下拉列表。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> 

你应该试试这个: 我有解放军以下两个条件为if

1.)$op_name在while循环之外被分配一个值,以确保当$op_name与最后一个相同时,不会启动新的下拉select。 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>'; 

此代码应工作正常,但万一没有,分享你的输出,我会调整它有点以确保它给你想要的东西。

+0

这将创建一个选择菜单,但它只会在选择内部放置1个选项。 –

+0

不,它会检查'$ op_name'是否与以前相同,并将'$ op_value'作为当前选择的选项。 –

+0

这发生在'else'部分。 –

尝试此查询:

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>'; 
}