<< Retour au sommaire

 

Création de listes depuis un fichier de données

 

 

 

Le sommaire :

  1. Introduction.
  2. Exemple d’extraction et d’affichage.
  3. Exemple de création d’une liste simple.
  4. Exemple de création d’une liste à zone déroulante.

 

 

Introduction

 

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.

 

 


Exemple d’extraction et d’affichage.

 

L’exemple qui suit affiche le contenu du fichier de données contacts .txt /

 

Pour voir le résultat en ligne, c’est ici :

Essayer la page FichierContacts/index.php >>

 

Pour télécharger les fichiers, c’est ici :

 

Télécharger le premier exemple >>

 

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>

 

 


Exemple de création d’une liste simple.

 

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 :

Essayer la page FichierListeSimple/index.php >>

 

Pour télécharger les fichiers de l’exercice, c’est ici :

Télécharger le deuxième exemple >>

 

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>

 

 


Exemple de création d’une liste à zone déroulante.

 

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 :

Essayer la page FichierListeZoneDeroulante/index.php >>

 

Pour télécharger les fichiers de l’exercice, c’est ici :

Télécharger le troisième exemple >>

 

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