Login   Register  
PHP Classes
elePHPant
Icontem

File: contacts_sample.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of jerry mattsson  >  dbff  >  contacts_sample.php  >  Download  
File: contacts_sample.php
Role: Example script
Content type: text/plain
Description: Simple contact list and form
Class: dbff
Read and write flat file databases in CSV format
Author: By
Last change: Added javascript sample
Date: 2006-11-09 04:26
Size: 10,009 bytes
 

Contents

Class file image Download
<?php
/*  Name: contacts_sample.php
    Author: Jerry Mattsson
    Created oct-06 Jerry Mattsson, www.Timehole.com
    Functions for a simple contact list and edit form using dbff
    nov-06, Added javascript field check to edit form.
        If you do not want this, remove the require row for "dbff_jsChk.php"
        and the "Js check functions" code in the form.
*/
require_once "dbff.php";
require_once 
"dbff_jsChk.php";

$action 'list';
if (isset(
$_POST['cid']))     $cont_id $_POST['cid'];
if (isset(
$_POST['update']))  $action 'update';
if (isset(
$_POST['edit']))    $action 'edit';
if (isset(
$_POST['delete']))  $action 'delete';
if (isset(
$_POST['add']))     $action 'add';

$contacts_def = array ( 'TABLE_NAME'=>'CONTACTS''FILE_NAME'=>'contacts',
 
'cid'           =>array('size'=>10'type'=>'INT''pk'=>'sequence'),
 
'first_name'       =>array('size'=>60'chkNN'=>true),
 
'last_name'       =>array('size'=>60'chkNN'=>true),
 
'address'       =>array('size'=>100,'chkNN'=>true),
 
'city'           =>array('size'=>40'chkNN'=>true),
 
'country'       =>array('size'=>40),
 
'mail'               =>array('size'=>50'uk'=>true'type'=>'email','chkNN'=>true),
 
'contact_info'       =>array('size'=>60),
 
'notes'       =>array('size'=>200),
 
'birth_date'       =>array('size'=>16'type'=>'date'),
 
'category'        =>array('size'=>1,  'upper'=>true'chkList'=>array ('P','B','O')), // Pers,Biz,Oth
 
'status'       =>array('size'=>1,  'chkNN'=>true'upper'=>true'chkList'=>array ('A','D','U')), // Active, Deleted, Unknown
 
'last_contacted'  =>array('size'=>30'type'=>'DATETIME''default'=>'now'),
 
'reg_date'        =>array('size'=>25'chkNN'=>true'type'=>'DATE','default'=>'now'));

$contacts             = new dbff;
$contacts->recdef     $contacts_def// $contacts->trace=true;
$contacts->read();

reset($contacts->fldnames);
   while (list (
$pos$fld_name) = each ($contacts->fldnames)) {
      if (isset(
$_POST[$fld_name])) $editrec[$fld_name] = $_POST[$fld_name];
      else                          
$editrec[$fld_name] = NULL;
      
$dbrec[$pos] = $editrec[$fld_name];
   }

if (
$action=='add')    {
   
$action 'list';
   if (
addContactsRec($dbrec)) $editrec NULL;
}
if (
$action=='delete') {
   
$action  'list'
   
$editrec NULL;
   
delContactsRec($cont_id);
}
if (
$action=='update') {
   if (
updContactsRec($dbrec$cont_id)) {
     
$action 'list';
     
$editrec NULL;
   } else 
$action 'edit';
}
if (
$action=='edit') {
   
$contrec contactGetByCid ($cont_id);
   
$heading 'Edit Contacts';
}
if (
$action=='list') {
   
$allcrecs getContactsRecs();
   
$heading 'List of Contacts';
}

print 
pgStart();
print 
pc("<br><br>$heading<br><br>"'font-size:16; font-weight:bold; text-align:center;');
if (!
is_null($dbfferr)) print pc($dbfferr."<br><br>",'color:red; text-align:center;');

if (
$action=='list') print contlist($allcrecs$editrec);
else                 print 
contedit($contrec$contacts_def);

print 
pgEnd();
exit;

