<?php
// adr-form-process.php
/*
base_undo
db_record
incrDbRecord
buildSearchQry
buildFullSearchQry
buildUpdQry
*/
session_start();
if (empty($_SESSION['valid_user'])){
$_SESSION['valid_user'] = 'guest';
$s_echo = "adr-form-process.php -- _SESSION: ";
$s_echo .= print_r(_SESSION, true);
//$s_echo = substr($s_echo,0,70);
$s_echo .= "<hr />\n";
jsrsLog($s_echo);
}
require_once('../class.undo.php');
require_once("../jsrsServer.inc.php");
$verb = 1;
if ($verb){
//echo "<h2>adr-form-process.php</h2>";
$s_echo = "adr-form-process.php -- _REQUEST: ";
$s_echo .= print_r($_REQUEST, true);
//$s_echo = substr($s_echo,0,70);
$s_echo .= "<hr />\n";
$s_echo .= "-- _SESSION: ";
$s_echo .= print_r($_SESSION, true);
jsrsLog($s_echo);
}
jsrsDispatch( "buildSearchQry buildUpdQry db_record incrDbRecord", $verb);
function base_undo($verb=0)
{
$my_undo = new dbUndo();
$my_undo->init('config.inc.php');
$my_undo->verb = $verb;
if (!$my_undo->setup()){
echo "cannot setup the undo machinery!!!<br />\n";
}
return $my_undo;
}
// actually validate a data entry step -- essential for new records
//function db_record($formName,$table)
function db_record($fid,$str_args,$str_val)
{
if(!empty($_REQUEST['id'])) $id = $_REQUEST['id'];
else
$id = 0;
//if (empty($id))
// return '';
// recover all the form data
$args = explode('~',$str_args);
$val = explode('~',$str_val);
$my_undo = base_undo();
$tbl = $val[1];
if (!empty($_SESSION['mark_record']))
$mark_id = $_SESSION['mark_record'];
if ($mark_id < 0)
{
// create a new record based on the $mark_id data in the undo_tbl
//$my_undo = base_undo();
$id = $my_undo->apply_all_recent_updates($tbl,$mark_id,$tbl_keyname='id');
$_SESSION['mark_record'] = 0;
//return "$id";
}
if (empty($id))
$id = $fid;
// create an effective array of fld->value assoc
$fld_val = array();
for($i=2;$i<count($val);$i++)
{
$fld_val[$args[$i]] = $val[$i];
}
// record all these values in the database
$apply_qry = $my_undo->apply_updates($tbl,$id, $fld_val,$tbl_keyname='id');
$s_echo = "adr-form-process.php:db_record -- _SESSION: ";
$s_echo .= print_r($_SESSION, true);
$s_echo .= "<br />\nfld_val:";
$s_echo .= print_r($fld_val, true);
$s_echo .= "<br />\napplied qry: ".$apply_qry."<br />\n";
jsrsLog($s_echo);
return "$id";
} // end function db_record
// smoothly record the data being entered and provide data entry assistance
function incrDbRecord($baseTerm,$table,$field,$tbl_id=0)
{
// 1-smoothly record data
if(!empty($_REQUEST['id'])) $id = $_REQUEST['id'];
else
$id = 0;
if (!empty($id))
$tbl_id = $id; //int($id);
elseif (!empty($tbl_id) and empty($id))
$id = $tbl_id; //int($tbl_id);
$_SESSION['tbl_id'] = $tbl_id;
if (!empty($_SESSION['mark_record'])){
$mark_id = $_SESSION['mark_record'];
if (empty($id) && $mark_id < 0)
$id = $mark_id;
}
$my_undo = base_undo();
if(!empty($_REQUEST['tble'])) $tble = $_REQUEST['tble'];
else $tble = $table;
if (empty($id)){
// prepare a dummy undo-record
//$my_undo = base_undo();
$tbl = $table;
$new_id = $my_undo->mark_dummy_record($tble); // create a dummy undo-record
$_SESSION['mark_record'] = $new_id;
$id = $new_id;
}
elseif (($id>0) && empty($_SESSION['mark_record'])){
//$my_undo = base_undo();
$new_id = $my_undo->mark_record($tbl,$id, 'id');
$_SESSION['mark_record'] = $new_id;
//$id = $new_id;
}
if (empty($_SESSION['field']))
$_SESSION['field'] = $field;
elseif ($_SESSION['field'] != $field){
// set the field definition now
$_SESSION['field'] = $field;
}
// record the field info
// while saving the possibility for an undo
$tbl = 'adresse';
// prepare for an undo of the field being changed
$my_undo->cur_tbl = $tbl;
$my_undo->cur_tbl_keyname = 'id';
$my_undo->cur_col = $field;
if ($id>0) // a valid id!! -- not a dummy record id
{
$my_undo->cur_id = $id;
$old_col = $my_undo->update_col($field,$baseTerm); //mark_record_upd($field]);
}
else
{
$my_undo->update_col_dummy($tbl,$id,$field,$baseTerm);
}
$s_echo = "adr-form-process.php:incrDbRecord: ".$field.'|'.$baseTerm."\n";
$s_echo .= "id: $id this->cur_id: ".$my_undo->cur_id."\n";
$s_echo .= " -- _SESSION: ";
$s_echo .= print_r($_SESSION, true);
jsrsLog($s_echo);
return $field.'|'.$baseTerm;
} // end function incrDbRecord
// smoothly record the data being entered and provide data entry assistance
function buildSearchQry($baseTerm,$table,$field,$tbl_id=0)
{
// 1-smoothly record data
incrDbRecord($baseTerm,$table,$field,$tbl_id);
// in any case keep track of current updates
//2- ease the data entry by a search on already entered data
include ("config.inc.php");
$db_h = mysql_connect($dbhost,$dbuser,$dbpwd);
mysql_select_db($dbname);
//$qry = "select * from $table where $field like \"".$baseTerm."%\"";
$qry = "select $field from $table where $field like \"".$baseTerm."%\"";
$res = mysql_query($qry);
if (empty($res)){
$s_echo = "buildSearchQry -- ".$qry."--".mysql_errno().": ".mysql_error()."<br>";
jsrsLog($s_echo);
}
$s = '';
while ($row = mysql_fetch_row($res)) {
$s .= join( $row, '~') . "|";
}
mysql_close($db_h);
$s_echo = "buildSearchQry $baseTerm,$table,$field :".$s;
jsrsLog($s_echo);
return $s;
} // end buildSearchQry
function buildFullSearchQry($baseTerm,$table,$field){
include ("config.inc.php");
$db_h = mysql_connect($dbhost,$dbuser,$dbpwd);
mysql_select_db($dbname);
$fields = mysql_list_fields("database1", "table1", $db_h);
$columns = mysql_num_fields($fields);
$cols = array();
for ($i = 0; $i < $columns; $i++) {
//echo mysql_field_name($fields, $i) . "\n";
$cols[] = mysql_field_name($fields, $i);
}
// let the 1st row be the col names
$s = join( $cols, '~') . "|";
$qry = "select * from $table where $field like \"".$baseTerm."%\"";
$res = mysql_query($qry);
while ($row = mysql_fetch_row($res)) {
$s .= join( $row, '~') . "|";
}
mysql_close($db_h);
return $s;
} // end buildFullSearchQry
function buildUpdQry($baseTerm,$table,$field,$id){
include ("config.inc.php");
$db_h = mysql_connect($dbhost,$dbuser,$dbpwd);
mysql_select_db($dbname);
if ($id == -1){
$query="insert into $table ($field) values ('".$baseTerm."')";
}
else
$query="update $table set $field='".$baseTerm."' where id='".$id."'";
$res = mysql_query($query);
mysql_close($db_h);
return ;
} // end buildUpdQry
?>
|