See it in action here: click
<?

// include database functions
//$db = db_connect();


// first we define all the elements as a multi-dimensional array
// we define what each elements type is (select,text,textarea)
// and what it's additional parameters are (size,style,class,onclick,etc...)
$elements = array(
    
"salutation"=>array(
        
"type"=>"select",
        
// attributes are an associative array
        
"attributes"=>array(
            
"mr"=>"Mr.",
            
"ms"=>"Ms.",
            
"miss"=>"Miss.",
            
"mrs"=>"Mrs.",
        ),
    ),
    
"first_name"=>array(
        
"type"=>"text",
        
"size"=>40,
        
"required"=>true,
        
"onclick"=>"alert('test');",
        
"style"=>"border:2px solid #CCCCCC; padding:4px; font-size:15px;",
    ),
    
"last_name"=>array(
                
"type"=>"text",
                
"size"=>70,
                
"required"=>true,
        ),    
);

$errors=array();

if(
$_REQUEST['save']){
    
// do sql here...
    
$sql "INSERT INTO foo SET insert_date=NOW()";
    foreach(
$elements as $element_name => $el){
        if(
$el['required']&&!$_REQUEST[$element_name]){
            
$errors[]="Required field missing: $element_name";
        }else{
            
$sql .= ", `$element_name` = '".addslashes($_REQUEST[$element_name])."'";
        }
    }
    if(!
$errors){
        
// call sql:
        // $res = query($sql,$db);
        // $member_id= mysql_insert_id($db);
        // redirect after post back
        
header("Location: example.php?member_id=$member_id");
        exit;
    }
}

global 
$elements;
function 
fb($elem){
    global 
$elements;
    
$el $elements[$elem];
    if(!
$el['name'])$el['name']=$elem;
    if(!
$el['value']&&$_REQUEST[$el['name']])$el['value']=$_REQUEST[$el['name']];
    switch(
$el['type']){
    case 
"textarea":
       
?>
            <textarea <? foreach($el as $key=>$val){ if($key=="value")continue; ?> <?=$key;?>="<?=$val;?><? ?>><?=$el['value'];?></textarea>
            <?
            
break;
        case 
"text":
            
?>
            <input <? foreach($el as $key=>$val){ ?> <?=$key;?>="<?=$val;?><? ?>>
            <?
            
break;
        case 
"select":
            
?>
            <select  <? foreach($el as $key=>$val){ if($key=="attributes")continue; ?> <?=$key;?>="<?=$val;?><? ?>>
        <option value="">- select -</option>
            <? foreach ($el['attributes'] as $key=>$val) {
                
?>
                <option value="<?=$key;?><? if($el['value']==$key){ ?> selected <? ?>><?=$val;?></option>
                <?
            
}
            
?>
            </select>
            <?
            
break;
    }
    return 
"";
}


if(
$errors){
    
?>
    <div class="errors">
    <ul>
    <? foreach($errors as $e){ ?>
    <li><?=$e;?></li>
    <? ?>
    </ul>
    </div>
    <?
}

?>

<form action="?save=true" method="post">

Salutation: <?=fb("salutation");?> <br>
First Name: <?=fb("first_name");?> <br>
Last Name: <?=fb("last_name");?> <br>

<br><br>
First name and last name are required fields. Try clicking save without filling them in.
<br><br>

<input type="submit" name="save_form" value="Save">

</form>
<br>
<a href="example2.php">View code</a>