IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

supprimer une ligne dans un fichier


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de cflo91
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 113
    Points : 77
    Points
    77
    Par défaut supprimer une ligne dans un fichier
    Bonjour,
    je voudrais juste savoir comment l'on fait pour supprimer une ligne quand on a son numéro.??

    Merci d'avance.

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Tu ne peux pas supprimer une ligne directement d'un fichier.
    Il faut que tu lises tout le fichier ligne a ligne (comme tu le fais dans l'autre post il me semble) ensuite tu crées une sorte de "tampon" dans lequel tu stockes toutes les lignes les unes a la suite des autres. Comme ca, la ligne que tu souhaites enlever, tu ne l'ajoutes pas au tampon.
    Et a la fin tu réécris ton tampon dans le fichier a la place de ce qu'il y avait avant.

    Si tu veux éviter de mémoriser TOUT le fichier en mémoire, dans ce cas il faut que tu crées un nouveau fichier, que tu écris ligne a ligne dedans (la ligne que tu es en train de lire) sauf celle(s) que tu ne veux pas. Et a la fin tu supprimes le fichier de départ et tu renommes le nouveau fichier pour le remplacer.

  3. #3
    Membre régulier Avatar de cflo91
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 113
    Points : 77
    Points
    77
    Par défaut
    voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    $fic = fopen($fichier, "r" );
     
            for ($i = 1; $i<$num; $i++)// On se place directement à la ligne souhaitée
              { 
    		    $string .= fgets($fic);
    		  }
    		$string .= "define(\"" . $constante . "\", \"" . $nvaleur . "\" );\n";
     
            while (!feof($fic))
              {
                $string .= fgets($fic);
              }
            fclose($fic);
     
            $fic = fopen($fichier, "w+" );
            fputs($fic, $string);
            fclose($fic);
    Avant, j'ai récupéré, la valeur de $constante, $num est le numéro de la ligne à "supp/modifié" .

    Je n'ai pas trop compris comment je devais faire?
    Pouvez vous m'aidez svp.

    Merci d'avance

  4. #4
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Si je comprends bien ton code tu veux remplacer la ligne numéro $num par une ligne que tu crées toi meme? Et actuellement tu arrives a mettre ta ligne mais pas a retirer la précédente?

    Si c'est bien le cas, en fait il faut que tu lises une ligne entre ton for et ton while sans la mémoriser dans $string.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <?php
    // ouvre le fichier
    $fic = fopen($fichier, "r" ); 
     
    // lit toutes les lignes jusqu'a celle qu'on veut retirer (sans la lire)
    for ($i = 1; $i<$num; $i++)// On se place directement à la ligne souhaitée 
    { 
    $string .= fgets($fic); 
    } 
     
    // il faut lire la ligne a supprimer sans la mémoriser
    fgets($fic);
     
    // a la place on met la ligne qu'on veut ajouter
    $string .= "define(\"" . $constante . "\", \"" . $nvaleur . "\" );\n"; 
     
    // puis on lit la fin du fichier
    while (!feof($fic)) 
    {
    $string .= fgets($fic); 
    } 
     
    // on ferme le fichier puis on écrit la nouvelle version
    fclose($fic);   
    $fic = fopen($fichier, "w+" ); 
    fputs($fic, $string); 
    fclose($fic);  
    ?>

  5. #5
    Membre régulier Avatar de cflo91
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 113
    Points : 77
    Points
    77
    Par défaut
    Merci pour ton aide, ça fonctionne parfaitement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Supprimer une ligne dans un fichier texte
    Par @yoyo dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 28/03/2006, 15h19
  2. Supprime une ligne dans un fichier texte
    Par dev7 dans le forum Linux
    Réponses: 4
    Dernier message: 28/03/2006, 02h33
  3. Supprimer une ligne dans un fichier text
    Par philippe13 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 14/03/2006, 17h43
  4. Supprimer une ligne dans un fichier
    Par tsing dans le forum Linux
    Réponses: 4
    Dernier message: 06/02/2006, 15h45
  5. Supprimer une ligne dans un fichier
    Par sbeu dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2003, 11h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo