I edited form_dropdown() function (system/helpers/form_helper.php) that can be useful.
<?php
/**
* Drop-down Menu
*
* @access public
* @param string
* @param array
* @param string
* @param string
* @return string
*/
function form_dropdown($name = '', $options = array(), $selected = '', $extra = '')
{
if ($extra != '') $extra = ' '.$extra;
$form = '<select name="'.$name.'"'.$extra.">\n";
foreach($options as $key => $val)
{
if(is_array($val))
{
$form .= '<optgroup label="'.$key.'">'."\n";
foreach ($val as $key2 => $val2)
{
$sel = ($selected != $key2) ? '' : ' selected="selected"';
$form .= '<option value="'.$key2.'"'.$sel.'>'.$val2."</option>\n";
}
$form .= "</optgroup>\n";
}
else
{
$sel = ($selected != $key) ? '' : ' selected="selected"';
$form .= '<option value="'.$key.'"'.$sel.'>'.$val."</option>\n";
}
}
$form .= '</select>';
return $form;
}
?>
<?php
$so = array(
'Windows' => array(
'W95' => '95',
'W98' => '98',
'WNT' => 'NT',
'W2000' => '2000',
'WXP' => 'XP'
),
'Linux' => array(
'LRH' => 'RedHat',
'LDeb' => 'Debian',
'LSuSE' => 'SuSe',
'LMDK' => 'Mandrake'
)
);
echo form_dropdown('so', $so);
?>
<select name="so">
<optgroup label="Windows">
<option value="W95">95</option>
<option value="W98">98</option>
<option value="WNT">NT</option>
<option value="W2000">2000</option>
<option value="WXP">XP</option>
</optgroup>
<optgroup label="Linux">
<option value="LRH">RedHat</option>
<option value="LDeb">Debian</option>
<option value="LSuSe">SuSe</option>
<option value="LMDK">Mandrake</option>
</optgroup>
</select>
