Tutoriel de correction du TP3 

Partie 2 - Sauvegarde des informations saisies dans le formulaire

Mise en place

Recopier le fichier  editTicketAction.php  du TP2 dans le répertoire tp3.

Affichage des données du formulaire

Dans editTicketAction.php copier les lignes de la deuxième ligne balise <tr> (lignes 83 à 97) :

    <tr class="<?php echo $tableRecordClass; ?>">
      <td class="center"><?php echo $application; ?></td>
      <td class="center"><?php echo $priorityText; ?></td>
      <td class="center"><?php echo $type; ?></td>
      <td class="center"><?php echo $todayDate; ?></td>
      <td class="left"><?php echo $oneLiner; ?></td>
      <td class="left"><?php echo $contentsPart; ?></td>
     </tr> 

Les remplacer par

        <?php printTicketAsTableRow($application, $priority, $type, $todayDate, $oneLiner, $contents, $tableRecordClass); ?>

On va utiliser la syntaxe Here-Doc pour définir printTicketAsTableRow() 

Insérer la  définition ci-dessous au début du fichier :

function printTicketAsTableRow($application, $priority, $type, $date, $oneLiner, $description, $tableRecordClass){
    $str = <<<EOT
    <tr class="$tableRecordClass">
      <td class="center">$application</td>
      <td class="center">$priority</td>
      <td class="center">$type</td>
      <td class="center">$date</td>
      <td class="left">$oneLiner</td>
      <td class="left">$description</td>
    </tr>
EOT;
    echo $str;
}

Tests

Cliquer sur les liens suivants pour créer des anomalies de priorité urgente ou moyenne.

Sauvegarde des données

Définir la fonction saveTicket() :

function saveTicket($applicationId, $login, $priority, $type, $date, $oneLiner, $description, $attachmentName) {
  // construction de la ligne à sauvegarder
  $ticketId = 0;
  $line = implode(';', array($ticketId, $applicationId, $login, $priority, $type, $date, $oneLiner, $description, $attachmentName));
  $filePath = 'tickets.csv';
  if( $fd = fopen($filePath, 'a+')) { // ouverture du fichier en écriture 'append'
    $line .= "\n";     // concaténation d'un saut de ligne
    fputs($fd, $line); // écriture de la ligne en fin de fichier
    fclose ($fd);                      // fermeture du fichier
  } else {
    die("Ouverture du fichier <b>$filePath</b> impossible.");
  }
}

L'appeler après avoir initialisé tous ses arguments :

$attachmentName = $_FILES['userfile']['name'];
$login = 'inconnu';
saveTicket($application, $login, $priority, $type, $todayDate, $oneLiner, $contents, $attachmentName);

Sauvegarde de la pièce-jointe

La pièce-jointe est accessible au travers du tableau associatif  $_FILES['userFile'] (userFile étant le nom du champ d'input de type "file" du formulaire).

Dans editTicketForm.php, modifier la valeur des attributs method et ENCTYPE du formulaire :

<form method="POST" name="editTicketForm"
  ENCTYPE="multipart/form-data" 

Dans editTicketAction.php, apppeler la fonction  saveAttachedFile() :

if ( isset($_FILES['userfile']) )
  saveAttachedFile();
}

La définir:

function saveAttachedFile() {
  $destinationPath = '../attachements/' . $_FILES['userfile']['name'];
  move_uploaded_file($_FILES['userfile']['tmp_name'], $destinationPath);
}