Portus Version 2018-08-24
 

List Employees sorted (ex02a_SoaGatewayEmpListSorted.php)

<?php

/*
 *  This example demonstrates usage of the "list" function exposed by any
 *  Adabas Portus "WebService" from PHP, retrieving selected records
 * from the Adabas demo file "Employees", and formatting it, in 4 easy steps.
 */


/*
 *  Step 1: Instantiate the PHP "SoapClient" class
 */
try {
 $soapclient = new SoapClient("http://localhost:8022/adabas_EmployeesMini?WSDL");
} catch (SoapFault $soapfault) {
 echo "<pre>";
 print_r($soapfault);
 echo "</pre>";
 return;
}

/*
 *  Step 2: Build the key ("descriptor") array, due to parser requirements ALL
 *    key elements need to be specified, but elements may be left empty
 *    when unused.
 */
$listkey = array(
 'personnel_id' => '50005*',
 'first_name' => '',
 'name' => '',
 'city' => '');

/*
 *  Step 3: Execute the "list" request, passing the key array as the only parameter,
 *    the response object will consist of an "adabasEmployees" element containing
 *    an array of "adabasEmployee" elements.
 */
try {
 $listresponse = $soapclient->list($listkey);
} catch (SoapFault $soapfault) {
 echo "<pre>";
 print_r($soapfault);
 echo "</pre>";
 return;
}

echo "List of Employees by personnel id = 50005* - Default sort order<br><br>";
formatResponse($listresponse);

/*
 *  Step 4: Build the SOAP Header structure to trigger a DESCENDING
 *    read instead of an ascending one.
 */

$headers = array(
 'SOAGateway_Internal_Adabas_Sort_Order' => "city"
 );

$header =  new SoapHeader("http://www.risaris.com/namespaces/xmiddle",
       "adabasEmployeeHeader",
                            $headers, false);

$soapclient->__setSoapHeaders(array($header));

/*
 *  Step 5: Execute the "list" request, passing the key array as the only parameter,
 *    the response object will consist of an "adabasEmployees" element containing
 *    an array of "adabasEmployee" elements.
 */
try {
 $listresponse = $soapclient->list($listkey);
} catch (SoapFault $soapfault) {
 echo "<pre>";
 print_r($soapfault);
 echo "</pre>";
 return;
}

echo "<br><hr><br>List of Employees by personnel id = 50005* - now sorted by City<br><br>";
formatResponse($listresponse);

/*
 *  Sub: Format the Employee records nicely into a HTML table.
 */
function formatResponse($listresponse){

 echo "<table border=1 cellpadding=5>";
 echo "<tr><th>Personnel Id</th><th>Name</th><th>First Name</th><th>City</th><th width=200>Address Line</td>";

 /*
  *  Loop through all "adabasEmployee" elements, creating a table row for every single one
  */
if ( isset($listresponse->adabasEmployees->adabasEmployee) )
{
 $Employees = $listresponse->adabasEmployees->adabasEmployee;
 if (!is_array($Employees))
  $Employees = $listresponse->adabasEmployees;

 foreach ($Employees as $Employee) {
  echo "<tr><td>$Employee->personnel_id</td><td>$Employee->name</td><td>$Employee->first_name</td><td>$Employee->city</td><td>";
  echo "<table>";

  if (!is_array($Employee->address_line)) {
   echo "<tr><td width=200>$Employee->address_line</td></tr>";
  } else {
   foreach ($Employee->address_line as $addr) {
    echo "<tr><td width=200>$addr</td></tr>";
   }
  }
  echo "</table>";
  echo "</td></tr>";
 }

}

echo "</table>";
}
/*
 *  Proceed to ex03_SoaGatewayEmpAdd.php - Add a new employee record
 */
?>

Ostia
www.ostiasolutions.com
Copyright @ 2006-2018 Ostia Software Solutions Limited.