voila j'ai realisez un chat mais quand j'actualise après envoyez un message ca apparez en double . pouvez vous m'aidez svp
voila j'ai realisez un chat mais quand j'actualise après envoyez un message ca apparez en double . pouvez vous m'aidez svp
comme j'ai ma boule de cristal avec moi, je suppose que tu envoie ton message en POST. la raison de ton pb est simple : quand tu actualises, le message est naturellement renvoyé. le plus simple pour pallier a cela est, comme c'est le cas sur ce forum par exemple, de passer par ne page intermediaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 page ou tu tapes le message --> page qui traite le message --> redirection vers la page ou sont affichés les messages.
salut,
et un coup sur deux la meme variable est utilisé pour le post et l affiche ou, sois les registers global son a on dans ce cas $message et $_POST['message'] retourne meme valeur.
++![]()
ps: si tu veux plus d aide envoie ton code![]()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <title>Mini-chat</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <style type="text/css"> form { text-align:center; } </style> <body> <?php if(isset($_POST['pseudo'])AND($_POST['message'])) // Si la variable existe { if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) { mysql_connect("localhost","root"); mysql_select_db("test"); $pseudo = $_POST['pseudo']; $message = $_POST['message']; mysql_query("INSERT INTO chat VALUES('','$pseudo','$message')"); mysql_close(); } } ?> <form action="tp.php" method="post"> <p>pseudo: <input type="text" name="pseudo" 'value=<?php $_POST['pseudo'];}?> <br/> message: <input type="text" name="message" /> <input type="submit" value="Valider" /> </p> </form> <?php mysql_connect("localhost", "root", ""); mysql_select_db("test"); // On utilise la requête suivante pour récupérer les 10 derniers messages : $reponse = mysql_query("SELECT * FROM chat ORDER BY ID DESC LIMIT 0,10"); // On se déconnecte de MySQL mysql_close(); while($donnees = mysql_fetch_array($reponse)) { ?> <p><strong><?php echo $donnees['pseudo'];?>:</strong><?php echo $donnees['message'];?></p> <?php } ?> </body> </html>
voila mon code j'espere que tu peux m'aidez un peu plus avec merci en tout cas
ok,
ton probleme vient du fait que quand tu actualises ta variable $POST['message'] s enregistre une seconde fois dans la bdd.
le meilleur moyen est comme a dit jobherzt de séparer tes scripts.
Sinon c'est pas tres propre je trouve detruit ta variable.
++
Code : Sélectionner tout - Visualiser dans une fenêtre à part unset($message);![]()
Je ne vois pas en quoi unset la variable $message va resoudre quelque chose meme si le register global est activé.Envoyé par csbilouze
pour eviter que cela s'enregistre une seconde fois il ya bien un moyen enfin merci de mavoir aidé![]()
salut,
désolé pour le doublon.
j ai modifier un peu ton script.
j ai simplement ajouté un header sur ta premiere condition que j ai décaler en haut avant l envoie du html.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 <?php if(isset($_POST['pseudo'])AND($_POST['message'])) // Si la variable existe { if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) { mysql_connect("localhost","root"); mysql_select_db("test"); $pseudo = $_POST['pseudo']; $message = $_POST['message']; mysql_query("INSERT INTO chat VALUES('','$pseudo','$message')"); mysql_close(); header("location:tp.php");// l header est rajouter ici } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <title>Mini-chat</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <style type="text/css"> form { text-align:center; } </style> <body> <form action="tp.php" method="post"> <p>pseudo: <input type="text" name="pseudo" value="<?php $_POST['pseudo'];?>" <br/> message: <input type="text" name="message" /> <input type="submit" value="Valider" /> </p> </form> <?php mysql_connect("localhost", "root", ""); mysql_select_db("test"); // On utilise la requête suivante pour récupérer les 10 derniers messages : $reponse = mysql_query("SELECT * FROM chat ORDER BY ID DESC LIMIT 0,10"); // On se déconnecte de MySQL mysql_close(); while($donnees = mysql_fetch_array($reponse)) { ?> <p><strong><?php echo $donnees['pseudo'];?>:</strong><?php echo $donnees['message'];?></p> <?php } ?> </body> </html>
l enregistrement s'effectue normalement et la page du chat est redirigé mais sans garder en mémoire tes variable $_POST.
c'est la solution de jobherzt.
++![]()
Partager