> From: Nathan Cook [mailto:[EMAIL PROTECTED]] 
> Sent: Thursday, July 25, 2002 12:34 PM
> Subject: [PHP] New way to make select boxes auto select
> 
> 
> You may already be doing it like this, but I think I found a 
> new way to
> make select boxes auto-select (what data they put in) a lot 
> easier. All you
> have to do is put a variable in each select tag that is equal 
> to the value
> of the select option i.e.: <option value=teacher $teacher> -- 
> then all you
> have to do is base the variable on that <select 
> name=interest> $$interest =
> "selected"; quick and easy with out having to loop through an 
> if elseif
> statement.  Let me know if you like that method or have any 
> objections.

I use these functions which do something similar.  The first function accepts an array 
of names for the option, and returns a string of all of the <options> but not the 
<select> tags.  The ones to be selected have a value of 'selected'.  The second 
function accepts a code table, of say states or provinces, and a value that is to be 
selected, and returns the <options>.  Both are only for single selected values, but 
could be easily extended.  
Usage:

// 
-------------------------------------------------------------------------------------------
// buildSelect -- return a Select box named $selectName based on key value array 
$selectArray
//<select name="states">
// <?php
// $arr = array('MD'=>'selected','DC'=>'','VA'=>'');
// echo buildSelect($arr);
// ?>
// </select>
// 
-------------------------------------------------------------------------------------------
function buildSelect($selectArray) {
        $str = '';
        $count = count($selectArray);
        for ($i=0;$i<$count;++$i) {
                list($key,$selected) = each($selectArray[$i]);
                $selectValue = htmlspecialchars($key);
        $str .= "<option value=\"$selectValue\" $selected>$key</option>\n";
        }
    return($str);
}
// 
-------------------------------------------------------------------------------------------
// setupSelect -- Read table $table from database $db, load all values of $field, and 
build 
//                a select box from this list named $selName
// <select name="states">
// <?php
// echo setupSelect($db,'states','stateAbbr','stateName','MD');
// ?>
// </select>
// 
-------------------------------------------------------------------------------------------
function setupSelect($db,$table,$field,$orderBy,$value) {
        $sql = "SELECT " . $field . " from " . $table;
        if (empty($orderBy)) {
                $orderBy = $field;
        }
        $sql .= " order by " . $orderBy;
        $result = mysql_query($sql,$db) or 
die(log_mysql_error($sql,__FILE__,__LINE__));
        while ($row = mysql_fetch_array($result)) {
                $columnData = $row[$field];
                if (!empty($columnData)) {
                        $selected = ($columnData == $value ? "selected" : "");
                        $selArray[] = array($columnData => $selected);
                }
        }
        if (count($selArray) != 0) {
                return(buildSelect($selArray));
        }
}
// -------------------------------------------------------------------------
// logs to syslog define the constant DISPLAY_MYSQL_ERRORS as 1 
// if you want to see errors in browser too
// usage: $result = mysql_query($sql,$db) 
//                  or die(log_mysql_error($sql,__FILE__,__LINE__));
// -------------------------------------------------------------------------
function log_mysql_error($sql='',$file='',$line=0) {
    $msg="{$_SERVER['PHP_SELF']}: (FILE=$file) (LINE=$line)\n";
    $msg .= "MySQL Says: " . mysql_error() . "\n";
    if (!empty($sql)) {
        $msg .= "SQL Statement was: $sql";
      }
        error_log($msg,0);
        if (1 == DISPLAY_MYSQL_ERRORS) {
                $msg=nl2br($msg);
            echo "<br>$msg<br>\n";
        }
        exit;
}

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

Reply via email to