Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations visibles dans une fenêtre Web de ce type : AULAS ExistenceAccessibilitéTailleDatesType
Tester un fichierManipuler un fichierManipuler un répertoire Récapitulatif : Les fichiers AULAS ExistenceAccessibilitéTailleDatesType file_exists (nomFic) renvoie true si le fichier "nomFichier" existe filetype (nomFic) renvoie le type du document is_dir (nomFic) is_file (nomFic) renvoie true si le document est un répertoire renvoie true si le document est un fichier filesize (nomFic) renvoie la taille du document en octets is_readable (nomFic) is_writeable (nomFic) renvoie true si le document est accessible en lecture (readable) et en écriture (writreable) filectime (nomFic) filemtime (nomFic) renvoie la date de création du document renvoie la date de modification du document
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 1 Les fichiers 1. Ecrivez une fonction infoFichier qui, si le document existe, indique s'il s'agit d'un fichier et quelle est sa taille. AULAS ExistenceAccessibilitéTailleDatesType
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 1 Les fichiers 1. Ecrivez une fonction infoFichier qui, si le document existe, indique s'il s'agit d'un fichier et quelle est sa taille. function infoFichier ($fic) { if (file_exists($fic)) { if (is_file($fic)) print " $fic est un fichier. "; print "$fic pèse ".filesize($fic).". "; } infoFichier("archi.txt"); AULAS ExistenceAccessibilitéTailleDatesType
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 1 Les fichiers 1. Ecrivez une fonction infoFichier qui, si le document existe, indique s'il s'agit d'un fichier et quelle est sa taille. 2. Complétez la fonction infoFichier pour qu'elle affiche la date de création du document. AULAS ExistenceAccessibilitéTailleDatesType
Tester un fichierManipuler un fichierManipuler un répertoire La fonction date ("format", date_unix) Les fichiers Pour obtenir un affichage correct de la date de création d'un fichier, il faut recourir à la fonction date() qui transcrit dans le format que vous prescrivez le format d'origine epoch Unix. Le format se défini par un ensemble de lettres qui permettent de spécifier l'affichage de telle ou telle partie de la date. Le test suivant vous renvoie la date au format Unix: print date ("U"); Ce test vous permet de d'avoir le jour, le mois, l'année, l'heure, les minutes et les secondes. print date ("d m y H i s"); AULAS ExistenceAccessibilitéTailleDatesType
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 1 Les fichiers 2. Complétez la fonction infoFichier pour qu'elle affiche la date de création du document. function infoFichier ($fic) { if (file_exists($fic)) { if (is_file($fic)) { print " $fic est un fichier. "; print "$fic pèse ".filesize($fic).". "; } infoFichier("archi.txt"); AULAS ExistenceAccessibilitéTailleDatesType
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 1 Les fichiers 2. Complétez la fonction infoFichier pour qu'elle affiche la date de création du document. function infoFichier ($fic) { if (file_exists($fic)) { if (is_file($fic)) { print " $fic est un fichier. "; print "$fic pèse ".filesize($fic).". "; print "$fic a été créé le ".date("d/m/y", filectime($fic)).". "; } infoFichier("archi.txt"); AULAS ExistenceAccessibilitéTailleDatesType
Tester un fichierManipuler un fichierManipuler un répertoire include() et require() Les fichiers Les fonctions include ("nomFic") et require ("nomFic") permettent d'inclure le contenu d'un fichier nomFic dans le script courant. Ex: include ("archi.txt"); Les fonctions include_once ("nomFic") et require_once ("nomFic") Permettent d'interdire une insertion redondante. Ex: for ($i=0; $i<5; $i++) include_once ("archi.txt"); //archi.txt n'est inclu qu'une seule fois AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Procédure pour manipuler un fichier Les fichiers Quelque soit le type de langage, la manipulation d'un fichier passe toujours par les étapes suivantes : 1- Ouverture 2 - Lecture 3 - Copie des données 4 - Modification des données 5 - Ecriture 6 - Fermeture Les nombreuses fonctions php permettent de sauter beaucoup de ces étapes. AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Ouvrir un fichier avec fopen ("nomFic.txt", mode) Les fichiers La fonction fopen () permet d'ouvrir un fichier dans différents modes : - r pour lecture (read) - w pour écriture (write) - a pour ajout (add) Cette fonction renvoie un pointeur par le biais duquel sera ensuite manipulé le fichier. Ex : $pFic = fopen ("nomFic.txt", 'r'); Attention: $pFic pointe vers le fichier mais ne le contient pas. AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Lire Les fichiers Il existe de nombreuses façons de lire le contenu d'un fichier : - ligne par ligne avec fgets ($pFic[, longueur]); - par bloc de caractères avec fread ($pFic, longueur); - caractère par caractère avec fgetc ($pFic); AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Lire Les fichiers fgets ($pFic[, longueur]); Si on ne mentionne pas la longueur, fgets lit tout jusqu'au prochain saut de ligne. Ex: $fic = "archi.txt"; $pFic = fopen ($fic, "r") or die ("Impossible d'ouvrir $fic"); while ($ligne = fgets ($pFic)) { print "$ligne "; } AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Lire Les fichiers fread ($pFic, longueur); fread() lit une longueur arbitraire, indépendamment des sauts de ligne. Ex: $fic = "archi.txt"; $pFic = fopen ($fic, "r") or die ("Impossible d'ouvrir $fic"); while ($ligne = fread ($pFic, 30)) // récupère des sections de 30 caractères { print "$ligne "; } AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Lire Les fichiers fgetc ($pFic); fgetc renvoie un caractère à la fois. Ex: $fic = "archi.txt"; $pFic = fopen ($fic, "r") or die ("Impossible d'ouvrir $fic"); while (!feof($pFic)) { $char = fgetc ($pFic); print "$char "; // Le résultat s'appelle un acrostiche. } AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Lire vite fait Les fichiers file (nomFichier) La fonction file("nomFic") permet de charger le contenu de "nomFic" dans un tableau avec un élément par ligne. Charge à vous d'en afficher le contenu. Ex: $fic = "archi.txt"; $tableau = file($fic); foreach($tableau as $valeur) print "$valeur "; AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Lire vite fait Les fichiers readfile (nomFichier) readfile se charge de tout. Ouvrir nomFichier, le lire, le fermer et afficher le contenu. Ex: $fic = "archi.txt"; readfile ($fic); AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Lire vite fait Les fichiers explode ("délimiteur", chaîne_de_caractère) explode permet de récupérer dans un tableau des sous-chaînes séparées par un délimiteur passé en argument. Ex: $fic = "archi.txt"; $tableau = file($fic); foreach ($tableau as $valeur) { $sstableau = explode (" : ", $valeur); foreach ($sstableau as $ssvaleur) { print "$ssvaleur "; } print " "; } AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Ecrire Les fichiers Pour écrire dans un fichier, il convient d'abord de l'ouvrir en mode écriture 'w' ou ajout 'a'. Ex: $fic = "archi.txt"; $pFic = fopen($fic, 'a'); Il existe deux fonctions identiques pour insérer du texte : - fwrite ($pFic, "chaine"[, longueurMax]) - fputs ($pFic, "chaine"[, longueurMax]) AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Fermer Les fichiers Quelque soit l'opération effectuée à l'intérieur d'un fichier, il convient de le refermer "après usage" à l'aide de la fonction fclose ($pFic) Ex: $fic = "archi.txt"; $pFic = fopen($fic, 'a'); // Ici je fais ce que je veux avec le fichier. fclose ($pFic); AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 2 Les fichiers Créez une fonction afficher(nomFichier, separateur) qui affiche le contenu de archi.txt dans un tableau et appelez-la à l'intérieur de votre code HTML. AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 2 Les fichiers Créez une fonction afficher(nomFichier, separateur) qui affiche le contenu de archi.txt dans un tableau et appelez-la à l'intérieur de votre code HTML. function afficher($fichier, $separateur){ } AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 2 Les fichiers Créez une fonction afficher(nomFichier, separateur) qui affiche le contenu de archi.txt dans un tableau et appelez-la à l'intérieur de votre code HTML. function afficher($fichier, $separateur){ $tab = file($fichier); } AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 2 Les fichiers Créez une fonction afficher(nomFichier, separateur) qui affiche le contenu de archi.txt dans un tableau et appelez-la à l'intérieur de votre code HTML. function afficher($fichier, $separateur){ $tab = file($fichier); print " "; } AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 2 Les fichiers Créez une fonction afficher(nomFichier, separateur) qui affiche le contenu de archi.txt dans un tableau et appelez-la à l'intérieur de votre code HTML. function afficher($fichier, $separateur){ $tab = file($fichier); print " "; foreach ($tab as $val) { } print " "; } AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 2 Les fichiers Créez une fonction afficher(nomFichier, separateur) qui affiche le contenu de archi.txt dans un tableau et appelez-la à l'intérieur de votre code HTML. function afficher($fichier, $separateur){ $tab = file($fichier); print " "; foreach ($tab as $val) { print " "; } print " "; } AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 2 Les fichiers Créez une fonction afficher(nomFichier, separateur) qui affiche le contenu de archi.txt dans un tableau et appelez-la à l'intérieur de votre code HTML. function afficher($fichier, $separateur){ $tab = file($fichier); print " "; foreach ($tab as $val) { print " "; $sstab = explode($separateur, $val); } print " "; } AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 2 Les fichiers Créez une fonction afficher(nomFichier, separateur) qui affiche le contenu de archi.txt dans un tableau et appelez-la à l'intérieur de votre code HTML. function afficher($fichier, $separateur){ $tab = file($fichier); print " "; foreach ($tab as $val) { print " "; $sstab = explode($separateur, $val); foreach ($sstab as $ssval) { print " $ssval"; } } print " "; } AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 2 Les fichiers Créez une fonction afficher(nomFichier, separateur) qui affiche le contenu de archi.txt dans un tableau et appelez-la à l'intérieur de votre code HTML. AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 2 Les fichiers Ajoutez maintenant un formulaire qui permette d'insérer des données dans archi.txt (en respectant son format). Commencez par rédiger le formulaire HTML. Ne vous occupez du code php que dans un second temps. AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 2 Les fichiers Ajoutez maintenant un formulaire qui permette d'insérer des données dans archi.txt (en respectant son format). Commencez par rédiger le formulaire HTML. Ne vous occupez du code php que dans un second temps. " method="GET"> Type de batiment : Date du batiment : Adresse du batiment : Auteur(s) du batiment : AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 2 Les fichiers Ajoutez maintenant un formulaire qui permette d'insérer des données dans archi.txt (en respectant son format). Commencez par rédiger le formulaire HTML. Ne vous occupez du code php que dans un second temps. if (!empty($_GET)) { } AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 2 Les fichiers Ajoutez maintenant un formulaire qui permette d'insérer des données dans archi.txt (en respectant son format). Commencez par rédiger le formulaire HTML. Ne vous occupez du code php que dans un second temps. if (!empty($_GET)) { $pFic = fopen ("archi.txt", 'a'); fputs ($pFic, $chaine); fclose ($pFic); } AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 2 Les fichiers Ajoutez maintenant un formulaire qui permette d'insérer des données dans archi.txt (en respectant son format). Commencez par rédiger le formulaire HTML. Ne vous occupez du code php que dans un second temps. if (!empty($_GET)) { $separateur = " : "; $pFic = fopen ("archi.txt", 'a'); fputs ($pFic, $chaine); fclose ($pFic); } AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 2 Les fichiers Ajoutez maintenant un formulaire qui permette d'insérer des données dans archi.txt (en respectant son format). Commencez par rédiger le formulaire HTML. Ne vous occupez du code php que dans un second temps. if (!empty($_GET)) { $separateur = " : "; $chaine = $_GET['batiment']; $chaine.= $separateur.$_GET['date']; $chaine.= $separateur.$_GET['adresse']; $chaine.= $separateur.$_GET['auteur']."\n"; $pFic = fopen ("archi.txt", 'a'); fputs ($pFic, $chaine); fclose ($pFic); } AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 2 Les fichiers Il ne vous reste plus qu'à donner la possibilité à votre utilisateur de supprimer des enregistrements. Pensez qu'un lien de type: Supprimer peut fournir un moyen d'interaction simple indépendamment de tout formulaire. 1. Commencez par améliorer la fonction afficher() pour qu'elle fournisse une interface qui permette de supprimer des enregistrements. 2. Faites en sorte que votre programme prenne en compte les instructions de suppression. AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 2 Les fichiers function afficher($fichier, $separateur){ $tab = file($fichier); print " "; for ($i = 0; $i<count($tab);$i++) { print " "; $sstab = explode($separateur, $tab[$i]); foreach ($sstab as $ssval) print " $ssval"; print " Supprimer "; } print " "; } AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 2 Les fichiers Garde-meuble du mobilier national , rue Berbier du Mets Auguste PERRET Supprimer Ensemble de logements , bvd Blanqui Agence d'architecture HBM Supprimer AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 2 Les fichiers if (!empty($_GET)) { if (isset($_GET['suppr'])) { $pFic = fopen ("archi.txt", 'r'); fclose ($pFic); } AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 2 Les fichiers if (!empty($_GET)) { if (isset($_GET['suppr'])) { $pFic = fopen ("archi.txt", 'r'); fclose ($pFic); $pFic = fopen ("archi.txt", 'w'); fclose ($pFic); } AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 2 Les fichiers if (!empty($_GET)) { if (isset($_GET['suppr'])) { $pFic = fopen ("archi.txt", 'r'); $tab = file("archi.txt"); $chaine =""; fclose ($pFic); $pFic = fopen ("archi.txt", 'w'); fclose ($pFic); } AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 2 Les fichiers if (!empty($_GET)) { if (isset($_GET['suppr'])) { $pFic = fopen ("archi.txt", 'r'); $tab = file("archi.txt"); $chaine =""; for ($i = 0; $i<count($tab);$i++) { $chaine.= ($i!=$_GET['suppr']) ? $tab[$i] : ""; } fclose ($pFic); $pFic = fopen ("archi.txt", 'w'); fclose ($pFic); } AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 2 Les fichiers if (!empty($_GET)) { if (isset($_GET['suppr'])) { $pFic = fopen ("archi.txt", 'r'); $tab = file("archi.txt"); $chaine =""; for ($i = 0; $i<count($tab);$i++) { $chaine.= ($i!=$_GET['suppr']) ? $tab[$i] : ""; } fclose ($pFic); $pFic = fopen ("archi.txt", 'w'); fputs ($pFic, $chaine); fclose ($pFic); } AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 2 Les fichiers Faites un formulaire qui permette d'insérer du texte dans le fichier archi.txt. A vous de créer une fonction afficher qui permette d'afficher le contenu du fichier archi.txt. AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Quelques fonctions utiles Les fichiers unlink ("nomFichier") permet de supprimer un fichier rename ("nomFichier", "nouveauNom") permet de renommer copy ("source", "destination") permet de copier un fichier AULAS OuvrirFermerLire et écrire
Tester un fichierManipuler un fichierManipuler un répertoire Ouvrir, parcourir et fermer un répertoire Les fichiers $pRep = opendir ($rep) permet d'ouvrir un répertoire readdir ($pRep) permet de lire ligne à ligne le contenu du répertoire closedir ($pRep); permet de fermer le répertoire Ex: $rep = "."; $pRep = opendir ($rep); while ($ligne = readdir($pRep)) { print "$ligne "; } closedir ($pRep); AULAS Ouvrir/lire/fermerCréer et supprimerDistinguer répertoire et fichier
Tester un fichierManipuler un fichierManipuler un répertoire Distinguer un fichier d'un répertoire Les fichiers Lorsqu'on parcoure une arborescence, il est important de distinguer fichiers et répertoires, les seconds étant susceptibles de contenir encore d'autres fichiers. Les fonctions is_dir ("nomFichier") et is_file ("nomFichier") testent s'il s'agit d'un répertoire ou d'un fichier. Ex: $rep = "."; $pRep = opendir ($rep); while ($ligne = readdir($pRep)) { $id = (is_dir($ligne)) ?"Répertoire":"Fichier" ; print "$id : $ligne "; } closedir ($pRep); AULAS Ouvrir/lire/fermerCréer et supprimerDistinguer répertoire et fichier
Tester un fichierManipuler un fichierManipuler un répertoire Créer et supprimer un répertoire Les fichiers mkdir (nomRépertoire, permissions (en octal)) créé un répertoire et lui définit les droits d'accès en octal, selon le modèle UNIX. Ex : mkdir ("desaix", 0777); //Selon le modèle pgu rmdir (nomRépertoire) supprime un répertoire s'il est vide. chdir (nomRépertoire) positionne dans nomRépertoire. AULAS Ouvrir/lire/fermerCréer et supprimerDistinguer répertoire et fichier
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 3 Les fichiers Créez une dizaine de répertoire imbriqués les uns dans les autres. Puis effacez les. AULAS Ouvrir/lire/fermerCréer et supprimerDistinguer répertoire et fichier
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 3 Les fichiers Créez une dizaine de répertoire imbriqués les uns dans les autres. Puis effacez les. for ($i=0;$i<10;$i++) { mkdir("repertoire", 0777); chdir("repertoire"); } AULAS Ouvrir/lire/fermerCréer et supprimerDistinguer répertoire et fichier
Tester un fichierManipuler un fichierManipuler un répertoire Exercice 3 Les fichiers Créez une dizaine de répertoire imbriqués les uns dans les autres. Puis effacez les. for ($i=0;$i<10;$i++) { mkdir("repertoire", 0777); chdir("repertoire"); } for ($i=0;$i<10;$i++) { chdir(".."); rmdir("repertoire"); } AULAS Ouvrir/lire/fermerCréer et supprimerDistinguer répertoire et fichier