voila j'ai realisez un chat mais quand j'actualise après envoyez un message ca apparez en double . pouvez vous m'aidez svp
Version imprimable
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:
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 :P
Code:
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:unset($message);
Je ne vois pas en quoi unset la variable $message va resoudre quelque chose meme si le register global est activé.Citation:
Envoyé par csbilouze
pour eviter que cela s'enregistre une seconde fois il ya bien un moyen enfin merci de mavoir aidé :D
et ca marche au fait lol ?
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:
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.
++;)