510 likes | 642 Views
Les fichiers. Tester un fichier. Manipuler un fichier. Manipuler un répertoire. Existence. Type. Taille. Accessibilité. Dates. Les données disponibles. On peut obtenir sur un fichier toutes les informations visibles dans une fenêtre Web de ce type :. AULAS - 2007. Les fichiers.
E N D
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Existence Type Taille Accessibilité Dates Les données disponibles On peut obtenir sur un fichier toutes les informations visibles dans une fenêtre Web de ce type : AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Existence Type Taille Accessibilité Dates Récapitulatif : AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Existence Type Taille Accessibilité Dates Exercice 1 1. Ecrivez une fonction infoFichier qui, si le document existe, indique s'il s'agit d'un fichier et quelle est sa taille. AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Existence Type Taille Accessibilité Dates Exercice 1 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 "<I>$fic</I> est un fichier.<BR>"; print "$fic pèse ".filesize($fic).".<BR>"; } } infoFichier("archi.txt"); AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Existence Type Taille Accessibilité Dates Exercice 1 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 - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Existence Type Taille Accessibilité Dates La fonction date ("format", date_unix) 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 - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Existence Type Taille Accessibilité Dates Exercice 1 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 "<I>$fic</I> est un fichier.<BR>"; print "$fic pèse ".filesize($fic).".<BR>"; } } } infoFichier("archi.txt"); AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Existence Type Taille Accessibilité Dates Exercice 1 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 "<I>$fic</I> est un fichier.<BR>"; print "$fic pèse ".filesize($fic).".<BR>"; print "$fic a été créé le ".date("d/m/y", filectime($fic)).".<BR>"; } } } infoFichier("archi.txt"); AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer include() et require() 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 - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Procédure pour manipuler un fichier 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 - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Ouvrir un fichier avec fopen ("nomFic.txt", mode) 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 - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Lire 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 - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Lire 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<BR>"; } AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Lire 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<BR>"; } AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Lire 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<BR>"; // Le résultat s'appelle un acrostiche. } AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Lire vite fait 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<BR>"; AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Lire vite fait readfile (nomFichier) readfile se charge de tout. Ouvrir nomFichier, le lire, le fermer et afficher le contenu. Ex: $fic = "archi.txt"; readfile ($fic); AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Lire vite fait 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<BR>"; } print "<BR>"; } AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Ecrire 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 - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Fermer 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 - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Exercice 2 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 - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Exercice 2 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 - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Exercice 2 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 - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Exercice 2 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 "<TABLE BORDER=\"1\">"; print "</TABLE>"; } AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Exercice 2 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 "<TABLE BORDER=\"1\">"; foreach ($tab as $val) { } print "</TABLE>"; } AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Exercice 2 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 "<TABLE BORDER=\"1\">"; foreach ($tab as $val) { print "<TR>"; } print "</TABLE>"; } AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Exercice 2 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 "<TABLE BORDER=\"1\">"; foreach ($tab as $val) { print "<TR>"; $sstab = explode($separateur, $val); } print "</TABLE>"; } AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Exercice 2 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 "<TABLE BORDER=\"1\">"; foreach ($tab as $val) { print "<TR>"; $sstab = explode($separateur, $val); foreach ($sstab as $ssval) { print "<TD>$ssval"; } } print "</TABLE>"; } AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Exercice 2 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. <HTML> <BODY> <?php afficher("archi.txt", " : ") ?> </BODY> </HTML> AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Exercice 2 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 - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Exercice 2 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. <FORM action="<?=$_SERVER['PHP_SELF']?>" method="GET"> Type de batiment : <INPUT type="text" name="batiment" size="20"><BR> Date du batiment : <INPUT type="text" name="date" size="20"><BR> Adresse du batiment : <INPUT type="text" name="adresse" size="20"><BR> Auteur(s) du batiment : <INPUT type="text" name="auteur" size="20"><BR> <INPUT type="submit" value="Inserer"><BR><BR> AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Exercice 2 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 - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Exercice 2 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 - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Exercice 2 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 - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Exercice 2 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 - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Exercice 2 Il ne vous reste plus qu'à donner la possibilité à votre utilisateur de supprimer des enregistrements. Pensez qu'un lien de type: <A href="mapage.php?suppr=2">Supprimer</A> 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 - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Exercice 2 function afficher($fichier, $separateur){ $tab = file($fichier); print "<TABLE BORDER=\"1\">"; for ($i = 0; $i<count($tab);$i++) { print "<TR>"; $sstab = explode($separateur, $tab[$i]); foreach ($sstab as $ssval) print "<TD>$ssval"; print "<TD><A href=\"" .$_SERVER['PHP_SELF']. "?suppr=" .$i. "\">Supprimer</A>"; } print "</TABLE>"; } AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Exercice 2 <TR> <TD>Garde-meuble du mobilier national <TD>1934 <TD>1, rue Berbier du Mets <TD>Auguste PERRET <TD><A href="/fic.php?suppr=1">Supprimer</A> <TR> <TD>Ensemble de logements <TD>1935 <TD>75, bvd Blanqui <TD>Agence d'architecture HBM <TD><A href="/fic.php?suppr=2">Supprimer</A> AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Exercice 2 if (!empty($_GET)) { if (isset($_GET['suppr'])) { $pFic = fopen ("archi.txt", 'r'); fclose ($pFic); } AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Exercice 2 if (!empty($_GET)) { if (isset($_GET['suppr'])) { $pFic = fopen ("archi.txt", 'r'); fclose ($pFic); $pFic = fopen ("archi.txt", 'w'); fclose ($pFic); } AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Exercice 2 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 - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Exercice 2 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 - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Exercice 2 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 - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Exercice 2 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 - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir Lire et écrire Fermer Quelques fonctions utiles unlink ("nomFichier") permet de supprimer un fichier rename ("nomFichier", "nouveauNom") permet de renommer copy ("source", "destination") permet de copier un fichier AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir/lire/fermer Distinguer répertoire et fichier Créer et supprimer Ouvrir, parcourir et fermer un répertoire $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<BR>"; } closedir ($pRep); AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir/lire/fermer Distinguer répertoire et fichier Créer et supprimer Distinguer un fichier d'un répertoire 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<BR>"; } closedir ($pRep); AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir/lire/fermer Distinguer répertoire et fichier Créer et supprimer Créer et supprimer un répertoire 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 - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir/lire/fermer Distinguer répertoire et fichier Créer et supprimer Exercice 3 Créez une dizaine de répertoire imbriqués les uns dans les autres. Puis effacez les. AULAS - 2007
Les fichiers Tester un fichier Manipuler un fichier Manipuler un répertoire Ouvrir/lire/fermer Distinguer répertoire et fichier Créer et supprimer Exercice 3 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 - 2007