Accès Web sur table AS400

Problématique :

Accès Web sur table AS400 depuis un serveur LAMP. Un petit script PHP pour récupérer les données de l'AS400 via ODBC, génération d'un flux XML et présentation via XSLT.

Script PHP sur le serveur LAMP

<?php
header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="ISO-8859-1"?>'."
";
echo '<?xml-stylesheet type="text/xsl" href="presentation.xsl"?>'."
";
include("include/inc_ifive.php");
$link = AS400_connexion();

if (!isset($_GET['id']))
{
   $Seq="<err>Patient inconnu!</err>.
";
}
else
{
   $ipiupa=$_GET['id'];
   $datiso=date("Ymd");
   $Req_Rdv = "select digits(jourrv) concat '/' concat digits(moisrv) 
              concat '/' concat digits(anrv) daterv, hmoteu, mmoteu, durerv, 
              coderv, librv from rvpris  where ipiupa = $ipiupa  and anrv*10000
              + moisrv*100 + jourrv >= $datiso and suppri = '' and report = '' 
              order by 1 desc";

   $Requete = "select ipiupa, ipnomu, case when ipnomn<>ipnomu  then ipnomn 
              else ' ' end ipnomn, ippren, digits(ipjnai) concat '/' concat 
              digits(ipmnai) concat '/' concat digits(ipsnai) concat digits(ipanai) 
             ipnai from pihopi447.ipp01 where ipiupa = $ipiupa";
   $Resultat = odbc_exec( $link, $Requete);
   $Row=odbc_fetch_array($Resultat);

   $Seq = "<id>".$Row['IPIUPA']."</id>"."
";
   $Seq .= "<nom>".$Row['IPNOMU']."</nom>"."
";
   $Seq .= "<nomn>".$Row['IPNOMN']."</nomn>"."
";
   $Seq .= "<prenom>".$Row['IPPREN']."</prenom>"."
";
   $Seq .= "<naiss>".$Row['IPNAI']."</naiss>"."
";
   $Seq .= "<examen>
";

   $Resultat = odbc_exec( $link, $Req_Rdv);
   while( ($Row = odbc_fetch_array($Resultat)))
   {
       $explodetoday = explode("/", $Row['DATERV']);
       $Jour = date("D", mktime(0, 0, 0, $explodetoday[1], $explodetoday[0],
               $explodetoday[2]));

       switch ($Jour) {
           case "Mon" :
               $Jour="Lundi ";
               break;
           case "Tue" :
               $Jour="Mardi ";
               break;
           case "Wed" :
               $Jour="Mercredi ";
               break;
           case "Thu" :
               $Jour="Jeudi ";
               break;
           case "Fri" :
               $Jour="Vendredi ";
               break;
           case "Sat" :
               $Jour="Samedi ";
               break;
           case "Sun" :
               $Jour="Dimanche ";
               break;
       }

       $Seq .= "<rdv>
";
       $Seq .= "<daterv>".$Jour.$Row['DATERV']."</daterv>"."
";
       $Seq .= "<heurrv>".$Row['HMOTEU']."H".sprintf("%02d",$Row['MMOTEU'])."</heurrv>"."
";
       $Seq .= "<durerv>".$Row['DURERV']."</durerv>"."
";
       $Seq .= "<coderv>".$Row['CODERV']."</coderv>"."
";
       $Seq .= "<librv>".$Row['LIBRV']."</librv>"."
";
       $Seq .= "</rdv>
";
   }
$Seq .= "</examen>
";
}
odbc_close($link);

?>
<bib>
<?php echo $Seq; ?>
</bib>

...le flux XML généré

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="presentation.xsl"?>
<bib>
<id>123456789</id>
<nom>DUPONT               </nom>
<nomn>MARTIN                   </nomn>
<prenom>CHRISTIANE               </prenom>
<naiss>19460825</naiss>
<examen>
<rdv>
<daterv>20050222</daterv>
<hmoteu>14</hmoteu>
<mmoteu>20</mmoteu>
<durerv>20</durerv>
<coderv>RTAN LAED           </coderv>
<librv>AZERTYUIOP                                                  </librv>
</rdv>
<rdv>
<daterv>20050223</daterv>
<hmoteu>15</hmoteu>
<mmoteu>20</mmoteu>
<durerv>20</durerv>
<coderv>RTAN LAED           </coderv>
<librv>qqqq                                                  </librv>
</rdv>
</examen>
</bib>

la feuille de transformation XSLT

<?xml version="1.0" encoding="ISO8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  
<xsl:template match="/">
<html>
<head>
         <title>Parvis - Gestion des rendez-vous</title>
         <style type="text/css">
         body {font-family: "cg omega", verdana;}
         table {margin:50px; border:outset rgb(204, 0, 0) 3px;}
         td {padding: 10px; }
         h3 {text-align: center;}
         .Ours {float:right; font-style: italic;}
        </style>
</head>
<body>
        <!--h2>Parvis - Gestion des rendez-vous</h2-->
        <p style='background-color:#ccff99;'>Nom : <xsl:value-of select="bib/nom" /><xsl:value-of select="bib/prenom" /></p>
        <p>Né(e) le <xsl:value-of select="bib/naiss" />, <xsl:value-of select="bib/nomn" /></p>
        <h3>Prochains rendez-vous</h3>
        <xsl:apply-templates select="bib/examen" />
<hr/>
<div class="Ours"><xsl:value-of select="bib/ours" /></div>
  </body>
  </html>
</xsl:template>
        <xsl:template match="examen">
            <table >
            <tr><th>Date</th><th>Heure</th><th>Durée</th><th>Code RV</th><th>Libellé</th></tr>
            <xsl:apply-templates />
        </table>
        </xsl:template>
        
        <xsl:template match="rdv">
          <tr>
            <xsl:apply-templates />
          </tr>
        </xsl:template>

        <xsl:template match="daterv">
          <td><xsl:value-of select="."/></td>
        </xsl:template>

        <!--xsl:template match="hmoteu">
          <td><xsl:value-of select = "hmoteu"/>H<xsl:value-of select = "mmoteu"/></td>
        </xsl:template-->
        
        <xsl:template match="heurrv">
          <td><xsl:value-of select = "."/></td>
        </xsl:template>


        <xsl:template match="durerv">
          <td><xsl:value-of select="."/></td>
        </xsl:template>
        
        <xsl:template match="coderv">
          <td><xsl:value-of select="."/></td>
        </xsl:template>
        
        <xsl:template match="librv">
          <td><xsl:value-of select="."/></td>
        </xsl:template>
</xsl:stylesheet>

une image du résultat




Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

La discussion continue ailleurs

URL de rétrolien : https://jardin.d903.fr/trackback/7

Fil des commentaires de ce billet