<?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
 
 
?>
 
 
 |