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

PHP & Base de données Discussion :

Supprimer et modifier une ligne dans fichier


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 201
    Par défaut Supprimer et modifier une ligne dans fichier
    Bonjour,

    Je voudrais supprimer une ligne dans une fichier et/ou modifier une partie de la ligne.

    Mon fichier texte est composé de deux séparateurs ":" (ID:description:valeur)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    1:test ligne 1:123456
    2:test ligne 2:789456
    A1:test ligne 3:ABC123
    Z1:test Z1:1111111
    Z2:test Z2:2222222
    Je voudrais par exemple supprimer la ligne qui comporte l'ID "A1" du fichier texte.
    Mais je n'arrive pas à un résultat concluant, ou alors je foire le fichier

    Dans un second temps je veux modifier la valeur "1111111" appartenant à l'ID "Z1"

    Merci.

  2. #2
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut,
    peux-tu préciser ce que tu n'arrives pas à faire ? Si ton fichier n'est pas trop gros, le plus simple est de tout coller dans un tableau avec file() puis de le parcourir en faisant des explode() sur chaque ligne ou des strpos() pour tester la chaîne de caractères, puis d'agir en conséquence. Sinon montre-nous ce que tu as déjà fait.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations forums :
    Inscription : Avril 2009
    Messages : 168
    Par défaut
    Bonjour,

    juste une idée:
    est ce que t'as pensé à utiliser des expressions régulières pour retrouver les infos que tu désires

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 201
    Par défaut
    J'ai réussi à trouver mon erreur pour le cas suppression d'une ligne.

    Voici mon code, si quelqu'un a une meilleure méthode ou un script plus rapide en éxécution je prend

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    $file=fopen("fichier.txt","r");
        $i=0;
        while($line=fgets($file,200)){
            $lineArr=explode(":",$line);
            if($searchID!=$lineArr[0]){
    			$newID[$i][0]=$lineArr[0];
    			$newID[$i][1]=$lineArr[1];
    			$newID[$i][2]=$lineArr[2];
                $i++;
            }else{
                $del=true;
            }
        }
        fclose($file);
     
        $file=fopen("fichier.txt","w");
        for($i=0;$i<count($newID);$i++){
            fputs($file,$newID[$i][0].":".$newID[$i][1].":".$newID[$i][2]);
        }
        fclose($file);
     
    if($del==true){
                return true;
            }else{
                return false;
            }
    Je suis en train d'adapter cette méthode pour modifier la valeur d'une ligne...

  5. #5
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Il y a effectivement plus simple mais je ne sais pas si c'est plus optimisé, quelque chose de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $file = "fichier.txt";
    $data = file($file);
    $searchId = 'A1'
    for($i = 0, $c = count($data); $i < $c; $i++) {
            if($strpos($searchId, $data[$i]) == 0) {
                    unset($data[$i]);
                    break;
            }
    }
    file_put_contents($file, $data);
    En rajoutant les tests de lecture/écriture sur le fichier.
    D'autre part, même en restant sur ta méthode, plutôt que de reconstruire la chaîne, tu peux stocker directement la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while($line=fgets($file,200)){
            $lineArr=explode(":",$line);
            if($searchID!=$lineArr[0]){
                    $newID[]=$line;
    }

Discussions similaires

  1. modifier une ligne dans fichier txt
    Par mvc_dev dans le forum C#
    Réponses: 6
    Dernier message: 14/05/2012, 13h23
  2. Modifier une ligne dans un fichier
    Par nabilfaouzi dans le forum VB.NET
    Réponses: 4
    Dernier message: 26/12/2011, 22h49
  3. Modifier une ligne dans fichier source
    Par rFlex dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 30/11/2011, 18h46
  4. code java pour modifier une ligne dans un fichier txt
    Par pacomou dans le forum Général Java
    Réponses: 1
    Dernier message: 03/09/2009, 15h23
  5. Modifier une ligne dans un fichier txt en java
    Par nihad510 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 09/10/2007, 22h08

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