Popatrz na przykładowe rozwiązanie:
$kat_list = "";
$_GET['kat_id'] = '';
$result = dbquery("SELECT kat_id, kat_kategoria FROM kategorie WHERE kat_cat='0' ORDER BY kat_order");
if (dbrows($result) != 0) {
while ($data = dbarray($result)) {
$result2 = dbquery("SELECT kat_id, kat_kategoria FROM kategorie WHERE kat_cat='".$data['kat_id']."' ORDER BY kat_order");
if (dbrows($result2) != 0) {
$kat_list .= "<optgroup label='".$data['kat_kategoria']."'>\r\n";
while ($data2 = dbarray($result2)) {
$kat_list .= "<option value='".$data2['kat_id']."'>".$data2['kat_kategoria']."</option>\r\n";
}
$kat_list .= "</optgroup>\r\n";
}
}
}
echo '<select name="kat_id[]" id="kat" class="textbox" style="width: 150px" size="5" multiple>'.$kat_list.'</select>';
Nie wiem, jaką masz strukturę bazy, to powyższe jest dla:
kategorie:
kat_id int(11) // ID
kat_kategoria varchar(255) // nazwa
kat_cat int(11) // ID rodzica
kat_order int(11) // kolejność