Pb actualisation dans mini chat

Fermé
lloyd - 7 nov. 2007 à 09:25
 lloyd - 7 nov. 2007 à 16:44
Bonjour,

je suis en train d'apprendre le langage php/mysql (sur le site du zéro) afin de créer mon site.

j'ai crée un "mini chat", qui fonctionne bien mis à part un petit soucis :

lorsqu'un message a été saisi et que je fais actualisé la page, ce message est récrit come s'il avait été posté une seconde fois, idem si j'actualise un autre fois, il estt recopié une troisieme fois, etc....

je ne vois pas ce qu'il faut ajouter au code pour empecher ceci

j'espere que vous pourrez m'aider, merci d'avance

13 réponses

bhruin Messages postés 67 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 25 août 2019 448
7 nov. 2007 à 09:38
Bonjour,

Dans le tp que réalise M@teo21, il te donne la solution lui même a la fin dans: Étape 5 : améliorez ce script !.

En gros il dit qu'avant d'enregistrer le nouveau message, tu dois vérifier qu'il n' est pas identique au dernier message enregistré.

Je ne te cache pas que si tu reload la page et que si quelqu'un à envoyer un nouveau message entre temps le message sera a nouveau enregistré

A toi de trouver une solution à ce petit problème :)

Bonne journée.
0
oui je sais mais ca fait plusieurs jours que je me casse la tete la dessus...

merci qd mm =p
0
je ne parviens pas a trouver le bon code en fait ... =(
0
bhruin Messages postés 67 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 25 août 2019 448
7 nov. 2007 à 10:32
Salut,

Est-ce que tu a réussis à savoir si le dernier message est déjà dans la basse de données ou tu bloque déjà a cette étape?

Bonne journée !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
euh je ne suis pas certain de bien comprendre,

mais une fois le message posté, il va dans la base de donnée, puis j'affiche les derniers messages
ensuite si j'actualise, le dernier message est a nouveau rentré dans la base de données (donc en double)

le pb est donc la :

je pense qu'il doit y avoir plusieurs facons de proceder. Est-il plus rapide :

-de faire un test pour savoir si le dernier message est deja ds la base de données ?
-ou bien est-il possible de faire un truc du genre $_POST['pseudo'] = null; $_POST['message'] = null; ??

a+
0
j'ai partiellement résolu le pb :

j'ai choisi la 1ere solution evoqué dans le post ci dessus, cependant, qd je fais reactualiser la page, il y a qd mm une boite de dialogue qui s'affiche, me disant : "la page que vous tentez de voir contient des donnees envoyees par post...."

cmt faire pour que ce message ne s'affiche plus, cad en qques sortes "vider le _POST" ??
0
bhruin Messages postés 67 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 25 août 2019 448
7 nov. 2007 à 11:29
Coucou,

Moi je regarderais dans la base de données si ton message est déjà dedans, âpres ce n'est que mon avis personnel.

En gros tu aurais une requête qui prendrais le dernier message enregistré, tu vérifie si il correspond au message qui va être enregistré. En dépendant de la vérification sois tu l'enregistre soit tu affiche a nouveau la page sans rien modifier.

Bonne journée.
0
ok merci c ce que j'ai fait (cf mon dernier message ;)

mais j'ai tjs le pb de la fenetre qui s'affiche a la reacualisation et qui me dit : "la page que vous tentez de voir contient des donnees envoyees par post...."

cmt faire donc pour qu'il n'y ait plus rien ds le _POST['pseudo'] et le _POST['message'] ?? pour les ecraser et supprimer en fait ?

bonne journée aussi =)
0
bhruin Messages postés 67 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 25 août 2019 448
7 nov. 2007 à 11:53
Je te conseille de tester plusieurs choses:

-la fonction unset($_POST['pseudo']);

-de définir la variable $_POST['pseudo'] = '';

Je ne sais pas trop si les solutions que je vient de te donner sont correcte.

Voila, a toute :)
0
merci,

j'ai essayé $_POST['pseudo'] = ''; ...et il me semble que cela ne marche pas

a+
0
je crois que unset non plus ne marche pas
=s
0
bhruin Messages postés 67 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 25 août 2019 448
7 nov. 2007 à 12:50
Salut,

Je crois que tu va devoir utiliser un header ex: header('Location: fichier_apres_$_post.php').

Et tout tes problèmes seront résolus.

@+
0
salut,
ma question va paraitre un peu bete mais je ne vois pas ce qu'est un header ? quel est son role et quels est la nature de l'argument "location" ?
0