У меня есть таблица со списком «кодов» и «групп». Мне нужно иметь возможность динамически создавать поле выбора с «кодами», сгруппированными с помощью optgroup. Я пытался связываться с некоторыми решениями онлайн, но не повезло.
ТАБЛИЦА ИНФОРМАЦИИ:
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>
Надо было подождать 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>";
Других решений пока нет …