2016-06-22 76 views
0

我有一个列表的“代码”和“组”。我需要能够动态创建一个选择框,其中使用optgroup对“代码”进行分组。我试图在网上尝试一些解决方案,但没有运气。PHP mySQL选择框与Optgroups

表信息:

CREATE TABLE `dtcodes` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`groups` varchar(30) NOT NULL, 
`code` varchar(5) NOT NULL, 
`name` varchar(40) NOT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=52 DEFAULT CHARSET=latin1 

groups|codes|name 
----------------------- 
Materials|M1|No Product 
Materials|M2|Low Brix 
Other Equipment|AV1|Test1 
Other Equipment|AV2|Test2 

的PHP的mysqli:

$sqlcodes = "SELECT * FROM dtcodes ORDER BY groups ASC"; 
    $resultcodes = mysqli_query($con, $sqlcodes); 

我的最终目标将是这样的。

<select> 
    <optgroup label="Materials"> 
     <option value="M1">No Product</option> 
     <option value="M2">Low Brix</option> 
    </optgroup> 
    <optgroup label="Other Equipment"> 
     <option value="AV1">Test1</option> 
     <option value="AV2">Test2</option> 
    </optgroup> 

回答

0

应该在发帖前等了20分钟才知道这个数字。

echo "<td><select class='form-control'>"; 
echo "<option>Select a code...</option>"; 
if ($resultcodes->num_rows > 0) { 
while($row = $resultcodes->fetch_assoc()) { 
    $group[$row['groups']][] = $row; 
} 
foreach ($group as $key => $values){ 
    echo '<optgroup label="'.$key.'">'; 
    foreach ($values as $value) 
    { 
     echo '<option value="'.$value['code'].'">'.$value['name'].'</option>'; 
    } 
    echo '</optgroup>'; 
} 
} else {} 
echo "</select></td>";