lire et écrire dans un fichier texte avec php

اذهب الى الأسفل

lire et écrire dans un fichier texte avec php

مُساهمة من طرف chouchou في الإثنين 05 نوفمبر 2007, 23:10

Lire et écrire dans un fichier texte


Tentons maintenant de lire et d'écrire dans un fichier texte, fichier se trouvant sur votre serveur FTP. Afin de mettre en pratique cet exercice, vous allez créer un fichier donnees.txt que vous allez placer dans le même répertoire que le script PHP.
Supposons que ce fichier texte contienne la ligne suivante :

"Salut à tous Smile".
Soit alors, le code PHP suivant :
exemple1



exemple1
<?php

// Instruction 1
$fp = fopen ("donnees.txt", "r");
// Instruction 2
$contenu_du_fichier = fgets ($fp, 255);
// Instruction 3
fclose ($fp);
// Instruction 4
echo 'Notre fichier contient : '.$contenu_du_fichier;
?>


Ce qui affichera à l'écran :


Notre fichier contient : Salut à tous Smile



Détaillons alors ce qui se passe :

- Instruction 1 : on ouvre le fichier donnees.txt en lecture seule à l'aide de la fonction fopen() (la lecture seule est obtenue à l'aide du paramètre r ; nous détaillerons plus loin tous les paramètres possibles de cette fonction).

