Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/09/2011, 13h56   #1
Nouveau Membre du Club
 
nathanael levasseur
Inscription : octobre 2010
Messages : 103
Détails du profil
Informations personnelles :
Nom : nathanael levasseur

Informations forums :
Inscription : octobre 2010
Messages : 103
Points : 33
Points : 33
Par défaut Probleme de rafraichisement d'une page

Bonjour, je fais un chat sous php mysql voila le probleme je tape un message je clique sur "valider" il enregistre bien le message et l'affiche mais lorsque je rafraichit la page il enregistre à nouveaux ce que je vien de taper (alors que le message et speudo sont vide) et m'affiche le message, j'ai essayé de mettre les variables message et speudo NULL mais sans vain, Voici le code
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
<!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" >
   <head>
       <title>Messagerie istantanée</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
   </head>
   <body>
    <form action="minichat.php" method='post'>
<p>
 
<label for="pseudo"> pseudo :</label><input type="text" name="pseudo"  /><br /><br />
<label for="message">message:</label><input type="text" name="message" /><br /><br />
<input type="submit" value="Valider" />
 
</p>
 
 
		</body>
</html>
 
<?php
$message;
$pseudo;
mysql_connect("localhost", "root", "");
mysql_select_db("test");
 
 
if(isset($_POST['message'])AND isset($_POST['pseudo']) )
{
$heure = date("H");
 
$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
mysql_query("INSERT INTO minichat VALUES('','$pseudo','$message', NOW() )");
$reponse = mysql_query("SELECT * FROM minichat ORDER BY id DESC LIMIT 0, 10");
$x=0;
while ($donnees = mysql_fetch_array($reponse) )
{
$x++;
 
?>
<p>
<?php echo $donnees['temps'];?>
 <?php echo $donnees['pseudo']; echo ' dit :'; ?>
 <?php echo $donnees['message'];
 $message = null;
$pseudo = null;
 
mysql_close();  
 
?>
</p>
levasseur62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2011, 09h28   #2
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Il faut que tu tests si le message n'a pas été enregistré il y à quelques secondes.

Pour ce faire, tu fais une requête allant par exemple chercher le contenu du dernier message. On part du principes que tu as un champ id auto_increment. On va aller chercher le dernier id (le plus grand) et ensuite comparer par exemple le contenu du nouveau message. S'il est différent, on enregistre. En SQL, on peut utiliser le mot clé LIMIT ou encore faire un select MAX(id).


Ce qui donne par exemple :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
$contenu_poste = mysql_real_escape_string($_POST['contenu']);
 
//test si deja posté (anti f5)
$sql_si_deja_poste = $bdd->query('SELECT contenu FROM ta_table ORDER BY id DESC LIMIT 1');
$tab_si_deja_poste = $sql_si_deja_poste->fetch();
$dernier_contenu = $tab_si_deja_poste['contenu'];
 
if($contenu_poste != $dernier_contenu)
{
	//tu enregistres dans ta base
}
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 20h55   #3
Nouveau Membre du Club
 
nathanael levasseur
Inscription : octobre 2010
Messages : 103
Détails du profil
Informations personnelles :
Nom : nathanael levasseur

Informations forums :
Inscription : octobre 2010
Messages : 103
Points : 33
Points : 33
ça marche comme cela
Code :
1
2
3
4
5
6
 $reponse0 = mysql_query("SELECT ID, pseudo, message FROM minichat ORDER BY ID DESC LIMIT 0, 1");
		    $der = mysql_fetch_array($reponse0);
 
		    // Si un MÊME utilisateur n'a pas posté deux fois de suite un message identique...
		    if ($_POST['message'] != $der['message'] )
//on met notre code si c'est bon ...
levasseur62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h20.


 
 
 
 
Partenaires

Hébergement Web