weetat wrote:
> Hi all ,
>
> I have a <SELECT> for country in the php file . I would like to load
> the country and city belong to the country dynamically from the database.
>
> Anyone have ideas how to do it ?
below is a function that generates a select tag based on the
criteria you give it, the first argument, $items, you give it is the most
important - it should contain the data used to populate the list where by each
key in the array is the value of an <OPTION> and the corresponding value in
the array is the display text of corresponding <OPTION>.
to create the $items array you would perform a query on your database and
loop the results, e.g. (untested query code)
$res = mysql_query('SELECT id, name FROM foo ORDER BY name');
if ($res && mysql_numrows($res)) {
while ($row = mysql_fetch_assoc($res)) {
$items[ $row['id'] ] = $row['name']
}
}
here is the function (linewrapping in the email may have screwed the code layout
a bit) - this function is quite old and by no means perfect (Richard Lynch gave
good
argument as to the possible 'cons' of such a fucntion, but nonetheless here it
is):
/** 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 selected 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 value passed)
* @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 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
$class_var = (false &&
isset($option_class_arr[IAJ_OPTION_ZERO_ITEM_CLASS_VALUE] )) ? ' class="' .
$option_class_arr[IAJ_OPTION_ZERO_ITEM_CLASS_VALUE] . '"' : '';
$opts[] = '<option value="'.htmlentities($add_none_value,
ENT_QUOTES).'"
'.$thisselected.$class_var.'>'.$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.'>'.$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}>\n".
join("\n\t", $opts).
"\n</select>";
}
>
> Thanks
> - weetat
>
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php