<?php

// get_emp_by_name_obj_session_db.php
session_start();
include_once "hr/DB/Session.php";

$session = new Session();
$session->session_id = session_id();

if ($_REQUEST['cmd'] != 'getemp') {

$html=<<<BLAB
<form name="get_emp_by_name" 
      action=$_SERVER[PHP_SELF]
	  method="POST">
<input name="cmd" type="hidden" value="getemp">
First Name:<input name="first_name" type="text" value="%s" size="30"><br>
Last Name: <input name="last_name" type="text" value="%s" size="30"><br>
<input type="submit" value="Get Employee">
</form>
BLAB;
  
  $r = $session->Read();
  print_r($r);
  $fn = $r['first_name'];
  $ln = $r['last_name'];

printf($html, $fn, $ln);

} else {
# include_once "functions.php";
include_once "hr/DB/Employee.php";

$employee = new Employee();

$r = $_REQUEST;

$session->Store($r);

$employee->first_name = $r['first_name'];
$employee->last_name = $r['last_name'];

print_r($r);

$employee->read();
print "<br>";
print $employee->dump();
}

$session->commit();

?>
// hr/DB.php
<?php

ini_set('display_errors', 1);

class DB {
  public $db;
 
  function dbconnect() {
    $this->db = oci_connect('hr', 'hr', 'orcl');  
  }  

  function commit() {
    oci_commit($this->db);
  }

  function rollback() {  
    oci_rollback($this->db);
  }

 function print_table($table) {
 print "<table border=1>\n";
 foreach ($table as $row) {
  print "<tr>"; 
  foreach ($row as $cell) {
    if (!isset($cell)) {$cell = 'n/a'; }  	
    print "<td> $cell </td> ";
  }
  print "</tr>\n";
  } 

 print "</table>\n";
 }
}
?>
<?php
// hr/DB/employee.php
include_once('hr/DB.php');

class Employee extends DB {
  public $first_name;
  public $last_name;
  public $salary;
  
  function read() {
   $this->dbconnect();
   $sql3 = 
      'select first_name, last_name, salary from employees where 
        last_name  = :last_name and
   	 first_name = :first_name';
   	 	
   $q = oci_parse($this->db, $sql3);
   oci_bind_by_name($q, ":last_name", $_REQUEST['last_name'],-1, 
                    SQLT_CHR );
   
   oci_bind_by_name($q, ":first_name", $_REQUEST['first_name'],-1,
                    SQLT_CHR );
   			  
   $r = oci_execute($q, OCI_DEFAULT);
   
   $table = oci_fetch_array($q, OCI_ASSOC+OCI_RETURN_NULLS);
   
   $this->salary     = $table['SALARY'];
   $this->first_name = $table['FIRST_NAME'];
   $this->last_name  = $table['LAST_NAME'];
   
   }
     
   function dump() {
     $d = sprintf ("First Name:  %s <br>\n
	                 Last Name:  %s <br>\n
					 Salary   :  %s <br>\n",
					 $this->first_name,
					 $this->last_name,
					 $this->salary);
	 return $d;
   }
}
<?php

// get_emp_by_name_obj.php

print "<h2>request</h2>\n";
print_r($_REQUEST);

if ($_REQUEST['cmd'] != 'getemp') {
$html=<<<BLAB
<form name="get_emp_by_name" 
      action=$_SERVER[PHP_SELF]
	  method="get">
<input name="cmd" type="hidden" value="getemp">
First Name:<input name="first_name" type="text" size="30"><br>
Last Name:<input name="last_name" type="text" size="30"><br>
<input type="submit" value="Get Employee">
</form>
BLAB;

print $html;

} else {
include_once "functions.php";
include_once "hr/DB/Employee.php";

$employee = new Employee();

$employee->first_name = $first_name;
$employee->last_name = $last_name;
$employee->read();
print "<br>";
print $employee->dump();
}

?>
<?php
// hr/DB/Session.php
include_once('hr/DB.php');

class Session extends DB {
  public $session_id;
  public $data;
  
  function __construct() {
    $this->dbconnect();
  }
  
  function Store($data) {
   $data = serialize($data); 
   $sql = 
      'merge into session_data
          using (select 1 from dual)
      on (session_id = :session_id)
      when matched then update 
	    set data = :data, change_date=sysdate
      when not matched then 
      insert (
	    id,
		session_id,
		data,
		change_date
		) values (
		hr_seq.nextval,
		:session_id,
		:data,
		sysdate)';
   	 	
   $q = oci_parse($this->db, $sql);
   oci_bind_by_name($q, ":session_id", $this->session_id,-1, 
                    SQLT_CHR );
   oci_bind_by_name($q, ":data", $data,-1, 
                    SQLT_CHR ); 					
    
   $r = oci_execute($q, OCI_DEFAULT);
      
   return 0;
  }
  
  function Read() {
   $sql = 
      'select data from session_data where
        session_id = :session_id';
   	 	
   $q = oci_parse($this->db, $sql);
   oci_bind_by_name($q, ":session_id", $this->session_id,-1, 
                    SQLT_CHR );
     			  
   $r = oci_execute($q, OCI_DEFAULT);
   
   $table = oci_fetch_array($q, OCI_ASSOC+OCI_RETURN_NULLS);
   
   $d = $table['DATA'];   
   $this->data = unserialize($d);
   return $this->data;
      
  }
  
}