PHP Form Helper — Quick & Easy SELECT Dropdowns
One of the most time-consuming parts of my job is creating web forms. PHP web forms generally aren't difficult but they take a lot of time. Any time I can save when creating web forms is great, so I've created a helper function for creating HTML <select> elements.
The Code
function form_select($name,$options,$selected = '',$params = '') { $return = '<select name="'.$name.'" id="'.$name.'"'; if(is_array($params)) { foreach($params as $key=>$value) { $return.= ' '.$key.'="'.$value.'"'; } } else { $return.= $params; } $return.= '>'; foreach($options as $key=>$value) { $return.='<option value="'.$value.'"'.($selected != $value ? '' : ' selected="selected"').'>'.$key.'</option>'; } return $return.'</select>'; }
The Explanation
The function accepts four arguments, two required, two optional. Arguments include:
- $name - name (doubles as the id) of the select element. Required.
- $options - a key=>value array of keys (Wisconsin) and values (ex: WI). Required.
- $selected - the previously selected value (ex: WI). Optional.
- $params - an key=>value array or string ('onchange="alert('you changed me!');"'). Optional.
The Usage
echo 'State: ', form_select('state', array('Michigan'=>'MI', 'Minnesota'=>'MN', 'Wisconsin'=>'WI', 'Wyoming'=>'WY'),'WY', 'onchange="alert(\'Change\');"');
Would you use the script? Do you know any ways to improve it? Share!
A very handy function. However a lot of frameworks these days offer form helper objects which have something like this already defined… and other handy things too.
I have created a simple form creator script (I need to polish it and release it). It does the following:
Step 1: Textarea that accepts comma delimited input for input names (First Name, Last Name, Address, etc.)
Step 2: Presented with a form that lists all of the above inputs with radio options for type of form (Text Box, Radio, Password, Hidden, etc.)
Step 3: Prints out the fields into a textbox for copy-paste.
*I plan on making a dropdown so you can choose the ‘template’ you wish to populate the form with. Right Now it writes out:
.label for=’input name(lowercased and underscored)’>input name(uppercased)-label>
.input type=’etc’ name =’input name(lowercased and underscored)’ value=” />
.br class=’clear’ />
This makes creating a css form with multiple values take less than 5 minutes. Then you can do some quick CSS tweaks and be done with it.
Sounds good Chuck — be sure to let me know when it’s released!
an example of usage would make this more friendly.
David,
Thank you very much for the helper function. I will use it in my projects.
In the earlier posts, I read that @Chuck mentioned about a simple form creator script. In fact, such a tool already exists and I use that for my projects. This tool is called: Form & PHP/MySQL Generator (FPMG) & you can visit it at: http://www.fpmg.co.cc
So I don’t see a point in reinventing the wheel, unless the functionality that @Chuck wants to implement, differs greatly.