2015-09-28 136 views
-1

我想從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> 

回答

1

你應該試試這個: 我有解放軍以下兩個條件爲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'部分。 –

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>'; 
} 
相關問題