Effacer une ligne dans fichier texte en php

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
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

2 réponses

  1. juanou Messages postés 145 Statut Membre 58
     
    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
  2. Utilisateur anonyme
     
    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