Php 如何将optgroup添加到下拉循环中?

Php 如何将optgroup添加到下拉循环中?,php,mysql,select,loops,optgroup,Php,Mysql,Select,Loops,Optgroup,我有一个循环,在下拉框中显示变量列表(基于过滤的类别)。我想从我的表中添加选项组(使用子类别)。如何将其添加到循环的一部分 在下面的示例中,类别为“国家”,子类别为“大陆”。我希望这些国家被列在相应的大陆optgroup中 <select id="country"> <option value="">Select</option> <?php $c_sth = $c_dbh->query ("SELECT category, su

我有一个循环,在下拉框中显示变量列表(基于过滤的类别)。我想从我的表中添加选项组(使用子类别)。如何将其添加到循环的一部分

在下面的示例中,类别为“国家”,子类别为“大陆”。我希望这些国家被列在相应的大陆optgroup中

<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>

挑选

挑选

<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>
<?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
?>