Version complète: sur le forum Webmaster Hub : Problème avec une condition
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
kattig
Bonjour,

Je souhaiterais effacer une ligne de mon fichier texte. J'y arrive cependant si mon fichier texte contient par exemple:
premier
deuxieme
troisieme

Je fais en sorte de supprimer la deuxième ligne, ce qui me donne:
premier

troisieme

alors que je veux que cela donne:
premier
troisieme

Voici mon code:
CODE

<?php
$fichier=fopen("test.txt","r");
$i=0;
while(!feof($fichier))
{
$f[$i]=fgets($fichier,255);
$i=$i+1;
}
$ligne=$i;
fclose($fichier);
$f[1]= "";
$fichier=fopen("test.txt","w+");
for($i=0;$i<$ligne-1;$i++)
{
if($f[$i] != "")
{

fwrite($fichier,$f[$i]."\r\n");
}
}
if($f[$ligne-1] != "")
{
fwrite($fichier,$f[$ligne-1]);
}
fclose($fichier);
?>

Je pense qu'il ne prendre pas en compte les conditions que je lui ai donné en disant que si le contenu de la ième ligne est non vide alors il faut l'écrire.

Sauriez-vous quelle est la raison qui fait que ma condition ne soit pas prise en compte?

Je vous remercie d'avance pour votre réponse.

kattig
Vincent
Bonjour,

Peut être que le contenu de ta variable n'est pas réellement vide (on peut imaginer qu'il traine un retour chariot quelconque)
Essaye de tester avec la fonction empty()

sinon pour enlever la variable de ton tableau, essayes :
CODE
unset($f[1]);
kattig
Bonjour Vincent,
Je vous remercie pour votre aide [sourire]. Je viens d'essayer avec empty et malheureusement j'ai le même résultat (cela ne prend pas en compte la condition) ... Je ne comprend pas pourquoi cela ne fonctionne pas.. Mon code est pourtant bon, non?

kattig
Jeanluc
Le problème n'est-il pas que tu as un double saut de ligne à la fin de chaque ligne et donc que toutes tes lignes vont être affichées en sautant une ligne intermédiaire ?

Fais un essai en supprimant la ligne:
CODE
$f[1]= "";
Cela devrait éclaircir les choses.

Jean-Luc

P.S. tu peux utiliser rtrim(fgets(...)) au lieu de fgets(...) pour supprimer un saut de ligne.
kattig
Bonjour Jean-Luc,
Je vous remercie pour votre aide, je suis entrain de faire des essais.
Je vous dis tout de suite après si cela fonctionne.
Merci encore.

kattig
kattig
Rebonjour,

Je viens d'utiliser la fontion rtrim(fgets(...)) comme vous me l'avez conseillez et cela fonctionne parfaitement [sourire].
Je vous remercie milles fois pour votre aide smile.gif
Je vous souhaite à vous tous une bonne soirée et profitez bien de cette fin d'après-midi.

kattig
Interdit
Oui, ou vous pouviez simplement mettre:

fwrite($fichier,$f[$i]);

sans le "\r\n" ca devrait marcher aussi car votre code est correct.

Bon dimanche,
Interdit
kattig
Bonjour Interdit,
Je vous remercie pour votre aide. Je viens de faire comme vous me l'avez recommendé et cela fonctionne aussi [ravie].
Je pensais que si je ne mettais pas \r\n, cela aurait écrit que sur une seule ligne...
Et bien, je crois que je me suis trompée...
Merci encore milles fois à vous tous pour votre aide smile.gif
Et bien, je crois que je vais me remettre au travail...
Merci encore [sourire] et bonne fin d'après-midi.

kattig
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.