Perhaps my function may help you... Use it like this: <td class="label<?php if ($submit_new) echo ' required_txt'; ?>"><label for="problem_category">Problem Category:</label></td> <td><?php select_box_array(1, 'problem_category', get_array('problem_category'), true, false, $_REQUEST['problem_category']); ?></td> Or with the double_up_uh_uh() function to save redundant array key/values: <td class="label"><label for="unit_opened">Unit opened for investigation:</label></td> <td><?php select_box_array(1, 'unit_opened', double_up_uh_uh(array('Yes', 'No')), true, false, $_REQUEST['unit_opened']); ?></td> /** * Dynamically generates a select box from a $key => $value array. * * the array can be generated on the fly or stored. * the key is the OPTION value and the $value is the name shown in the box. * if there is only a key, then that is used as the value too. * very useful for boolean type listboxes too. * also useful to save DB queries for supporting tables. * * Tooltips do NOT work in IE6. sorry. blame Microsoft for not following W3 standards... * * @access public * @return mixed integer # of elements in select box or string of actual select box if $echo == true. * @param integer $size usually 1, but the select box can be any height. * @param string $name the NAME='$name' parameter of a SELECT tag. * @param array $listArray The actual key => value formatted array. * @param boolean $blank add the extra 'empty' <OPTION VALUE=''>. * @param boolean $auto onChange will cause a form submit if true. * @param string $MatchToThis sometimes it is useful to match $name to something like $_GET['name'] instead. it is array safe too! * @param string $extratags Any extra CLASS='' or MULTIPLE or whatever to put in the <SELECT ...> tag. * @param boolean $indent When using an array of arrays, the sub arrays will be grouped using <OPTGROUP>. If you want to disable the indent when $size is greater than 1, change this to false. * @param boolean $echo Output the selectbox in place (true) or return it as a string * @see select_box_sql() * @author Daevid Vincent [daevid@] */ function select_box_array($size=1, $name, $listArray, $blank = false, $auto = false, $MatchToThis = false, $extratags = false, $indent = true, $echo = true) { global $$name; $items = 0; if (intval($size) < 1) $size = 1; if ($MatchToThis === false) $MatchToThis = $$name; $out = ''; $out .= "\n<select size=\"".$size."\" name=\"".$name."\" id=\"".$name."\""; if ($auto) $out .= ' onChange="this.form.submit(); return true;"'; if ($extratags) $out .= " ".$extratags; //if ($size > 1) $out .= ' onmouseover="selectBoxTitle(this);"'; $out .= ">\n"; if (count($listArray) > 0) { if( ! is_bool( $indent ) || ( ! $indent && ( $size == 1 ) ) ) $indent = true; if ($blank && is_bool($blank) ) { $out .= "\n<option value=\"\"></option>\n"; } elseif ($blank && is_string($blank)) { $out .= "\n<option value=\"\" title=\"" . $blank . "\" ".((selected_if_in_array($MatchToThis, '') || '' === $MatchToThis) ? 'selected' : '').">".$blank."</option>\n"; } foreach($listArray as $key => $val) { // Check for selectbox sub-headings. if( is_array($val) ) { $out .= ( $indent ? "\t<optgroup LABEL=\"" . stripslashes( $key ) . "\">\n" : "\t<option value=\"\" CLASS=\"selectbox-ghosted\" disabled=\"disabled\">--- " . trim( preg_replace( '/^-*(.*?)-*$/', '\\1', stripslashes( $key ) ) ) . " ---</option>\n"); foreach( $val as $subkey => $subval ) { $out .= "\t\t<option value=\"" . $subkey . "\" title=\"" . stripslashes( $subval ? $subval : $subkey ) . "\""; if (selected_if_in_array($MatchToThis, $subkey) || $subkey == $MatchToThis) $out .= ' selected="selected"'; if ($size > 1) $out .= ' onmouseover="this.title = this.text;"'; $out .= '>'; $out .= stripslashes( $subval ? $subval : $subkey ); $out .= "</option>\n"; } $out .= (($indent) ? "\t</optgroup>\n" : ''); } elseif( 0 == strncmp( $val, "---", 3 ) ) { $out .= "<option value=\"\" disabled class='selectbox-ghosted'>".stripslashes($val)."</option>\n"; } else { $out .= "\t<option value=\"".$key."\" title=\"" . stripslashes( (($val)?$val:$key) ) . "\""; if (selected_if_in_array($MatchToThis, $key) || $key == $MatchToThis) $out .= " selected"; //if ($size > 1) $out .= " title=\"".stripslashes($val)."\""; if ($size > 1) $out .= ' onmouseover="this.title = this.text;"'; $out .= '>'; $out .= stripslashes( $val ? $val : $key ); $out .= "</option>\n"; } } //foreach } //if count(listArray) $out .= "</select>\n"; if ($echo) { echo $out; return count($listArray); } else return $out; } /** * @return mixed 'selected' or false * @param array $haystack the array that contains the selected items * @param string $needle the item in the $haystack we're looking for. * @author Daevid Vincent [daevid@] */ function selected_if_in_array(&$haystack, $needle) { if ( !is_array($haystack) ) return false; return ( in_array($needle, $haystack) ) ? 'selected' : false; } /** * Take an array of unique values and make the keys the same as the value. * Useful for select boxes for example. * * @access public * @return mixed * @param array $myArray * @author Daevid Vincent [daevid@] */ function double_up_uh_uh($myArray) { foreach($myArray as $k => $v) $tmp[$v] = $v; return $tmp; } /** * Returns the first non-empty value in the array, * Works much like mySQL's function, * except this is an array passed in rather than a list of parameters. * * @access public * @return mixed * @param array $myArray * @author Daevid Vincent [daevid@] */ function coalesce($myArray) { foreach($myArray as $a) if ($a) return $a; } > -----Original Message----- > From: Don Wieland [mailto:donw@xxxxxxxxxxxxxxxxxx] > Sent: Monday, November 09, 2009 2:59 PM > To: php-general@xxxxxxxxxxxxx > Subject: Build Categories based on an static Array > > I am trying to build a SELECT MENU (with categories). I cant seem to > get the syntax correct. Little help: > > // Get Areas values for MENU > $AreasList = "<select name=\"Area_id\"><option > value=''></option>"; > > $queryR = array(0 => 'Domestic','International','Special'); > while($rowR = $queryR->fetch_assoc()) { > > $AreasList .= "<optgroup label=\"{$rowR['Region_Name']}\">"; > $Area_Type = $rowR['Area_Type']; > > > $query2 = "SELECT Area_id,Area FROM Areas WHERE > `Area_Type`='$Area_Type' ORDER BY Area"; > $results2 = $db->query($query2) or die("No Area found."); > > while($row2 = $results2->fetch_assoc()) { > $AreasList .= "<option > value='{$row2['Area_id']}'>{$row2['Area']}</option>"; > } > $AreasList .= "</optgroup>"; > } > > $AreasList .= "</select>"; > > > > Don Wieland > D W D a t a C o n c e p t s > ~~~~~~~~~~~~~~~~~~~~~~~~~ > donw@xxxxxxxxxxxxxxxxxx > Direct Line - (949) 305-2771 > > Integrated data solutions to fit your business needs. > > Need assistance in dialing in your FileMaker solution? Check out our > Developer Support Plan at: > http://www.dwdataconcepts.com/DevSup.html > > Appointment 1.0v9 - Powerful Appointment Scheduling for > FileMaker Pro > 9 or higher > http://www.appointment10.com > > For a quick overview - > http://www.appointment10.com/Appt10_Promo/Overview.html > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php