Effacer une ligne dans fichier texte en php

Résolu/Fermé
Utilisateur anonyme - 17 mars 2010 à 22:29
 Utilisateur anonyme - 18 mars 2010 à 11:36
Bonjour,

Ca fait deja un moment que je cherche sur le web comment supprimer une ligne dans un fichier texte, je vous explique plus en details :

Ja'i un fichier texte "data.txt" qui comporte ces données (Je sais c'est idiot de mettre des utilisateurs dans un fichier texte mais c'est ce que l'on m'a demandé :D ):
admin;123;1;http://static.commentcamarche.net/...
michael;123;2;;
fake;123;54;;
admin2;123;;;


Ce fichier est bien sur toujours en modification donc ne comporte pas un nombre de ligne fixe.

ma question est la suivante : comment faire pour supprimer la ligne correspondant a un nom d'utilisateur rentrer par exemple dans un formulaire?

Merci d'avance pour votre precieuse aide et Bonne Journée
A voir également:

2 réponses

juanou Messages postés 137 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 23 août 2013 58
Modifié par juanou le 18/03/2010 à 11:44
Salut.

Voici en gros comment je ferais (non testé).
Ça peut te convenir ?

// charger le fichier dans un tableau 
$filePath = 'data.txt' 
$lignes = file($filePath); 

// rechercher/supprimer la ligne correspondant au nom indiqué dans le formulaire 
foreach ($lignes as $num => $data) { 
    if (  strpos  ( $data  ,  $_POST['nom'].';' ) === 0 ) { 
        unset $lignes[$num]; 
    } 
} 

// enregistrer ça dans le fichier 
$handle = fopen($filePath, 'w+'); 
fwrite ( $handle, implode  ("\n", $lignes) ); 
fclose($handle); 
5
Utilisateur anonyme
18 mars 2010 à 11:36
Hello,

Merci c'est super ca marche :D j'ai juste rajouter 2 ligne pour effacer le fichier avant d'ajouter les donnée mais sinon ca marche impec.

<?php

// charger le fichier dans un tableau
$filePath = 'data.txt';
$lignes = file($filePath);

// rechercher/supprimer la ligne correspondant au nom indiqué dans le formulaire
foreach ($lignes as $num => $data) 
{
    if (strpos($data,'admin2'.';') === 0) 
	{
		echo $lignes[$num];
        unset($lignes[$num]);
    }
}

//J'efface le fichier texte
$filename = 'data.txt';
$handle = fopen($filename, "w");
fclose($handle);
//Je referme le fichier

// enregistrer ça dans le fichier
$handle = fopen($filePath, 'a');
fwrite ( $handle, implode  ("\n", $lignes) );
fclose($handle);
?>


Ecore merci et bonne journée
0