> I was thinking of inserting a check on each option, but I thought
there
> had to be a different way.
> I've received ideas of storing the option values in an array and
> creating a function to generate that dropdown by grabbing values out
of
> the array, so I want to go with that because that is more elegant,
which
> what I was after.
Yes, certainly that's a better method. You'll still be doing the same
thing, though, basically. You'll still do a comparison on every <option>
you create and if it matches, then insert the SELECTED text. It will
just be neater because it's all in a nice loop inside of a function.
Here are two functions I find useful. One is to make a <SELECT> with
various options from a global $_CONF array. The other is used to add a
new <option> to the <SELECT> (so you can add options when sometimes
needed, without modifying the $_CONF array).
Usage:
$_CONF['day'] = array('Monday','Tuesday','Wednesday');
$select = conf_select('day','Tuesday');
echo $select;
$new_select = add_option($select,'Any');
echo $new_select;
//$select and $new_select will contain the
//HTML to create the drop down select boxes
Code:
//creates a html select drop down box from a
//$_CONF array matching the passed key
//if $make_array == 1, then an [] will be appended
//onto the select name so that the results are an array
//if $make_multi is set to something greater than zero,
//the select will be made MULTIPLE and the SIZE will
//be set to the value of $make_multi.
//If $name is passed, that value will be used as the NAME
//of the select, instead of the "key" of the $_CONF array
function conf_select($conf_key, $selected = "", $make_array=0,
$make_multi=0, $name="")
{
global $_CONF;
$retval = "";
if(isset($_CONF[$conf_key]))
{
if(strlen($name) == 0)
{ $name = $conf_key; }
$retval .= "<select name='" . $name;
if($make_array == 1) { $retval .= "[]"; }
$retval .= "' class='text_box'";
if($make_multi > 0)
{ $retval .= " multiple size='$make_multi'>\n"; }
else
{ $retval .= " size='1'>\n"; }
foreach($_CONF[$conf_key] as $value)
{
$retval .= "<option value='" . $value . "'";
if(strcasecmp($value,$selected)==0)
{ $retval .= " selected"; }
$retval .= ">" . $value . "</option>\n";
}
$retval .= "</select>\n";
}
else
{
$retval = "Invalid Conf Key";
}
return $retval;
}
//Adds in an <option> to the <select> box
//in the $select_text
function add_option($select_text, $option)
{
$retval = preg_replace("/>/",">\n<option
value=\"$option\">$option</option>\n",$select_text,1);
return $retval;
}
---John W. Holmes...
PHP Architect - A monthly magazine for PHP Professionals. Get your copy
today. http://www.phparch.com/
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php