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.
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!).
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');
}
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;
}