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 :

Problème avec un fichier texte


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Par défaut Problème avec un fichier texte
    Bonjour à tous,

    J'ai un petit soucis avec un fichier texte, je m'explique : j'ai un fichier texte avec par exemple ceci :

    1:bibi
    2:bobo
    3:baba
    Et je voudrais arriver à ça si la variable $ress='2' :

    1:bibi
    2:bobo, bubu
    3:baba
    Mais j'arrive à ceci :

    1:bibi
    2:bobo
    , bubu3:baba
    Je ne comprends où est mon erreur, c'est pourquoi je fais appel à vous, oh grands développeurs !!

    Voici le 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <?php
    // Formulaire pour modifier un fichier texte 
     
    $chemin = 'D:/www/Formulaire Archives/essai.txt'; // le chemin de votre fichier 
     
    $texte = ', bubu';
    $ress = '2';
     
    // Modification du fichier 
    $f = fopen($chemin, "a+"); // ouvre le fichier en ouverture/écriture avec le pointeur au début du fichier
    $tab = file($chemin);  // place le fichier dans un tableau 
    $nb = count($tab);    // compte le nombre de ligne 
     
    for($j=0;$j<$nb;$j++){
    	$mot=$tab[$j][0];
    	if($mot==$ress){
    	        $ligne=$j;
    	}
    }
    fclose($f); 
     
    $f = fopen($chemin, "a+"); 
    $tab_old=$tab[$ligne];
    $tab[$ligne]=$tab_old.$texte;
     
    file_put_contents($chemin, implode($tab));
     
    fclose($f);
     
    ?>

  2. #2
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    en fait tu t'y prends un peu mal :s

    ton problème est qu'à la fin de chaque ligne, il existe des caracètres invisibles tels que \r\n qui sont des retours à la ligne

    Ce que je te conseille, c'est bien de récupérer le contenu de ton fichier grâce à file() MAIS ALORS (et ça sera bcp bcp plus simple) de faire les modifications dans cet array !

    il ne te reste ensuite qu'à recopier cet array() dans ton fichier texte


    Sinon, si tu souhaites garder ton code, utilise la fonction trim() qui supprimera les caractères non désirés en début et fin de chaine de caractère

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Par défaut
    Citation Envoyé par darkstar123456 Voir le message
    Ce que je te conseille, c'est bien de récupérer le contenu de ton fichier grâce à file() MAIS ALORS (et ça sera bcp bcp plus simple) de faire les modifications dans cet array !

    il ne te reste ensuite qu'à recopier cet array() dans ton fichier texte
    Bah en fait c'est ce que je croyais faire... !
    Donc comme je n'y parvenais pas, j'ai utilisé ta fonction trim(), même là j'ai l'impression de faire les modifs dans le Array, bizarre... !!

    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
    <?php
    // Formulaire pour modifier un fichier texte 
     
    $chemin = 'D:/www/Formulaire Archives/essai.txt'; // le chemin de votre fichier 
     
    $texte = ', bubu';
    $ress = '2';
     
    // Modification du fichier 
    $f = fopen($chemin, "a+"); // ouvre le fichier en ouverture/écriture avec le pointeur au début du fichier
    $tab = file($chemin);  // place le fichier dans un tableau 
    $nb = count($tab);    // compte le nombre de ligne 
     
    for($j=0;$j<$nb;$j++){
    	$mot=$tab[$j][0];
    	if($mot==$ress){
    		$ligne=$j;
    	}
    }
    fclose($f); 
    $tab[$ligne]=trim($tab[$ligne]);
    $tab[$ligne]=$tab[$ligne].$texte."\r\n";
    $f = fopen($chemin, "a+");
    file_put_contents($chemin, implode($tab));
    fclose($f);
    ?>
    Après ce code, j'obtiens bien en HTML :
    1:baba
    2:bibi, bubu
    3:bobo
    Merci de ton aide précieuse en tout cas !!

  4. #4
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    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
    <?php
    // Formulaire pour modifier un fichier texte 
     
    $chemin = 'D:/www/Formulaire Archives/essai.txt'; // le chemin de votre fichier 
     
    $texte = ', bubu';
    $ress = '2';
     
    // Modification du fichier 
    $tab = file($chemin);  // place le fichier dans un tableau 
    $tab[$ress] = trim($tab[$ress]) . $texte."\r\n"; // modification de la ligne
    // On pourrait vérifier que la ligne existe belle et bien, mais au pire des cas, ça sera ajouté à la derniere ligne
     
    // Ecriture du fichier
    $fp = fopen($chemin, "w+");
    foreach ($tab AS $v) {
         fwrite($fp, $v);
    }
    fclose($fp);
    ?>
    Voici... quoi qu'il arrive, tu es obligé d'utilisé trim() mais je trouve qu'il est plus facile de l'utiliser comme dans mon petit bout de code (j'ai repris toutes tes variables pour que tu puisses tester plus facilement )

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

Discussions similaires

  1. Erreur E/S 105 lors d'ecriture avec un fichier text
    Par Andry dans le forum Langage
    Réponses: 5
    Dernier message: 20/02/2009, 12h29
  2. [TListview] Initialisation avec un fichier texte
    Par Lenaick dans le forum C++Builder
    Réponses: 1
    Dernier message: 14/03/2006, 19h44
  3. [Delphi 6] Problème avec la propriété Text d'un composant
    Par bionoir dans le forum Composants VCL
    Réponses: 4
    Dernier message: 08/12/2005, 12h23
  4. Problème avec des fichiers
    Par Stany dans le forum C++
    Réponses: 7
    Dernier message: 17/10/2005, 17h53
  5. Problème avec les fichiers .JPG
    Par cprogil dans le forum Langage
    Réponses: 5
    Dernier message: 10/06/2003, 16h44

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