<?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> </td><td> </td><td> </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 .= ' </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> </td><td> </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> </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>'; } ?>
|