• Aucun résultat trouvé

Maintenant que vous savez ouvrir et fermer votre fichier, on va apprendre à lire et écrire dedans.

Lire

Pour lire, on a 2 possibilités :

Lire caractère par caractère avec la fonction fgetc Lire ligne par ligne avec fgets

En général, on se débrouillera pour mettre une information par ligne dans notre fichier. On utilise donc assez peu fgetc qui est assez lourd à utiliser (il faudrait faire une boucle pour lire caractère par

caractère).

Dans notre cas, on va supposer que notre fichier ne contient qu'une ligne : le nombre de pages qui ont été vues sur le site.

Pour récupérer ce nombre, il faudra donc faire comme ceci : Source 3.6.2 : lire dans le fichier <?

// 1 : on ouvre le fichier

$monfichier = fopen("compteur.txt", "r+");

// 2 : on lit la première ligne du fichier $ligne = fgets($monfichier);

// 3 : quand on a fini de l'utiliser, on ferme le fichier fclose($monfichier);

?>

Il faut indiquer à fgets le fichier à lire. On lui donne notre variable $monfichier qui lui permettra de l'identifier.

fgets renvoie toute la ligne (la fonction arrête la lecture à la première Entrée). Donc, notre variable $ligne devrait contenir la première ligne du fichier.

Et si mon fichier fait 15 lignes, comment je fais pour toutes les lire ?

Il faut faire une boucle. Un premier fgets vous donnera la première ligne, ensuite si vous refaites fgets vous obtiendrez la deuxième ligne etc...

Pas très pratique hein ? Ce n'est pas pour rien qu'on a inventé la base de données.

Écrire

Pour l'écriture, on n'a qu'une seule possibilité : utiliser fputs. Cette fonction va écrire la ligne que vous voulez dans le fichier. Elle s'utilise comme ceci :

fputs($monfichier, "Texte à écrire");

Toutefois, il faut savoir où on écrit le texte. En effet, le fonctionnement d'un fichier est assez bizarre : 1. Vous l'ouvrez avec fopen

2. Vous lisez par exemple la première ligne avec fgets.

3. Oui mais voilà, maintenant le "curseur" de PHP se trouve à la fin de la première ligne (vu qu'il vient de lire la première ligne).

Si vous faites un fputs juste après, il va écrire à la suite ! Pour éviter ça, on va utiliser la fonction fseek qui va replacer le curseur où on veut dans le fichier. En l'occurence, on va replacer le curseur au début du fichier en faisant :

fseek($monfichier, 0);

Notre curseur sera alors repositionné au début :

4. Ouf, notre curseur est au début du fichier, on peut faire un fputs. La ligne va s'écrire par-dessus l'ancienne, ce qui fait que l'ancien texte sera écrasé (remplacé par le nouveau).

Allez, pour y voir plus clair, voici le code pour réaliser notre compteur de pages vues : Source 3.6.3 : le compteur de pages vues

<?

$monfichier = fopen('compteur.txt', 'r+');

$pages_vues = fgets($monfichier); // On lit la première ligne (nombre de pages vues) $pages_vues++; // On augmente de 1 ce nombre de pages vues

fseek($monfichier, 0); // On remet le curseur au début du fichier

fputs($monfichier, $pages_vues); // On écrit le nouveau nombre de pages vues fclose($monfichier);

echo 'Cette page a été vue ' . $pages_vues . ' fois !';

1. On récupère la première ligne du fichier, qui est le nombre de pages qui ont été vues pour le moment sur le site.

2. On ajoute 1 à la variable $pages_vues. Si elle valait 15, elle vaudra désormais 16.

3. On replace notre fameux "curseur" au début du fichier (parce que sinon il se trouvait à la fin de la première ligne et on aurait écrit à la suite).

4. On écrit notre nouveau nombre de pages vues dans le fichier, en écrasant l'ancien nombre. Si vous avez oublié de mettre un CHMOD à 777 sur le fichier compteur.txt, vous aurez l'erreur suivante :

Warning: fopen(compteur.txt): failed to open stream: Permission denied

Ici, PHP essaie de vous dire qu'il n'a pas réussi à ouvrir le fichier car il n'a pas le droit d'écrire dedans. Il faut donc absoluement faire ce CHMOD si vous voulez pouvoir toucher au fichier ! Voilà, vous venez de voir comment on se sert d'un fichier : ouverture, lecture, écriture, fermeture. Pour un gros fichier c'est vite la prise de tête, mais pour un petit fichier comme celui-ci, avouez que c'était pas long ni compliqué à faire, et en plus ça marche très bien.

Et voilà, vous savez désormais travailler avec des fichiers !

Comme vous avez pu le voir, c'est pratique et rapide du temps qu'on ne stocke pas grand chose dans le fichier. Le reste du temps, utiliser MySQL est quand même ce qu'il y a de plus pratique.

On peut faire beaucoup d'autres choses avec les fichiers, mais il serait trop long de tout vous lister ici. Je vous invite à aller consulter la documentation PHP sur les fichiers : c'est un peu austère, mais il y a tout.

Les fonctions listées y sont assez simples à utiliser : vous verrez qu'on peut copier des fichiers, supprimer des fichiers, créer des dossiers, supprimer des dossiers etc etc...

Et n'oubliez pas qu'en cas de problème, le forum est là pour vous aider. Note du Webmaster : bien entendu, le tutorial ne s'arrête pas là !

La rédaction d'un tel tutorial me prend énormément de temps, donc il faut patienter un peu pendant que je rédige les chapitres qui suivent. Mais ne vous inquiétez pas, je travaille dessus à fond.

ANNEXES

Dans les annexes, vous trouverez plusieurs choses intéressantes en rapport avec le PHP que je n'ai pas pu mettre dans le cours.

Ne regardez pas les annexes à la fin, mais plutôt pendant de la lecture du cours, histoire de souffler entre 2 chapitres.

Protéger Un Dossier Avec

Documents relatifs