2013-02-05 96 views
2

OPTGROUP我有下面的代码填充一个选择列表,但每个选项(“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> 

enter image description here

+1

[**请不要在新代码中使用'mysql_ *'函数**](http://bit.ly/phpmsql)。他们不再被维护[并被正式弃用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。如果您选择PDO, [这里是一个很好的教程](http://stackoverflow.com/a/14110189/1723893)。 –

+0

您可以通过link_title使用分组。也许它会帮助你。 –

回答

1

在这一行:

$current_subcategory = $row['subcategory']; 

不应该 “子类别” 是 “link_category_name”?当然,没有看到你的数据库模式,我不能开始回答这个问题的任何确定性,但问题似乎是记录列子类别的值不匹配link_category_name(因此为什么你的条件总是为true)。