Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lire un fichier texte

5 réponses
Avatar
Pascale
Je ne pensais pas que c'était compliqué... et bien pour moi, si.

Je voudrais juste garder une trace des courriels envoyés (cf ma question
précédente), mais je n'ai pas envie d'encombrer ma boîte aux lettres, donc
j'ai fait un petit fichier texte comme ça :

$fichier=fopen("fichier.txt","a+");
// Ceci à chaque envoi de courriel
$tlog="Courriel envoyé à ".$courriel." (".$pseudo.") avec la
liste\n".$liste1.";\n";
fwrite($fichier,$tlog);
// Fin des envois
fclose($fichier);

Le séparateur entre chaque entrée est un ;
Le fichier se crée normalement, si je le lis avec n'importe quel éditeur de
texte, le contenu est correct et complet.

Par exemple :

Courriel envoyé à xxxxxxx@yahoo.fr (untel) avec la liste
http://wwww.... (arbuste, fleurs blanches) entrée le 06/05/2009
;
Courriel envoyé à yyyyyyyy@laposte.net (unautre) avec la liste
http://wwww.... (semis spontané d'arbre ou d'arbuste) entrée le 13/01/2009
;
Courriel envoyé à zzzzzzzz@wanadoo.fr (machin) avec la liste
http://wwww.... (identification chaton d'arbre) entrée le 13/04/2009
http://wwww.... (identification fleur) entrée le 09/06/2009
;

etc

Seulement voilà, j'aimerais aussi pouvoir le relire, et c'est là que ça se
gâte :

$fichier=fopen("fichier.txt","r");
$lecture=fgets($fichier);
$donnees=explode(";",$lecture);
$combien=count($donnees)-1;
for ($i=0;$i<=$combien;$i++)
{echo $donnees[$i],"<br>";}
fclose($fichier);

C'est un code qui marche parfaitement sur d'autres fichiers texte sur un
autre de nos sites et là, rien à faire, seule une partie de la 1ère ligne
est affichée !

Courriel envoyé à xxxxxxx@yahoo.fr (untel) avec la liste

Et c'est tout !

J'ai cherché sur le ouaibe, essayé d'appliquer d'autres méthodes : rien à
faire, je n'y arrive pas.
Donc si une bonne âme peut m'aider à lire le contenu de ce foutu fichier
texte, je lui en serais reconnaissante...

--
Pascale

5 réponses

Avatar
Olivier Miakinen
Le 14/07/2009 22:07, Pascale a écrit :
Je ne pensais pas que c'était compliqué... et bien pour moi, si.

Je voudrais juste garder une trace des courriels envoyés (cf ma question
précédente), mais je n'ai pas envie d'encombrer ma boîte aux lettres, donc
j'ai fait un petit fichier texte comme ça :

$fichier=fopen("fichier.txt","a+");
// Ceci à chaque envoi de courriel
$tlog="Courriel envoyé à ".$courriel." (".$pseudo.") avec la
listen".$liste1.";n";
fwrite($fichier,$tlog);
// Fin des envois
fclose($fichier);



Ok. Chaque enregistrement s'étend sur plusieurs lignes (il y a au moins
deux "n" sans compter ceux qui peuvent être cachés dans les variables)
et le séparateur d'enregistrement est un ";".

$fichier=fopen("fichier.txt","r");



Tu ouvres le fichier

$lecture=fgets($fichier);



Tu lis la première ligne (qui n'est qu'une partie du premier
enregistrement).

$donnees=explode(";",$lecture);



Inutile : il n'y a pas de ";" sur cette ligne.

$combien=count($donnees)-1;



$combien = 0

for ($i=0;$i<=$combien;$i++)
{echo $donnees[$i],"<br>";}



echo $donnees[0]

fclose($fichier);



Et c'est fini. Pas étonnant que tu ne sois pas satisfaite !


