/** * generates html select dropdown list with options * if values is two dimensional then adds optgroup too * * @param string $name selectbox name and id * @param array $values options * @param mixed $selected selected option * @param array $attributes additonal attributes * * @return string html source with selectbox */ function html_selectbox($name, $values, $selected=NULL, $attributes=array()) { $attr_html = ''; if(is_array($attributes) && !empty($attributes)) { foreach ($attributes as $k=>$v) { $attr_html .= ' '.$k.'="'.$v.'"'; } } $output = '<select name="'.$name.'" id="'.$name.'"'.$attr_html.'>'."\n"; if(is_array($values) && !empty($values)) { foreach($values as $key=>$value) { if(is_array($value)) { $output .= '<optgroup label="'.$key.'">'."\n"; foreach($value as $k=>$v) { $sel = $selected==$k ? ' selected="selected"' : ''; $output .= '<option value="'.$k.'"'.$sel.'>'.$v.'</option>'."\n"; } $output .= '</optgroup>'."\n"; } else { $sel = $selected==$key ? ' selected="selected"' : ''; $output .= '<option value="'.$key.'"'.$sel.'>'.$value.'</option>'."\n"; } } } $output .= "</select>\n"; return $output; }
$values = array('animals'=>array( 1=>'dog', 'cat', 'horse' ), 'birds'=>array( 4=>'gull', 'eagle', 'sparrow') ); $selected = isset($_REQUEST['select']) ? $_REQUEST['select'] : 4; // selected item echo html_selectbox('select', $values, $selected, array('size'=>10));