Création de listes depuis un
fichier de données
Le sommaire :
Vous pouvez extraire
le contenu d’un fichier de données texte afin d’en afficher son contenu à
l’écran, et ce, sous des formes variées.
Un fichier de
données est un fichier texte contenant des enregistrements et par
enregistrement, des champs.
Imaginiez par
exemple que vous élaboriez un fichier texte contenant des contacts.
Un enregistrement
serait alors un individu, un contact, et les différents champs de
l’enregistrement seraient les détails de l’enregistrement, nom, prénom, adresse
etc.
Dans le fichier
texte, donc de données, il faudrait écrire un enregistrement par ligne et
séparer les champs par un séparateur, par exemple, un point virgule.
Le langage PHP est
en mesure d’ouvrir et d’extraire le contenu d’un fichier de données, ce contenu
du fichier de données est affecté dans une variable de type tableau.
Plusieurs fonctions
du PHP permettent de réaliser l’extraction et différents traitements.
En utilisant un
point virgule comme séparateur de champs, voici comment peut être écrit un
fichier de données de type TXT :
Lucien;DUPOND;PARIS
Nathalie;DURAN;MARSEILLE
Sophie;MARTIN;BORDEAUX
Si ce fichier de
données s’appelle par exemple contacts.txt, voici comment extraire son contenu
vers une variable PHP qui s’appelle $Contacts :
$Contacts =
file("contacts.txt");
Ici, nous avons
utilisé la fonction file.
Mais le tableau $Contacts contient maintenant, par ligne, un enregistrement entier dont les différents champs sont séparés par un point virgule.
Si par exemple vous faisiez un echo de l’indice 1 du tableau, donc :
echo $Contacts[1];
Vous obtiendrez l’affichage suivant :
Nathalie;DURAN;MARSEILLE
N’oubliez pas que le
tableau débute à l’indice 0 !
C’est pourquoi
Nathalie DURAN, qui correspond au deuxième enregistrement du fichier de données
contacts.txt, se retrouvent en indice 1 du tableau $Contact.
En utilisant la
fonction explode, nous devons maintenant créer un nouveau tableau depuis le
tableau $Contacts. Le résultat sera plus agréable, le nouveau tableau ne
contiendra plus un enregistrement par ligne, mais un champ par ligne…
Ce nouveau tableau,
nous allons l’appeler $Champ.
Voici la
syntaxe :
$Champ = explode(";",$Contacts[$i]);
L’indice 0 du tableau $Champ affichera Lucien, l’indice 1 affichera DUPOND Etc.
L’exemple qui suit affiche le contenu du
fichier de données contacts .txt /
Pour voir le résultat en ligne, c’est
ici :
http://jaws.unadev.com/PHP/FichierContacts/index.php
Pour télécharger les fichiers, c’est
ici :
http://jaws.unadev.com/PHP/FichierContacts/FichierContacts.rar
Voici le contenu du fichier de données
contacts.txt :
Pascal;DUPOND;PARIS
François;MARTIN;MARSEILLE
Sandrine;DURAN;TOULOUSE
Sophie;DUMAS;BORDEAUX
Isabelle;DUREUILLE;VERSAILLE
Voici le code du fichier index.php :
<html>
<head>
<title>
Extraction de contacts depuis un fichier de données</title>
</head>
<body>
<?php
// Affectation de l'intégralité du fichier
table.txt dans le tableau $Contacts
$Contacts = file("contacts.txt");
// Création d'une boucle qui extrait et
affiche le contenu
for
($i=0;$i<count($Contacts);$i++)
{ // extraction de la ligne courante du
tableau $Contacts
$Champ =
explode(";",$Contacts[$i]);
// Affichage de la ligne extraite
echo "$Champ[0] $Champ[1] de $Champ[2]
<br>"; } ?>
</body>
</html>
Dans cet exemple, le fichier index.php va utiliser le fichier de données table.txt pour
créer une liste simple :
Pour voir le résultat en ligne, c’est
ici :
http://jaws.unadev.com/PHP/FichierListeSimple/index.php
Pour télécharger les fichiers de l’exercice,
c’est ici :
http://jaws.unadev.com/PHP/FichierListeSimple/FichierListeSimple.rar
Voici le code du fichier de données tableau.txt :
WORD;EXCEL;ACCESS;VISUAL
BASIC;PHP;JAVA script;Langage C;COBOL;Bloc notes;WORDPAD;POWER POINTE
Voici le code du fichier index.php
:
<html>
<head>
<title>
Affichage d'une liste de logiciels</title>
</head>
<body>
<h1>Liste de logiciels</h1>
<ol>
<?php
// Extraction du contenu du fichier table.txt
dans le tableau $Liste
$Liste = file("table.txt");
// Séparation des champs, passage dans le
tableau $Logiciels
$Logiciels
= explode(";",$Liste[0]);
for
($i=0;$i<count($Logiciels);$i++)
{ // Affichage des éléments de la liste à
afficher
echo
"<li>$Logiciels[$i]<br>"; } ?>
</ol>
</body>
</html>
Dans cet exemple, nous posons une question à l’utilisateur à partir du
fichier index.php, les réponses sont bien sûr
proposées dans une liste à zone déroulante. Les réponses sont d’ailleurs
extraites du fichier de données table.txt.
L’utilisateur pourra ensuite cliquer le bouton « valider »,
la page resultat.php sera alors exécutée et affichera
le résultat.
Le contenu du fichier de données table.txt :
MERCURE;VÉNUS;MARS;JUPITER;SATURNE;URANUS;NEPTUNE;PLUTON
Pour tester l’exercice en ligne, c’est ici :
http://jaws.unadev.com/PHP/FichierListeZoneDeroulante/index.php
Pour télécharger les fichiers de l’exercice, c’est ici :
http://jaws.unadev.com/PHP/FichierListeZoneDeroulante/FichierListeZoneDeroulante.rar
Voici le code du fichier index.php :
<html>
<head>
<title>Création d'une liste à zone
déroulante depuis un fichier de données</title>
</head>
<body>
<h1>La
question</h1>
<p>Quelle est la planète la plus proche de LA TERRE ?</p>
<form
action="resultat.php" method="post">
<select
name="Reponse">
<?php
$Liste =
file("table.txt");
$Planetes =
explode(";",$Liste[0]);
for
($i=0;$i<count($Planetes);$i++)
{
echo
"<option>$Planetes[$i]</option>"; } ?>
</select>
<input
type="submit" value="Valider">
</form>
</body>
</html>
Voici le code du fichier resultat.php :
<html>
<head>
<title> bonjour
</title>
</head>
<body>
<h1>Résultat</h1>
<?php
extract($_POST,EXTR_OVERWRITE);
if ($Reponse=="VÉNUS")
{ // La réponse est correcte
echo "Bravo ! C'était bien
la planète Vénus."; }
else
{ // La réponse est incorrecte
echo "Désolé, vous avez
perdu, la réponse n'était pas ".$Reponse."
mais vénus."; } ?>
</body>
</html>
Philippe BOULANGER