Crée un text en php et allé a la ligne
Résoluvoila 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
Modifier uniquement la fin d'une ligne précise dans un fichier texte via PHP sans écraser les données des autres lignes constitue la problématique centrale discutée. Des solutions variées émergent, notamment la réécriture via un fichier temporaire: lire chaque ligne, modifier la troisième selon $_POST et écrire les autres intactes, puis remplacer l'ancien fichier. D'autres propositions évoquent l'utilisation de fseek ou rewind pour reprendre au bon endroit, ou l'emploi de fputs sur une ligne modifiée suivie d'un renommage du fichier temporaire. Des échanges notent également qu'une erreur fréquente est l'utilisation d'une fonction inexistante (puts) au lieu de fputs et que la création d'un fichier temporaire est souvent recommandée.
-
ajouter fseek($monfichier,0,SEEK_END); avant le fputs te convient-il?
-
Si tu veux juste mettre $_POST['nom'] à la fin du fichier il suffit de faire
$monfichier = fopen('teste.txt', 'a');
fputs($monfichier, $_POST['nom']); -
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
-
-
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
-
-
fseek($monfichier,0,SEEK_END); a quoi correspond le 0 ?
-
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); -
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.-
-
-
-
-
$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');
-