|
Posted by Jochem Maas on 01/10/06 18:36
Sue wrote:
> Hello,
>
> We have a form that contains a Select option for a listing of available
> dates for the user to choose from. Right now we have to manually change the
> dates within the form's Selection list as new dates become available to
> choose from. We currently store these available dates in our database, and
> am wondering if we can somehow extract these dates from the table to display
> in our form? This would eliminate alot of maintenance needed to this form.
> If anyone has any ideas as to reference material etc. that I may look which
> would give me an idea how to do this using PHP, I'd appreciate it!
I am guessing that your php skills are not that hot. filling a select box
is php 101.... here is function that generates a selectbox based on the given
'data' - now you have to go and figure out how to build the array $items
(which is passed as the first arg to this function) from the data in your table:
/** selectTag()
* generate an html select list using the given $items as options.
*
* @param array $items - list of items to display as options
* @param array $selected - value of select item in $items
* @param string $selectname - value of select tag's name attribute
* @param numeric $addnone - add a 'blank' option to the top of the list
* (different types depending on valuepassed)
* @param string $onchange - value of select tag's onchange attribute
* @param string $selectid - value of select tag's id attribute
* @param boolean $readonly - whether the select tag is readsonly or not
* @param array $readonly - whether the select tag is readsonly or not
* @param boolean $option_class_arr - optional CSS class names for individual option tags
* @param string $selectHTMLattribs - passthru HTML (attributes for the select tag)
*
* @return string
*/
function selectTag($items, $selected = '', $selectname = '',
$addnone = 0, $onchange = '', $selectid = '',
$readonly = 0, $option_class_arr = array(), $selectHTMLattribs = '')
{
// must have an array of items
if (!is_array($items)) {
return '';
}
// determine the value of the selected item
$selected = strtolower(trim($selected));
// list of options we will generate
$opts = array();
// add item with value 0 ?
$add_none_value = 0;
switch ( $addnone ) {
case '1': // item display = 'none'
$zero_id_item = getStr('None');
break;
case '3': // item display = '0'
$zero_id_item = getStr('zero_digit');
break;
case '2': // item display = 'all'
case '4': // item display = 'all <digit>' e.g. 'all 3'
$zero_id_item = getStr('All');
break;
default:
if(!empty($addnone) && $addnone != '0') {
if(is_array($addnone)) {
list($add_none_value, $zero_id_item) = @each($addnone);
} else {
// here we can drop in a custom 'blank' item:
$zero_id_item = $addnone;
}
}
break;
}
if (isset($zero_id_item)) {
$thisselected = ($selected > '') ? '' : ' selected="selected"';
// FIX THE NEXT LINE - BUT NOT IMPORTANT
$opts[] = '<option value="'.htmlentities($add_none_value, ENT_QUOTES).'"'
.$thisselected'>'.ucwords($zero_id_item).'</option>';
}
$thisselected = '';
foreach ($items as $value => $displayname) {
$thisselected = ($selected > '' && $selected == strtolower($value)) ? ' selected="selected"' : '';
$class_var = (isset($option_class_arr[$value])) ? ' class="' . $option_class_arr[$value] . '" ' : '';
$opts[] = '<option value="'.htmlentities($value, ENT_QUOTES)
.'"'.$thisselected.$class_var.'>'.ucwords($displayname).'</option>';
}
// various select tag attribute values
$onchange = (($onchange = trim($onchange)) > '')
? " onchange=\"$onchange\""
: ''
;
$id = ($selectid = strval($selectid))
? " id=\"{$selectid}\""
: ''
;
$readonly = ($readonly == 1)
? ' readonly="readonly"'
: ''
;
return "<select name=\"{$selectname}\" {$selectHTMLattribs}{$id}{$onchange}{$readonly}>".
join('', $opts).
'</select>';
}
>
> Thanks!
> Sue
>
Navigation:
[Reply to this message]
|