Как добавить optgroup в выпадающий цикл? - PullRequest
2 голосов
/ 13 ноября 2011

У меня есть цикл, который отображает список переменных в раскрывающемся списке (на основе отфильтрованной категории).Я хотел бы добавить в группы опций (используя подкатегории) из моей таблицы.Как я могу добавить это в часть моего цикла?

В приведенном ниже примере категория «страны», а подкатегория «континенты».Я бы хотел, чтобы страны были включены в соответствующую континентальную группу.

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

Ответы [ 2 ]

4 голосов
/ 13 ноября 2011
<?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 голос
/ 13 ноября 2011
<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>
...