///
/// db api functions, keep all data functions separate for simpler replacement to other db later
///
function contactGetByCid ($cid) { // get one record by id
   
global $contacts;
   
$r NULL;
   if (
$contacts->select('CID',$cid)>0$r $contacts->selectGet();
   return 
$r;
}

function 
getContactsRecs() { // get all contacts
   
global $contacts;
   
$r NULL;
   
$contacts->select();
   while (
$cr $contacts->selectGet()) $r[] = $cr;
   return 
$r;
}

function 
updContactsRec ($crec$cid) {
   global 
$contacts;
   if (
$contacts->update($crec$cid) && $contacts->commit()) return true;
   return 
false;
}

function 
addContactsRec ($crec) {
   global 
$contacts;
   if (
$contacts->insert($crec) && $contacts->commit()) return true;
   return 
false;
}
function 
delContactsRec ($cid) {
   global 
$contacts;
   if (
$contacts->delete($cid) && $contacts->commit()) return true;
   return 
false;
}

///
/// List records!
///
function contlist ($crecs$editrec) {
global 
$contacts;
   
$pg   $_SERVER['REQUEST_URI'];
   
$cid  NULL;
   
$bstr "\n".'<td valign="top"><input type="SUBMIT" name="update" id="update" value="Save"></td>
            <td valign="top"><input type="SUBMIT" name="edit"        id="edit"   value="Edit"></td>
            <td valign="top"><input type="SUBMIT" name="delete"      id="delete" value="Delete"></td>'
;
   
$str  "\n".'<table width="100%" bgcolor="lightblue" align="center" border="1"
           cellpadding="0" cellspacing="1"><tr valign="top">'
;
   
reset($contacts->fldnames);
   while ( list (
$pos$fld_name) = each ($contacts->fldnames) ) { /// header line
      
if (!$contacts->NN($fld_name)) continue; // Skip non required fields in list
      
$str .= "\n".'<td  valign="top">'.mkhdr($fld_name).'</td>';
   }
   
$str .= "\n".'<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>'
   if (
count($crecs)>0) {
      while (
$crec current($crecs)) { /// Data rows
         
$cid $crec['CONTACTS.CID'];
     
$str .= "\n".'<tr valign="top"><form name="cid_'.$cid.'" action="'.$pg.'" method="post">';
         
reset($contacts->fldnames);
         while ( list (
$pos$fld_name) = each ($contacts->fldnames) ) {
            if (!
$contacts->NN($fld_name)) continue; // Skip non required fields in list
            
$idx 'CONTACTS.'.strtoupper($fld_name);
            if (isset(
$crec[$idx]))  $val  $crec[$idx];
            else                     
$val  '';
            
$size $dsz $contacts->size($fld_name);
            if (
$dsz>8$dsz round($size 4);
        
$str .= "\n".'<td  valign="top">';
            if (
$fld_name=='cid') { $cid $val$str .= $cid.'</td>'; }
            else 
$str .= "\n".'<input type="TEXT" name="'.$fld_name.'" id="'.$fld_name.
                       
'" size="'.$dsz.'" value="'.$val.'" maxlength="'.$size.'"></td>';
         }
         
$str .= "\n".'<input type="HIDDEN" name="cid" id="cid" value="'.$cid.'">'.$bstr.'</FORM></tr>';
         
next($crecs);
      }
   }
   
// add line
   
$str .= "\n".'<tr valign="top"><form name="add_contact" action="'.$pg.'" method="post">';
   
reset($contacts->fldnames);
   while ( list (
$pos$fld_name) = each ($contacts->fldnames) ) {
      if (!
$contacts->NN($fld_name)) continue; // Skip non required fields in list
      
$size $dsz $contacts->size($fld_name);
      if (
$dsz>8$dsz round($size 4);
      
$str .= "\n".'<td  valign="top">';
      if (
$fld_name=='cid'$str .= '&nbsp;</td>';
      else 
$str .= "\n".'<input type="TEXT" name="'.$fld_name.'" id="'.$fld_name.
                   
'" size="'.$dsz.'" value="'.$editrec[$fld_name].'" maxlength="'.$size.'"></td>';
   }
   
$str .= "\n".'<td valign="top"><input type="HIDDEN" name="cid" id="cid" value="0">';
   
$str .= "\n".'<input type="SUBMIT" name="add" id="add" value="Add"></td>';
   
$str .= '<td>&nbsp;</td><td>&nbsp;</td></FORM></tr></table>';
   return 
$str;
}

///
/// Edit form
///
function contedit ($r$flds) {
global 
$contacts;
   
$pg   $_SERVER['REQUEST_URI'];
   if (empty(
$r)) return 'No record to Edit!';
   
/// Js check functions
      
$js  = new dbff_jsChk;
      
$str $js->jsGen("cedit"$flds);
   
///
   
$str  .= "\n".'<table width="90%" bgcolor="lightblue" align="center" border="1"
           cellpadding="0" cellspacing="4"><tr valign="top">
           <form name="cedit" action="'
.$pg.'" method="post" onSubmit="return cedit_chk(this);">';
   
reset($contacts->fldnames);
   while ( list (
$pos$fld_name) = each ($contacts->fldnames) ) {
      
$size $dsz $contacts->size($fld_name);
      if (
$dsz>50$dsz round($size 3);
      
$str .= '<tr valign="top">';
      
$str .= "\n".'<td valign="top">'.mkhdr($fld_name,'R').'</td>'."\n".'<td valign="top">';
      
$idx 'CONTACTS.'.strtoupper($fld_name);
      if (isset(
$r[$idx])) $value $r[$idx];
      else                 
$value '';
      if (
$fld_name=='cid'$str .= $value.'</td></tr>';
      else 
$str .= '<input type="TEXT" name="'.$fld_name.'" id="'.$fld_name.
                   
'" size="'.$dsz.'" value="'.$value.'" maxlength="'.$size.'"></td></tr>';
   }
   
$str .= "\n".'<tr><td>&nbsp;</td><td><input type="HIDDEN" name="cid" id="cid" value="'.
           
$r['CONTACTS.CID'].'">'."\n".'<input type="SUBMIT" name="update" id="update" value="Save">
            <input type="RESET" name="cancel" id="cancel" value="Cancel"
            onclick="parent.location=\''
.$pg.'\'"></td></FORM></tr></table>';
   return 
$str;
  
// Edit record end
}

///
/// General functions
///
function mkhdr ($str$align='L') {
   
$str ucwords(strtolower(strtr($str,'_',' ')));
   if (
$align=='R') return pc($str,'font-weight:bold; text-align:right;');
   return 
pc($str,'font-weight:bold; text-align:left;');
};

function 
pc ($txt$style=NULL) { // Tag with inline style 
   
$str  "<p";
   if (!
is_null($style)) $str .= " style=\"$style\"";
   
$str .= '>' $txt "</p>";
   return 
$str;
}

function 
pgStart() {
return 
'
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>Contacts</title>
<META HTTP-EQUIV="expires"  content="0" "content-type" content="text/html; charset=iso-8859-1">
<style><!--
   page { margin-left:0cm; margin-right:0cm; margin-top:0cm; margin-bottom:0cm }
   body { font-family: frutiger, helvetica, syntax, verdana, univers, sans-serif; color:black;}
   p { font-family: frutiger, helvetica, verdana, sans-serif; font-size:0.8em; margin-bottom: 0em; margin-top: 0em;}
   input { font-family:frutiger, helvetica, verdana, sans-serif; font-size:0.8em;
        margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px;
    padding-top:1px; padding-left:0px; padding-right:0px; padding-bottom:0px;
    display:inline;}
   textarea { text-align:left; font-family:frutiger, helvetica, verdana, sans-serif; font-size:0.8em;}
   form { font-size:0.8em; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px;
    padding-top:0px; padding-left:0px; padding-right:0px; padding-bottom:0px; display:inline;} 
 --></style>
</head>
<body  topmargin="0" leftmargin="0" bgcolor="white">'
;
}

function 
pgEnd() {
   return 
'</body></html>';
}
?>