Essaye ceci (j'ai juste remplacé trois lignes par une seule) :

$lecture=file_get_contents("fichier.txt");
$donnees=explode(";",$lecture);
$combien=count($donnees)-1;
for ($i=0;$i<=$combien;$i++)
{echo $donnees[$i],"<br>";}

--
Olivier Miakinen
Avatar
Pascale
Olivier Miakinen <om+ écrivait
news:4a5ce9aa$:

Ok. Chaque enregistrement s'étend sur plusieurs lignes (il y a au moins
deux "n" sans compter ceux qui peuvent être cachés dans les variables)



Il pourrait y en avoir, mais il n'y en a pas (j'ai fait simple, histoire de
ne pas rajouter d'ennuis).

et le séparateur d'enregistrement est un ";".



Exact.

[couic]
Et c'est fini. Pas étonnant que tu ne sois pas satisfaite !



Merci pour la dissection, je comprends mieux pourquoi ça merdoie.

Essaye ceci (j'ai juste remplacé trois lignes par une seule) :

$lecture=file_get_contents("fichier.txt");
$donnees=explode(";",$lecture);
$combien=count($donnees)-1;
for ($i=0;$i<=$combien;$i++)
{echo $donnees[$i],"<br>";}



Et - évidemment - ÇA, ça marche ! (-:

Je vais être obligée de te citer comme co-auteur du site, à ce rythme là !
(o:

--
Pascale
Avatar
Xavier Nayrac
Pascale a écrit :
Je ne pensais pas que c'était compliqué... et bien pour moi, si.

Je voudrais juste garder une trace des courriels envoyés (cf ma question
précédente), mais je n'ai pas envie d'encombrer ma boîte aux lettres, donc
j'ai fait un petit fichier texte comme ça :

$fichier=fopen("fichier.txt","a+");
// Ceci à chaque envoi de courriel
$tlog="Courriel envoyé à ".$courriel." (".$pseudo.") avec la
listen".$liste1.";n";
fwrite($fichier,$tlog);
// Fin des envois
fclose($fichier);




...

Seulement voilà, j'aimerais aussi pouvoir le relire, et c'est là que ça se
gâte :

$fichier=fopen("fichier.txt","r");
$lecture=fgets($fichier);
$donnees=explode(";",$lecture);
$combien=count($donnees)-1;
for ($i=0;$i<=$combien;$i++)
{echo $donnees[$i],"<br>";}
fclose($fichier);

C'est un code qui marche parfaitement sur d'autres fichiers texte sur un
autre de nos sites et là, rien à faire, seule une partie de la 1ère ligne
est affichée !



Non, toute la première ligne est affichée, la seule et unique ligne que
lit ton programme. Tu confonds une ligne de texte, au sens de php, avec
un enregistrement, au sens de ton appli.


Courriel envoyé à (untel) avec la liste

Et c'est tout !

J'ai cherché sur le ouaibe, essayé d'appliquer d'autres méthodes : rien à
faire, je n'y arrive pas.



Tu n'as peut-être pas chercher au bon endroit :
http://fr.php.net/manual/fr/function.fgets.php

--
Xavier Nayrac
http://personalbugtracker.free.fr
Avatar
Pascale
Xavier Nayrac écrivait
news:4a5d0cad$0$289$:

Non, toute la première ligne est affichée, la seule et unique ligne
que lit ton programme. Tu confonds une ligne de texte, au sens de php,
avec un enregistrement, au sens de ton appli.



Oui, je pense que c'est (c'était ?) bien mon problème.

Tu n'as peut-être pas chercher au bon endroit :
http://fr.php.net/manual/fr/function.fgets.php



Oh si, j'étais allée voir, mais il est évident que je n'avais pas compris
ce que je lisais. J'ai dû croire que le pointeur se déplaçait gentiment du
début à la fin du fichier...

--
Pascale
http://www.la-grille-verte.net
Avatar
Globule
Désolé de vous déranger mais je passais par là alors une petite idée
m'est venu : "file_get_contents"

http://www.php.net/manual/fr/function.file-get-contents.php