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

Résolu/Fermé
fooximane
Messages postés
26
Date d'inscription
lundi 14 juin 2010
Statut
Membre
Dernière intervention
15 juin 2010
- 14 juin 2010 à 16:27
fooximane
Messages postés
26
Date d'inscription
lundi 14 juin 2010
Statut
Membre
Dernière intervention
15 juin 2010
- 14 juin 2010 à 18:10
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

Rctll
Messages postés
499
Date d'inscription
dimanche 11 mai 2008
Statut
Membre
Dernière intervention
30 juin 2010
1 089
14 juin 2010 à 16:32
ajouter fseek($monfichier,0,SEEK_END); avant le fputs te convient-il?
0
Leviathan49
Messages postés
257
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
22 juillet 2011
70
Modifié par Leviathan49 le 14/06/2010 à 16:37
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
fooximane
Messages postés
26
Date d'inscription
lundi 14 juin 2010
Statut
Membre
Dernière intervention
15 juin 2010
2
14 juin 2010 à 16:37
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
Rctll
Messages postés
499
Date d'inscription
dimanche 11 mai 2008
Statut
Membre
Dernière intervention
30 juin 2010
1 089
14 juin 2010 à 16:40
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
fooximane
Messages postés
26
Date d'inscription
lundi 14 juin 2010
Statut
Membre
Dernière intervention
15 juin 2010
2
14 juin 2010 à 16:51
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
fooximane
Messages postés
26
Date d'inscription
lundi 14 juin 2010
Statut
Membre
Dernière intervention
15 juin 2010
2
14 juin 2010 à 16:40
fseek($monfichier,0,SEEK_END); a quoi correspond le 0 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Leviathan49
Messages postés
257
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
22 juillet 2011
70
14 juin 2010 à 16:50
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
fooximane
Messages postés
26
Date d'inscription
lundi 14 juin 2010
Statut
Membre
Dernière intervention
15 juin 2010
2
14 juin 2010 à 17:01
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
Leviathan49
Messages postés
257
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
22 juillet 2011
70
Modifié par Leviathan49 le 14/06/2010 à 17:09
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
fooximane
Messages postés
26
Date d'inscription
lundi 14 juin 2010
Statut
Membre
Dernière intervention
15 juin 2010
2
14 juin 2010 à 17:11
Je test sa, et te donne mes résulta :)
0
fooximane
Messages postés
26
Date d'inscription
lundi 14 juin 2010
Statut
Membre
Dernière intervention
15 juin 2010
2
14 juin 2010 à 17:21
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
Leviathan49
Messages postés
257
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
22 juillet 2011
70
Modifié par Leviathan49 le 14/06/2010 à 17:27
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
fooximane
Messages postés
26
Date d'inscription
lundi 14 juin 2010
Statut
Membre
Dernière intervention
15 juin 2010
2
14 juin 2010 à 17:27
pas a chaque ligne mais a la fin du texte :)
0
fooximane
Messages postés
26
Date d'inscription
lundi 14 juin 2010
Statut
Membre
Dernière intervention
15 juin 2010
2
14 juin 2010 à 17:27
$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