> 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

Reply via email to