2013-02-05 47 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)。