我有以下代码填充选择列表,但是每个选项(“link_title”)在列表中的上方都有一个optgroup标题,而不是将选项分组为optgroup标题:

<?php
$query = mysql_query("SELECT * from link, link_category WHERE link.link_category_fk = link_category.link_category_pk ORDER BY link_category_fk, link_title ASC");
$current_subcategory = "";
while ($row = mysql_fetch_array($query)){

   if ($row["link_category_name"] != $current_subcategory) {
       if ($current_subcategory != "") {
           echo "</optgroup>";
       }
       echo '<optgroup label="'.$row['link_category_name'].'">';
       $current_subcategory = $row['subcategory'];
   }
   echo '<option value="'.$row['link'].'">'.$row['link_title'].'</option>'."\n";
 }
 echo "</optgroup>";
?>
          </select>

最佳答案

在这一行中:

$current_subcategory = $row['subcategory'];

“子类别”不应该是“链接类别名称”吗?当然,在没有看到您的数据库模式的情况下,我无法确定地开始回答这个问题,但问题似乎是记录列子类别的值与链接类别名称的值不匹配(因此,为什么您的if条件总是真的)。

关于php - 数据库中带有optgroup的动态选择列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14700711/

10-12 13:12