2011-11-13 2 views
2

私は、(フィルタリングされたカテゴリに基づいて)ドロップダウンボックスに変数のリストを表示するループを持っています。私はテーブルからオプショングループ(サブカテゴリを使用)を追加したいと思います。ループの一部にこれをどのように追加できますか?ドロップダウンループにoptgroupを追加するには?

下の例では、カテゴリは「countries」で、サブカテゴリは「continents」です。私は各国を適切な大陸オプトグループに掲載したいと思います。

<select id="country"> 
    <option value="">Select</option> 

<?php 
    $c_sth = $c_dbh->query ("SELECT category, subcategory, display, value 
           FROM constants WHERE category='Countries' 
           ORDER BY display"); 
    while ($row = $c_sth->fetch()) { 
     echo '<option value="'.$row['value'].'">'.$row['display'].</option>'."\n"; 
    } 
?> 

</select> 

答えて

4
<?php 
$c_sth = $c_dbh->query ("SELECT category, subcategory, display, value 
          FROM constants WHERE category='Countries' 
          ORDER BY subcategory, display"); # group by category first 
$current_subcategory = ""; 
while ($row = $c_sth->fetch()) { 
    if ($row["subcategory"] != $current_subcategory) { # if category has changed 
     if ($current_subcategory != "") { # if there was already a category active 
      echo "</optgroup>"; # close it 
     } 
     echo '<optgroup label="'.$row['subcategory'].'">'; # open a new group 
     $current_subcategory = $row['subcategory']; 
    } 
    echo '<option value="'.$row['value'].'">'.$row['display'].</option>'."\n'; 
} 
echo "</optgroup>"; # close the final group 
?> 
1
<select id="country"> 
    <option value="">Select</option> 

<?php 
    $c_sth = $c_dbh->query ("SELECT category, subcategory, display, value 
           FROM constants WHERE category='Countries' 
           ORDER BY subcategory, display"); 

    $lastgroup = ""; 
    while ($row = $c_sth->fetch()) { 
     if ($lastgroup != $row['subcategory']) 
     echo '<optgroup label="'.$row['subcategory'].'">\n'; 
     echo '<option value="'.$row['value'].'">'.$row['display'].'</option>\n'; 
     if ($lastgroup != $row['subcategory']) 
     echo '</optgroup>\n'; 
     $lastgroup = $row['subcategory']; 
    } 
?> 

</select> 
関連する問題