Crée un text en php et allé a la ligne

Résolu
fooximane Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
fooximane Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
voila mon problème mon script marche bien, j'arrive a allé a la troisième ligne comme vous pouvez le voir sur le script ci-dessous c'est mon but, mais je voudrai allé a la fin de la ligne pour ne pas écrasé les donnés qui s'y trouve
ex:
1ligne
2ligne
3ligne (ne pas écrire ici )essfdsfgfsg(je voudrai écrire ici)

pourrez vous m'aidez car je patauge depuis des heures :(

Merci d'avance, voici mon script :

<?php

$monfichier = fopen('teste.txt', 'r+');

$ligne = fgets($monfichier);
$ligne = fgets($monfichier);
$ligne = fgets($monfichier);

fputs($monfichier, ($_POST['nom']));

fclose($monfichier);
?>

6 réponses

  1. Rctll Messages postés 510 Date d'inscription   Statut Membre Dernière intervention   1 535
     
    ajouter fseek($monfichier,0,SEEK_END); avant le fputs te convient-il?
    0
  2. Leviathan49 Messages postés 267 Statut Membre 70
     
    Si tu veux juste mettre $_POST['nom'] à la fin du fichier il suffit de faire

    $monfichier = fopen('teste.txt', 'a');
    fputs($monfichier, $_POST['nom']);
    0
  3. fooximane Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   2
     
    je vais tester tout de suite, Leviathan49 le problème c'est que je ne veut pas que se soit a la fin du texte il y à des ligne après environ 15 lign ( programmation bat ) donc je vise la fin de la troisième ligne pour compléter mon bat
    0
    1. Rctll Messages postés 510 Date d'inscription   Statut Membre Dernière intervention   1 535
       
      auquel cas ma solution ne marchera pas non plus. en fait je n'arrive pas à voir ou est le problème?
      s'il s'agit de creer un retour à la ligne, le couple \r\n suffira.
      0
    2. fooximane Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   2
       
      non justement je ne veut pas allé a la ligne mais complété la ligne justement

      imaginon

      ligne 1 = un petit mouton rouge
      ligne 2 = un petit mouton bleue
      ligne 3 = un petit mouton (la je v mettre mon texte )
      ligne 4 = un petit mouton orange
      ....

      tu voi se que je v dire si je vai a la ligne sa remplasera la ligne 4 , et je ne pe pas crer la lign 3
      complète car c'est du langage bat, donc il faut que ce langage soi déjà écrie
      0
  4. fooximane Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   2
     
    fseek($monfichier,0,SEEK_END); a quoi correspond le 0 ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Leviathan49 Messages postés 267 Statut Membre 70
     
    Ah, une ligne précise... Je propose alors :

    $monfichier = fopen('t.txt', 'r+');

    $ligne = fgets($monfichier);
    $ligne = fgets($monfichier);
    $ligne = fgets($monfichier);

    $var = trim($ligne); // recupèrer la troisième ligne sans saut de ligne
    rewind($monfichier); // reviens au début du fichier

    $ligne = fgets($monfichier);
    $ligne = fgets($monfichier);
    fputs($monfichier, $var."test");

    fclose($monfichier);
    0
    1. fooximane Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   2
       
      oui, mais sa supprime le début de la ligne en gros je veut que mon curseur soi a la fin de la troisième ligne
      0
  7. Leviathan49 Messages postés 267 Statut Membre 70
     
    Oui, après reflexion cette solution risque de ne pas marcher et d'ecraser les lignes du dessous...

    Solution de facilité :

    $monfichier =file('t.txt');   
    $monfichier2 = fopen('t2.txt', 'w');  
    
    $i=0;  
     foreach($monfichier as $line)  
    {  
       $i++;  
       if($i==3)  
       {  
          fputs($monfichier2,trim($line)."test\n");  // trim pour virer le retour à la ligne 
       }  
       else  
       {  
          fputs($monfichier2,$line);  
       }  
    }  
    fclose($monfichier2);  
    
    rename('t2.txt','t.txt');  
    
    


    J'ai testé et ça met bien test a la fin de la troisième ligne sans supprimer le reste.
    -1
    1. fooximane Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   2
       
      Je test sa, et te donne mes résulta :)
      0
    2. fooximane Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   2
       
      c'est une avancé, mais sa me mais le mot a la fin de toute les ligne en grop j'ai 15 ligne je veut y mettre sur la fin mais de la troisième ligne
      0
    3. Leviathan49 Messages postés 267 Statut Membre 70
       
      Hum, bizarre, je teste si le numéro de la ligne (stocké dans $i) est bien de 3. C'est étrange...

      Edit: j'ai beau retester je vois pas comment ça peut te rajouter ça à chaque ligne malgré le if :/
      Chez moi c'est donc bien uniquement la troisième ligne qui est modifié.
      0
    4. fooximane Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   2
       
      pas a chaque ligne mais a la fin du texte :)
      0
    5. fooximane Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   2
       
      $monfichier = file('teste.txt');
      $monfichier2 = fopen('t2.txt', 'w');
      $i=0;
      foreach($monfichier as $line)
      {
      $i++;
      if($i==3)
      {
      fputs($monfichier2,trim($line)."test\n"); // trim pour virer le retour à la ligne
      }
      else
      {
      fputs($monfichier2,$line);
      }
      }

      fputs($monfichier2, ($_POST['nom']));
      fclose($monfichier2);
      rename('t2.txt','teste.txt');
      0