Aller au contenu

Nouvelle ligne à chaque chargement...


Sujets conseillés

Posté

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. ;)

Posté

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)

Posté (modifié)

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
Posté

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?

Posté

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...

Posté

Ca fait déjà pas mal de solutions! :wacko:

De toute façons, dans un premier temps, il n'y aurra pas trop de messages, je pourrai les enlever manuellement chaque matin.... :whistling:

Et pour créer le fichier .txt s'il n'existe pas encore? :blush:

Posté

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:

Posté

Bonjour,

Tu peux mettre le code que tu utilises ?

Il faut bien mettre le "a+" dans le fopen ;)

Posté

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.

Posté

Non, mon dossier existe bien...

La même chose avec juste le fichier .txt déjà créé: tout marchait bien! :unsure:

Le premier Warning:

Unable to access id01.txt
Il cherche donc le fichier, il le crée pas...
Posté

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?

Posté

chmod, c'est les droit en lecture écriture sur un fichier ou un répertoir de ton site ;)

Posté

Pas de chmod sur Free.... :(

Je vais créer mes fichier .txt à la main et je reverrais la question quand je prendrais mon prochain hebergement! :P

Merci de toutes vos explications!! :up:

Veuillez vous connecter pour commenter

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



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