Tutoriel de correction du TP3 

Partie 1 - Génération dynamique de la liste des applications

Mise en place

On suppose qu'un répertoire tpdsi a été créé à la racine du site  web. 

Créer un répertoire tp3 sous ce répertoire tpdsi ;  y recopier le fichier  saisieTicket.html  du TP2, le renommer editTicket.php. Recopier à nouveau le fichier  saisieTicket.html  du TP2, le renommer editTicketForm.php.
Editer le fichier editTicketForm.php; ne garder que le contenu de la balise <body> et remplacer method="GET" par method="POST" . Sauvegarder
Editer le fichier editTicket.php; supprimer tout le contenu de la balise <body>. Le remplacer par une inclusion

<?php
include 'editTicketForm.php';
?>

Si le serveur web est lancé sur la machine locale,  on doit pouvoir visualiser le formulaire de saisie de ticket en tapant l'URL http://localhost/tpdsi/tp3/editTicket.php dans un navigateur.

Affichage dynamique de la liste des applications

Dans editTicketForm.php remplacer (le contenu de la balise <select>) 

        <option value="-1">--Autre--</option>
        <option>Paye</option>
        <option>Inscriptions</option>

par

        <?php echo $allApplisAsOptions; ?>

Tester (la liste des applications est vide!).

Dans editTicket.php remplacer 

<?php
include 'editTicketForm.php';
?>

par

<?php
$allApplisAsOptions = '
        <option value="-1">--Autre--</option>
        <option>Paye</option>
        <option>Inscriptions</option>';
include 'editTicketForm.php';
?>

Tester (la liste des applications n' est plus vide, mais pas vraiment dynamique!).

Calcul dynamique de la liste des applications

Dans editTicket.php remplacer l'initialisation de $allApplisAsOptions par un appel de fonction :

function getAllApplisAsOptions() {
return  '
        <option value="-1">--Autre--</option>
        <option>Paye</option>
        <option>Inscriptions</option>';
}
$allApplisAsOptions = getAllApplisAsOptions(); 

Tester (la liste des applications n' est plus vide, mais pas vraiment dynamique!).

La fonction getAllApplisAsOptions() reste à définir! Allons y par étape

Dans editTicket.php remplacer la définition de getAllApplisAsOptions() par :

function getAllApplisAsOptions() {
  $apps = getAppList();
  $result = '<option value="-1">--Autre--</option>';
  foreach ( $apps as $app )
    $result .= "<option>$app</option>\n";
  return $result;
}
function getAppList() {
  return array('Paye', 'Inscriptions');
}

Tester.

On progresse mais on on ne lit toujours pas dans le fichier app.csv. La fonction getAppList() reste à définir!

(Si ce n'est déjà fait, recopier le fichier app.csv dans le répertoire tp3.)
Dans editTicket.php remplacer la définition de getAppList() par :

function getAppList() {
  return getAppListFromFile('app.csv');
}
function getAppListFromFile($filePath) {
  $result = array();
  if( $fd = fopen($filePath, 'r')) { // ouverture du fichier en lecture
    while ( ! feof($fd) ) {          // teste la fin de fichier
      $line = fgets($fd);
      if ( $line ) {
         list($appId, $appName) = explode(';', $line);
         $appName = trim($appName);
         $result[] = $appName;
      }
    }
    fclose ($fd);                      // fermeture du fichier
  } else {
    die("Ouverture du fichier <b>$filePath</b> impossible.");
  }
  return $result;
}

Tester.