Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers...

51
Tester un fichier Manipuler un fichier Manipuler 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 - 2007 Existence Accessibilité Taille Dates Type

Transcript of Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers...

Page 1: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Existence AccessibilitéTaille DatesType

Page 2: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler un répertoire

Récapitulatif :

Les fichiers

AULAS - 2007

Existence AccessibilitéTaille DatesType

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épertoirerenvoie 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 documentrenvoie la date de modification du document

Page 3: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Existence AccessibilitéTaille DatesType

Page 4: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 "<I>$fic</I> est un fichier.<BR>";

print "$fic pèse ".filesize($fic).".<BR>";

}

}

infoFichier("archi.txt");

AULAS - 2007

Existence AccessibilitéTaille DatesType

Page 5: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Existence AccessibilitéTaille DatesType

Page 6: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Existence AccessibilitéTaille DatesType

Page 7: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 "<I>$fic</I> est un fichier.<BR>";

print "$fic pèse ".filesize($fic).".<BR>";

}

}

}

infoFichier("archi.txt");

AULAS - 2007

Existence AccessibilitéTaille DatesType

Page 8: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 "<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

Existence AccessibilitéTaille DatesType

Page 9: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Ouvrir FermerLire et écrire

Page 10: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Ouvrir FermerLire et écrire

Page 11: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Ouvrir FermerLire et écrire

Page 12: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Ouvrir FermerLire et écrire

Page 13: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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<BR>";

}

AULAS - 2007

Ouvrir FermerLire et écrire

Page 14: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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<BR>";

}

AULAS - 2007

Ouvrir FermerLire et écrire

Page 15: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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<BR>"; // Le résultat s'appelle un acrostiche.

}

AULAS - 2007

Ouvrir FermerLire et écrire

Page 16: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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<BR>";

AULAS - 2007

Ouvrir FermerLire et écrire

Page 17: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Ouvrir FermerLire et écrire

Page 18: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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<BR>"; }

print "<BR>";

} AULAS - 2007

Ouvrir FermerLire et écrire

Page 19: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Ouvrir FermerLire et écrire

Page 20: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Ouvrir FermerLire et écrire

Page 21: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Ouvrir FermerLire et écrire

Page 22: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Ouvrir FermerLire et écrire

Page 23: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Ouvrir FermerLire et écrire

Page 24: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 "<TABLE BORDER=\"1\">";

print "</TABLE>";

} AULAS - 2007

Ouvrir FermerLire et écrire

Page 25: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 "<TABLE BORDER=\"1\">";

foreach ($tab as $val)

{

}

print "</TABLE>";

} AULAS - 2007

Ouvrir FermerLire et écrire

Page 26: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 "<TABLE BORDER=\"1\">";

foreach ($tab as $val)

{

print "<TR>";

}

print "</TABLE>";

} AULAS - 2007

Ouvrir FermerLire et écrire

Page 27: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 "<TABLE BORDER=\"1\">";

foreach ($tab as $val)

{

print "<TR>";

$sstab = explode($separateur, $val);

}

print "</TABLE>";

} AULAS - 2007

Ouvrir FermerLire et écrire

Page 28: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 "<TABLE BORDER=\"1\">";

foreach ($tab as $val)

{

print "<TR>";

$sstab = explode($separateur, $val);

foreach ($sstab as $ssval) {

print "<TD>$ssval"; }

}

print "</TABLE>";

} AULAS - 2007

Ouvrir FermerLire et écrire

Page 29: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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.

<HTML>

<BODY>

<?php afficher("archi.txt", " : ") ?>

</BODY>

</HTML>

AULAS - 2007

Ouvrir FermerLire et écrire

Page 30: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Ouvrir FermerLire et écrire

Page 31: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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.

<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

Ouvrir FermerLire et écrire

Page 32: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Ouvrir FermerLire et écrire

Page 33: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Ouvrir FermerLire et écrire

Page 34: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Ouvrir FermerLire et écrire

Page 35: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Ouvrir FermerLire et écrire

Page 36: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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:

<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

Ouvrir FermerLire et écrire

Page 37: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler un répertoire

Exercice 2

Les fichiers

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

Ouvrir FermerLire et écrire

Page 38: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler un répertoire

Exercice 2

Les fichiers

<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

Ouvrir FermerLire et écrire

Page 39: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler un répertoire

Exercice 2

Les fichiers

if (!empty($_GET))

{

if (isset($_GET['suppr']))

{

$pFic = fopen ("archi.txt", 'r');

fclose ($pFic);

} AULAS - 2007

Ouvrir FermerLire et écrire

Page 40: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Ouvrir FermerLire et écrire

Page 41: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Ouvrir FermerLire et écrire

Page 42: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Ouvrir FermerLire et écrire

Page 43: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Ouvrir FermerLire et écrire

Page 44: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Ouvrir FermerLire et écrire

Page 45: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Ouvrir FermerLire et écrire

Page 46: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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<BR>"; } closedir ($pRep);

AULAS - 2007

Ouvrir/lire/fermer Créer et supprimerDistinguer répertoire et fichier

Page 47: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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<BR>"; } closedir ($pRep);

AULAS - 2007

Ouvrir/lire/fermer Créer et supprimerDistinguer répertoire et fichier

Page 48: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Ouvrir/lire/fermer Créer et supprimerDistinguer répertoire et fichier

Page 49: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Ouvrir/lire/fermer Créer et supprimerDistinguer répertoire et fichier

Page 50: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Ouvrir/lire/fermer Créer et supprimerDistinguer répertoire et fichier

Page 51: Tester un fichierManipuler un fichierManipuler un répertoire Les données disponibles Les fichiers On peut obtenir sur un fichier toutes les informations.

Tester un fichier Manipuler un fichier Manipuler 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 - 2007

Ouvrir/lire/fermer Créer et supprimerDistinguer répertoire et fichier