Gribouille26 Posté 22 Novembre 2004 Posté 22 Novembre 2004 Bonjour, J'ai fait une sorte 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? Merci de votre aide.
Jan Posté 22 Novembre 2004 Posté 22 Novembre 2004 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)
Gribouille26 Posté 22 Novembre 2004 Auteur Posté 22 Novembre 2004 (modifié) Merci!! Je viens de le mettre en place. Je n'ai fait qu'un seul essai, mais ça marche! Jan: rapide, efficace... [edit] Euh... au passage,... Tu ne sais pas comment faire pour créer un nouveau fichier texte si celui-ci n'existe pas encore? [/edit] Modifié 22 Novembre 2004 par Gribouille26
Jan Posté 22 Novembre 2004 Posté 22 Novembre 2004 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 Je me trompe?
Jan Posté 22 Novembre 2004 Posté 22 Novembre 2004 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...
Gribouille26 Posté 22 Novembre 2004 Auteur Posté 22 Novembre 2004 Ca fait déjà pas mal de solutions! De toute façons, dans un premier temps, il n'y aurra pas trop de messages, je pourrai les enlever manuellement chaque matin.... Et pour créer le fichier .txt s'il n'existe pas encore?
Jan Posté 22 Novembre 2004 Posté 22 Novembre 2004 a+ dans fopen() le fait: Ouvre en lecture et écriture; place le pointeur de fichier à la fin du fichier. Si le fichier n'existe pas, on tente de le créer. Voir http://de.php.net/manual/fr/function.fopen.php
Gribouille26 Posté 22 Novembre 2004 Auteur Posté 22 Novembre 2004 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 34Warning: 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
Anonymus Posté 22 Novembre 2004 Posté 22 Novembre 2004 Bonjour, Tu peux mettre le code que tu utilises ? Il faut bien mettre le "a+" dans le fopen
Anonymus Posté 22 Novembre 2004 Posté 22 Novembre 2004 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.
Gribouille26 Posté 22 Novembre 2004 Auteur Posté 22 Novembre 2004 Non, mon dossier existe bien... La même chose avec juste le fichier .txt déjà créé: tout marchait bien! Le premier Warning: Unable to access id01.txt Il cherche donc le fichier, il le crée pas...
Anonymus Posté 22 Novembre 2004 Posté 22 Novembre 2004 Jettes un oeil aux Chmod du répertoire, pas du fichier.
Gribouille26 Posté 22 Novembre 2004 Auteur Posté 22 Novembre 2004 Alors là, si tu parles Chmod, je comprend plus! 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?
genmin Posté 22 Novembre 2004 Posté 22 Novembre 2004 chmod, c'est les droit en lecture écriture sur un fichier ou un répertoir de ton site
Gribouille26 Posté 22 Novembre 2004 Auteur Posté 22 Novembre 2004 Ah! Merci. Je ne sais pas comment vérifier ça; mais je n'ai jamais rien interdit de moi-même...
genmin Posté 22 Novembre 2004 Posté 22 Novembre 2004 Perso je me sers de CuteFTP pour les transfert FTP et il intègre cette commande. info sur le chmod
Gribouille26 Posté 22 Novembre 2004 Auteur Posté 22 Novembre 2004 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! Merci de toutes vos explications!!
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant