[PHP] SELECT tag and PHP

2006-06-16 Thread weetat

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 ?

Thanks
- weetat

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] SELECT tag and PHP

2006-06-16 Thread Jochem Maas
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