Aller au contenu

Nouvelle ligne à chaque chargement...


Gribouille26

Sujets conseillés

Bonjour, :)

J'ai fait une sorte :whistling: de Blog.

Les internautes peuvent entrer leurs commentaires, lesquels sont inscrits sur la page (et dans un fichier .txt) à la suite des commentaires déjà envoyés.

Le probleme étant que quand je charge la page contenant les commentaires (et le formulaire pour en envoyé d'autres), une ligne est automatiquement ajoutée dans les commentaires!

Voilà mon bout de code qui enregistre les messages:

$session = fopen("id01.txt","a+");
$texte = $nom." le ".$date." : ".$texte."<br />"."\n";
fwrite( $session, $texte);

Y aurrai-je fait une erreur qui engendre cette nouvelle ligne? :huh:

Merci de votre aide. ;)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Si ce code s'exécute à chaque fois que tu charges la page, il est effectivement normal qu'une ligne soit ajoutée.

Pour n'ajouter une ligne que si le formulaire est soumis il faut rendre l'exécution de ce code conditionnelle à la soumission du formulaire, par un:

if (isset($_POST["envoyer"])) {
$session = fopen("id01.txt","a+");
$texte = $nom." le ".$date." : ".$texte."<br />"."\n";
fwrite( $session, $texte);
}

("envoyer" dans cet exemple étant le "name" de ton bouton submit)

Lien vers le commentaire
Partager sur d’autres sites

Merci!! :up::flower:

Je viens de le mettre en place.

Je n'ai fait qu'un seul essai, mais ça marche! :D

Jan: rapide, efficace... :clap:

[edit] Euh... au passage,... Tu ne sais pas comment faire pour créer un nouveau fichier texte si celui-ci n'existe pas encore? :whistling: [/edit]

Modifié par Gribouille26
Lien vers le commentaire
Partager sur d’autres sites

Ma boule de cristal me dit que le prochain problème que tu vas rencontrer est qu'après soumission du formulaire et ajout d'un message, le message se réécrit si tu recharges la page par le bouton refresh de ton navigateur :P Je me trompe?

Lien vers le commentaire
Partager sur d’autres sites

Alors pour contourner ce problème il peut y avoir plusieurs solutions:

- avant décrire dans le fichier, vérifier que le message n'y est pas présent (un peu lourd)

- envoyer un cookie à l'utilisateur à chaque fois qu'il poste un message pour lui interdire de reposter avant x minutes (pas très fiables les cookies)

- faire faire l'écriture dans le fichier texte par un script extérieur à ta page (<form action="script-a-part.php">) qui redirige (par header Location), quand il a fini d'écrire, vers la page qui affiche le formulaire et les messages (solution que j'utilise).

Mais, je suis sur qu'il y a mieux...

Lien vers le commentaire
Partager sur d’autres sites

Pourtant, j'ai bien mis a+ dans mon code, mais si le fichier .txt n'existe pas, il me met plein de Warning!!

Warning: fopen(): Unable to access id01.txt in /var/www/free.fr/0/7/gribouille26/blog/id01.php on line 34

Warning: fopen(id01.txt): failed to open stream: No such file or directory in /var/www/free.fr/0/7/gribouille26/blog/id01.php on line 34

Warning: filesize(): Stat failed for id01.txt (errno=2 - No such file or directory) in /var/www/free.fr/0/7/gribouille26/blog/id01.php on line 35

Warning: fread(): supplied argument is not a valid stream resource in /var/www/free.fr/0/7/gribouille26/blog/id01.php on line 35

Warning: fclose(): supplied argument is not a valid stream resource in /var/www/free.fr/0/7/gribouille26/blog/id01.php on line 37

:huh:

Lien vers le commentaire
Partager sur d’autres sites

Il semblerait que ton fichier n'existe pas, mais aussi que ton répertoire n'existe pas. Jettes un oeil sur le message d'erreur, et vérifies si le fichier se situe bien là où l'indique le message d'erreur.

Lien vers le commentaire
Partager sur d’autres sites

Alors là, si tu parles Chmod, je comprend plus! :blink:

J'ai trouvé ceci pour verifier s'il y a un fichier:

if(file_exists("le_fichier.txt"))

Et ceci pour créer un fichier qui n'existe pas encore:

touch("nom_du_fichier.txt");

J'avais jamais vu ce touch avant! Qu'en pensez-vous?

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...