【问题标题】:How to add optgroup to dropdown loop?如何将 optgroup 添加到下拉循环?
【发布时间】:2011-12-28 02:14:29
【问题描述】:

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

在下面的示例中,类别为“国家”,子类别为“大陆”。我希望将这些国家/地区列在相应的大陆 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>

【问题讨论】:

    标签: php mysql select loops optgroup


    【解决方案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>
    

    【讨论】:

      【解决方案2】:
      <?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
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-07
        • 1970-01-01
        • 2021-04-08
        • 2011-08-08
        • 2022-11-20
        相关资源
        最近更新 更多