8792 sujets

Développement web côté serveur, CMS

bonjour.

lorsqu'un formulaire passe par un script php qui permet de stocker une entrée dans un fichier .txt, ce dernier se remplit de bas en haut, c'est à dire chaque nouvelle entrée vient se placer au-dessus de l'ancienne.

je n'arrive plus à retrouver le script qui permet de faire l'inverse, c'est-à-dire d'entrer la nouvelle donnée au-dessous de l'ancienne...

merci d'avance si vous pouvez m'aiguiller... @++
Modifié par djthal (25 Oct 2006 - 21:18)
Salut

Tu n'a qu'a ouvrir ton fichier avec le flag "a" (pour Append). De cette maniere, le curseur sera placé immédiatement à la fin du fichier!


$handle = fopen("/home/user/file.txt", "a");
merci pour ta réponse. voici mon script avant ta réponse:

<?php
// Mettons le (future) fichier dans une variable
$commentaires="../includes/expos.txt";

// assignons nos 2 variables du formulaire et on en profite pour les protégers des balises HTML
$message=htmlspecialchars($_POST['message'],ENT_NOQUOTES);
$message=stripslashes($_POST['message']);

// On met en place quelques conditions pour les cellules (nom et message)
// On vérifie avant tout si le fichier existe si ce n'est pas le cas on le crée
if(!is_file($commentaires))
{
$verif=@fopen($commentaires,"w+");
}

// On vérifie que le login ou le message ne soient pas vide
elseif (trim($message)=="")
{
echo "Tu dois remplir tous les champs ! <a href=\"index.html\">Retour</a>";

// On sort du script !
exit;
}

// Après ces quelques vérification d'usage on passe  à l'exécution de ce formulaire

// Si ok on ouvre en écirture-enregistrement du fichier message.txt
$verif=@fopen($commentaires,"r+");
   
// On analyse les anciennes données et on les stocks
$stock=@fread($verif,filesize($commentaires));

// On met la date dans une varialbe
$date=date ("d/m/Y");

// On paramère le tout dans la variable $opinion
$opinion=$message."\n";

// On remet le curseur du fichier en début de ligne
rewind($verif);

// On insère le nouveau commentaire
fputs($verif,$opinion." \n".$stock);

// On clot le fichier
fclose($verif);

// On affiche le tout
readfile(stripslashes($commentaires));

?>


je remplace "w+" par "a" mais ca ne marche toujours pas... les entrées vont toujours en début de fichier. mais peut-être mon script que je n'ai pas écrit moi-même d'ailleurs, n'est pas très bon...

merci @++
Modifié par djthal (25 Oct 2006 - 21:14)
Normal puisque tu fesais un rewind() avant l'écriture. C'est explicitement dit dans les commentaires dailleur!
Solution php 5 uniquement :

file_put_contents($nom_du_fichier, file_get_contents($nom_du_fichier).$chaine_a_rajouter);
j'ai php5 ca devrait jouer. merci. je vais essayer si l'autre ne marche pas.

quant au rewind, j'ai biensûr essayer sans ça, mais ça me faisait un truc bizarre: la même ligne se répétait, une fois au début du .txt et une fois à la fin.

faut-il que j'essaie avec "a" et sans le "rewind" ? arff...
merci d'avance !!
youpiii merci pour le "a". c'est tout bon en fait.

<?php
// Mettons le (future) fichier dans une variable
$commentaires="../includes/expos.txt";

// assignons nos 2 variables du formulaire et on en profite pour les protégers des balises HTML
$message=htmlspecialchars($_POST['message'],ENT_NOQUOTES);
$message=stripslashes($_POST['message']);

// On met en place quelques conditions pour les cellules (nom et message)
// On vérifie avant tout si le fichier existe si ce n'est pas le cas on le crée
if(!is_file($commentaires))
{
$verif=@fopen($commentaires,"a");
}

// On vérifie que le login ou le message ne soient pas vide
elseif (trim($message)=="")
{
echo "Tu dois remplir tous les champs ! <a href=\"index.html\">Retour</a>";

// On sort du script !
exit;
}

// Après ces quelques vérification d'usage on passe  à l'exécution de ce formulaire

// Si ok on ouvre en écirture-enregistrement du fichier message.txt
$verif=@fopen($commentaires,"a");
   
// On analyse les anciennes données et on les stocks
$stock=@fread($verif,filesize($commentaires));

// On met la date dans une varialbe
$date=date ("d/m/Y");

// On paramère le tout dans la variable $opinion
$opinion=$message."\n";

// On remet le curseur du fichier en début de ligne
//rewind($verif);

// On insère le nouveau commentaire
fputs($verif,$opinion." \n".$stock);

// On clot le fichier
fclose($verif);

// On affiche le tout
readfile(stripslashes($commentaires));

?>