Les fichiers
Par Damien, mardi 1 mars 2005 à 20:16 :: PHP :: #9 :: rss
Lorsque l'on n'a pas accès à une base de données, il faut utiliser des fichiers pour y stocker des données. En PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. Pour l'instant, nous n'en utiliserons que 2 ou 3.
1ère partie : dans un premier temps, nous allons faire un script simple, qui permet de stocker le nom et l'email d'utilisateurs dans un fichier et de les récupérer à notre guise.
1- La fonction fopen()
La fonction de base est la fonction fopen(). C'est elle qui permet d'ouvrir un fichier, que ce soit pour le lire, le créer, ou y écrire. Sa syntaxe est :
entier fopen(chaine nomdufichier, chaine mode);
| Différents modes disponibles | |
| r | ouverture en lecture seulement |
| w | ouverture en écriture seulement (la fonction crée le fichier s'il n'existe pas) |
| a | ouverture en écriture seulement avec ajout du contenu à la fin du fichier (la fonction crée le fichier s'il n'existe pas) |
| r+ | ouverture en lecture et écriture |
| w+ | ouverture en lecture et écriture (la fonction crée le fichier s'il n'existe pas) |
| a+ | ouverture en lecture et écriture avec ajout du contenu à la fin du fichier (la fonction crée le fichier s'il n'existe pas) |
Exemples :
<?php ?>
La fonction fopen permet donc même d'ouvrir des fichiers sur le web. Vous pouvez, par exemple, récupérer le titre d'une page d'un site :
<?php } ?>
2- Création (ou mise à jour) du fichier
La première chose est de stocker des infos dans le fichier. Il faut donc ouvrir le fichier en écriture en le créant s'il n'existe pas. On a donc le choix entre le mode 'w' et le mode 'a'. On préférera le second puisque le pointeur se trouve en fin de fichier (autrement dit on écrit à la suite de ce qui se trouve dans le fichier).
NB : il est judicieux de tester si l'ouverture de fichier s'est bien déroulée.
<?php }else{ // L'ouverture a échouée echo "Ouverture du fichier impossible"; } ?>
La fonction fputs() permet d'écrire dans le fichier. C'est un alias de fwrite(), c'est à dire que vous pouvez utiliser indifféremment l'une de ces deux fonctions, elles sont identiques.
booléen fputs(entier Etat_du_fichier, chaine Sortie);
3- Lecture du fichier
Vous pouvez lire les infos présentes dans le fichier en ouvrant le fichier lecture.
On utilise la commande fgets() pour récupérer les lignes du fichier, une par une. La fonction feof() permet de tester si la fin du fichier n'a pas été atteinte.
chaine fgets(entier Etat_du_fichier, entier Longueur);
4- Conclusion
Essayer l'exemple - Télécharger l'exemple
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"> <head> <title>Exemple d'utilisation des fichiers en PHP</title> <link rel="stylesheet" type="text/css" media="all" href="exemples.css" /> </head> <body> <h1>Exemple d'utilisation des fichiers en PHP</h1> <? // nom du fichier $fichier = '9_fichier.txt'; switch ($_POST['action']) { case "ecrire": // on formate nos données // voir le tutorial sur les fonctions, si besoin // Raison : ne jamais faire confiance à des données transmises par un utilisateur function formate_machaine($chaine) { // on supprime les \n et les | // on supprime les tags html et php // on supprime les espaces superflus au début et à la fin // on coupe la chaine a 100 caracteres // renvoi nouvelle valeur return $chaine; } $nom = formate_machaine($_POST['nom']); $commentaire = formate_machaine($_POST['commentaire']); if($nom != '' and $commentaire != '') { // on verifie taille du fichier // si le fichier fait plus de 3Ko on le vide echo '<p>Nom et email ajoutés !</p>'; } else { echo '<p>Erreur, veuillez remplir les deux champs !</p>'; } break; default: ?> <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" name="ecriture"> <input type="hidden" name="action" value="ecrire" /> <table summary="Ecriture dans le fichier"> <tr class="titre"> <td colspan="2">Ecriture dans le fichier</td> </tr> <tr> <td>Nom</td> <td> <input type="text" name="nom" size="30" maxlength="30" /> </td> </tr> <tr> <td>Petit commentaire</td> <td> <input type="text" name="commentaire" size="30" maxlength="100" /> </td> </tr> <tr> <td> </td> <td> <input type="submit" name="envoyer" value="Et Hop!" /> </td> </tr> </table> </form> <table summary="Lecture du fichier"> <tr class="titre"> <td colspan="2">Lecture du fichier</td> </tr> <? { { { } if($nom != '' and $commentaire != '') { echo '<tr>'; echo '</tr>'; } } } else{ // le fichier n'existe pas echo '<p>Fichier introuvable ! Lecture stoppée.</p>'; } ?> </table> <? break; } ?> </body> </html>
Cet exemple montre l'utilité des fichiers lorsque vous n'avez pas accès aux bases de données. L'exemple suivant montrera le rôle des fichiers , même si vous n'avez pas accès aux bases de données.

Commentaires
1. Le lundi 11 avril 2005 à 19:39, par elom@ster
2. Le mercredi 27 avril 2005 à 09:23, par Methu
3. Le mercredi 22 juin 2005 à 14:05, par tontonjoe
4. Le jeudi 23 juin 2005 à 08:22, par Damien
5. Le vendredi 24 juin 2005 à 17:38, par tontonjoe
6. Le vendredi 29 juillet 2005 à 04:02, par Paul
7. Le lundi 8 août 2005 à 01:36, par Kihyno
8. Le mardi 4 octobre 2005 à 14:48, par raidesboules
9. Le jeudi 29 décembre 2005 à 01:42, par Vhc
10. Le vendredi 13 janvier 2006 à 12:14, par Fred
11. Le vendredi 13 janvier 2006 à 19:17, par Damien
12. Le mercredi 18 janvier 2006 à 19:42, par Saimon
13. Le dimanche 5 février 2006 à 11:35, par Saimon
14. Le dimanche 5 février 2006 à 17:03, par Damien
15. Le jeudi 9 février 2006 à 14:16, par iOUAZE
16. Le mardi 14 février 2006 à 21:53, par james
17. Le vendredi 10 mars 2006 à 15:08, par P@
18. Le samedi 6 mai 2006 à 16:01, par UNIT
19. Le mardi 9 mai 2006 à 23:05, par cns
20. Le mardi 9 mai 2006 à 23:07, par cns
21. Le samedi 16 septembre 2006 à 15:43, par speedy
22. Le samedi 23 septembre 2006 à 06:05, par truc
23. Le vendredi 6 octobre 2006 à 03:28, par alihas
24. Le jeudi 4 janvier 2007 à 18:34, par saouda
25. Le mercredi 31 janvier 2007 à 18:16, par Dark Djiane
26. Le dimanche 11 février 2007 à 01:25, par Darky
27. Le mercredi 28 février 2007 à 15:45, par Chris
28. Le samedi 31 mars 2007 à 17:54, par Djtale
29. Le mercredi 9 mai 2007 à 08:43, par kpn59
30. Le mercredi 16 mai 2007 à 15:48, par jam248
31. Le lundi 1 octobre 2007 à 23:04, par steevy
32. Le jeudi 25 octobre 2007 à 13:50, par ethan
33. Le samedi 5 janvier 2008 à 00:37, par test qi
34. Le mardi 29 avril 2008 à 15:25, par younes
35. Le jeudi 22 octobre 2009 à 17:47, par Balafatch
36. Le jeudi 19 août 2010 à 19:54, par voiture occasion maroc
Ajouter un commentaire