- Instruction 2 : on lit le contenu du fichier à l'aide de la fonction fgets() et l'on place le contenu de ce fichier dans la variable $contenu_du_fichier (le paramètre 255 passé à la fonction fgets() correspond au nombre de caractères à lire : ici, on a donné 255, ce qui correspond a un choix totalement arbitraire. En effet, vous pouvez mettre n'importe quel nombre. En revanche, si vous mettez 20 et que votre fichier comporte 128 caractères, seuls les 20 premiers seront lus).

- Instruction 3 : on referme le fichier donnees.txt à l'aide de la fonction fclose(). En effet, nous avons déjà le contenu du fichier dans la variable $contenu_du_fichier, alors le fichier ne nous intéresse plus.

- Instruction 4 : on affiche donc le contenu du fichier donnees.txt (notez encore une fois l'utilité de la concaténation des chaînes de caractères).


Aparté

Vous n'êtes absolument pas oblige de mettre ce fichier texte dans le même répertoire que le script PHP. En effet, si votre script PHP est à la racine de votre site et que le fichier à lire se trouve dans le répertoire /toto, vous écrirez alors votre script de la manière suivante :

exemple2


    <LI class=ligne_off onclick="if (this.className=='ligne_off') this.className='ligne_on'; else this.className='ligne_off';"><?php

    <LI class=ligne_off onclick="if (this.className=='ligne_off') this.className='ligne_on'; else this.className='ligne_off';">$fp = fopen ("toto/donnees.txt", "r");
    <LI class=ligne_off onclick="if (this.className=='ligne_off') this.className='ligne_on'; else this.className='ligne_off';">$contenu_du_fichier = fgets ($fp, 255);
    <LI class=ligne_off onclick="if (this.className=='ligne_off') this.className='ligne_on'; else this.className='ligne_off';">fclose ($fp);
    <LI class=ligne_off onclick="if (this.className=='ligne_off') this.className='ligne_on'; else this.className='ligne_off';">echo 'Notre fichier contient : '.$contenu_du_fichier;
  1. ?>



Ce qui produira un résultat tout a fait identique.

Etudions maintenant tous les paramètres possibles de la fonction fopen() :
- r : ouvre en lecture seule, et place le pointeur de fichier au début du fichier.
- r+ : ouvre en lecture et écriture, et place le pointeur de fichier au début du fichier.
- w : ouvre en écriture seule; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.
- w+ : ouvre en lecture et écriture; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.
- a : ouvre en écriture seule; place le pointeur de fichier à la fin du fichier file. Si le fichier n'existe pas, on tente de le créer.
- a+ : ouvre en lecture et écriture; place le pointeur de fichier à la fin du fichier. Si le fichier n'existe pas, on tente de le créer.


Un exemple concret : un mini compteur du nombre de visites.

Tachons maintenant de voir un exemple concret de lecture et d'écriture dans un fichier texte. En effet, nous allons réaliser un mini compteur de visites fait grâce à PHP et aux lecture/écriture dans un fichier texte.

Tout d'abord vous allez créer un fichier compteur.txt que vous allez placer dans le même répertoire que le script qui va suivre. Placez le chiffre "0" dans ce fichier.

Soit alors le bout de code PHP suivant :

exemple3


    <LI class=ligne_off onclick="if (this.className=='ligne_off') this.className='ligne_on'; else this.className='ligne_off';"><?php

    <LI class=ligne_off onclick="if (this.className=='ligne_off') this.className='ligne_on'; else this.className='ligne_off';">// Instruction 1
    <LI class=ligne_off onclick="if (this.className=='ligne_off') this.className='ligne_on'; else this.className='ligne_off';">$fp = fopen ("compteur.txt", "r+");
    <LI class=ligne_off onclick="if (this.className=='ligne_off') this.className='ligne_on'; else this.className='ligne_off';">// Instruction 2
    <LI class=ligne_off onclick="if (this.className=='ligne_off') this.className='ligne_on'; else this.className='ligne_off';">$nb_visites = fgets ($fp, 11);
    <LI class=ligne_off onclick="if (this.className=='ligne_off') this.className='ligne_on'; else this.className='ligne_off';">// Instruction 3
    <LI class=ligne_off onclick="if (this.className=='ligne_off') this.className='ligne_on'; else this.className='ligne_off';">$nb_visites = $nb_visites + 1;
    <LI class=ligne_off onclick="if (this.className=='ligne_off') this.className='ligne_on'; else this.className='ligne_off';">// Instruction 4
    <LI class=ligne_off onclick="if (this.className=='ligne_off') this.className='ligne_on'; else this.className='ligne_off';">fseek ($fp, 0);
    <LI class=ligne_off onclick="if (this.className=='ligne_off') this.className='ligne_on'; else this.className='ligne_off';">// Instruction 5
    <LI class=ligne_off onclick="if (this.className=='ligne_off') this.className='ligne_on'; else this.className='ligne_off';">fputs ($fp, $nb_visites);
    <LI class=ligne_off onclick="if (this.className=='ligne_off') this.className='ligne_on'; else this.className='ligne_off';">// Instrcution 6
    <LI class=ligne_off onclick="if (this.className=='ligne_off') this.className='ligne_on'; else this.className='ligne_off';">fclose ($fp);
    <LI class=ligne_off onclick="if (this.className=='ligne_off') this.className='ligne_on'; else this.className='ligne_off';">// Instrcution 7
    <LI class=ligne_off onclick="if (this.className=='ligne_off') this.className='ligne_on'; else this.className='ligne_off';">echo 'Ce site compte '.$nb_visites.' visiteurs !';
  1. ?>



On a alors :

- Instruction 1 : on ouvre le fichier compteur.txt en lecture et en ecriture.
- Instruction 2 : on lit le contenu du fichier et on place ce contenu (qui est donc le nombre de visiteurs de notre page) dans la variable $nb_visites.
- Instruction 3 : on augmente le nombre de visites de 1.
- Instruction 4 : on place le pointeur du fichier à l'offset 0 grâce à l'instruction fseek(). En clair, on se positionne au tout début de notre fichier.
- Instruction 5 : grâce à l'instruction fputs(), on écrit dans notre fichier la nouvelle valeur correspondant au nombre de visites.
- Instruction 6 : on ferme le fichier.
- Instruction 7 : on affiche le nombre de visites de notre page !!!









avatar
chouchou
مرشح للإشراف علي المنتديات الأدبية و الإسلامية
مرشح للإشراف علي المنتديات الأدبية و الإسلامية

ذكر
عدد الرسائل : 97
العمر : 29
العمل/الترفيه : informatique et internet
تاريخ التسجيل : 03/10/2007

معاينة صفحة البيانات الشخصي للعضو

الرجوع الى أعلى الصفحة اذهب الى الأسفل

التشجيع و الشكر لـ choucou

مُساهمة من طرف Prog-PRO في الثلاثاء 06 نوفمبر 2007, 11:19

التشجيع و الشكر لـ choucou انشاء الله تكون عنصر فاعل معنا
avatar
Prog-PRO
مشرف منتدى لغات البرمجة
مشرف منتدى لغات البرمجة

عدد الرسائل : 428
تاريخ التسجيل : 06/10/2007

معاينة صفحة البيانات الشخصي للعضو

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

- مواضيع مماثلة

 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى