view
View - add.php
<?php
  
include './ui.inc';    // Common View Helper functions
  
include './add_c.inc'// Controller
  
head();
?>
  <div id="tItems" class="ta">
   <table cellspacing="0" cellpadding="3" width="100%">
<?php foreach($items as $i=>$elem) {
        
$s $i%2;
        echo <<<EOB
    <tr id="{$elem['id']}" class="it$s">
        <td>
{$elem['id']}</td>
        <td>
{$elem['sdesc']}</td>
        <td>
{$elem['cat']}</td>
        <td align="right">\$
{$elem['fprice']}</td>
    </tr>

EOB;
      }
?>
   </table>
  </div><br />
  <form name="fItem" action="javascript:postForm('add.php','fItem')">
    <input type="hidden" name="formName" value="fItem" />
    <input type="hidden" name="id" id="f_id" value="" />
    <input type="text" class="f" id="f_sdesc" name="sdesc" size="39" 
           maxlength="128" value="Short Description" dir="LTR" />
    <select class="f" name="cat" id="f_cat" size="1">
      <option selected>Category</option>
<?php foreach($categories as $cat) echo <<<EOB
      <option value="{$cat}">{$cat}</option>

EOB;
?>
    </select>
    <input type="text" class="f" id="f_price" name="price" size="8"
           maxlength="128" value="Price" dir="RTL" /><br />
    <textarea style="width: 100%" name="ldesc" class="f" 
              id="f_ldesc" rows="5" wrap="soft">Details</textarea><br />
    <input name="f_submit" type="submit" value="Add Item" />
    <input type="reset" value="Clear" />
  </form>
<?php
  foot
();
?>
Controller - add_c.php
<?php
include './model/db.inc';
include 
'./model/items.inc';
$db = new items();
if(
$_SERVER['REQUEST_METHOD']=='POST') {
  
header("Content-type: application/json");
  
// Load an item entry from backend and send JSON request to populate form
  
if(isset($_POST['load_item'])) {
    
$entry $db->load($_POST['load_item']);
    
$entry[0]['submit'] = 'Modify Item';
    if(
$entry) echo json_encode(array('formName'=>$_POST['formName'],
                                      
'load_item'=>$entry));
    exit;
  }
  
// Validate form fields
  
foreach($_POST as $k=>$v) {
    if(
substr($k,0,5)=="desc_") {
      if(isset(
$_POST[substr($k,5)]) && $_POST[substr($k,5)]==$v) {
        echo 
json_encode(array('validate_error'=>'f_'.substr($k,5)));
        exit;
      }
    }
  }
  
// Save changes and display status message
  
$status "Failure";
  if(
$_POST['f_submit']=='Modify Item') {
     
$ret $db->modify($_POST);
     if(
$ret$status "Modified";
  } else {
     
$ret $db->insert($_POST);
     if(
$ret$status "Added";
  }
  echo 
json_encode(array('status'=>$status,
                         
'elem'=>'tItems',
                         
'reset'=>$ret,
                         
'formName'=>$_POST['formName']));
  exit;
}

// Initialize view data
if(!isset($categories)) load_list('categories');
if(!isset(
$item)) $item = array('cat'=>'');
$items $db->load();
?>