Mon Problème:
Je suis sur le point de finir une "ChatBox" sur mon site, mais j'ai encore un problème au niveau de l'actualisation de la page. Enfait quand je viens d'ajouter un message et que j'appui sur F5, le même message se remet au dessus. Je sait juste que le problème doit venir de :
$requete="SELECT * FROM chatbox WHERE pseudo='".$pseudo."' ORDER BY ID DESC LIMIT 0 , 1";
$resultat=mysql_query($requete);
$dernier_message=mysql_fetch_array($resultat);
Enfin, voici mon code:
<?
if (isset($_POST['pseudo']) AND isset($_POST['message'])) // Si les variables existent
{
if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a quelque chose à enregistrer
{
// D'abord, on se connecte à MySQL
mysql_connect("sql.free.fr", "sphax3d", "xxxxx" );
mysql_select_db("sphax3d" );
// On utilise la fonction PHP htmlentities pour éviter d'enregistrer du code HTML dans la table
$heure = date ("H" );
$minute = date ("i" );
$jour = date ("d" );
$mois = date ("m" );
$message = htmlentities ($_POST['message']);
$pseudo = htmlentities ($_POST['pseudo']);
$requete="SELECT * FROM chatbox WHERE pseudo='".$pseudo."' ORDER BY ID DESC LIMIT 0 , 1";
$resultat=mysql_query($requete);
// on recupère le dernier message enregistré par le même visiteur
$dernier_message=mysql_fetch_array($resultat);
// si ce dernier message est identique au message actuel, il n'est pas enregistré dans la bdd
// si l'utilisateur appuye sur F5 pour recharger la page, le message n'est pas enregistré en double
if($dernier_message['message']!==$message){
// Ensuite on enregistre le message
mysql_query("INSERT INTO chatbox VALUES('', '$heure', '$minute', '$jour', '$mois', '$pseudo', '$message')" );
}
// On se déconnecte de MySQL
mysql_close();
}
}
// Que l'on ait enregistré des données ou pas...
// On affiche le formulaire puis les 10 derniers messages
// Tout d'abord le formulaire :
?>
<div class=chatbox>
<?
// Maintenant on doit récupérer les 10 dernières entrées de la table
// On se connecte d'abord à MySQL :
mysql_connect("sql.free.fr", "sphax3d", "xxxxx" );
mysql_select_db("sphax3d" );
// On utilise la requête suivante pour récupérer les 10 derniers messages :
$reponse = mysql_query("SELECT * FROM chatbox ORDER BY ID DESC LIMIT 0,15" );
// On se déconnecte de MySQL
mysql_close();
// Puis on fait une boucle pour afficher tous les résultats :
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<b><? echo $donnees['pseudo']; ?> - <? echo $donnees['jour']; ?>/<? echo $donnees['mois']; ?> - <? echo $donnees['heure']; ?>h<? echo $donnees['minute']; ?>min</b> :<br>- <? echo $donnees['message']; ?><br>
<?
}
// Fin de la boucle, le script est terminé !
?>
</td></tr><tr><td colspan=2>
<form action="index2.php" method="post">
<center>
<font size=2>Pseudo : </font><input type="text" size=13 maxlength=40 name="pseudo" value="<? echo $_POST['pseudo'] ?>">
<input type="submit" value="Envoyer"><br>
<font size=2>Message : </font><input type="text"size=24 maxlength=255 name="message"><br>
</center>
</form>
Merci de me corriger si quelqu'un voit un problème à l'endroit que j'ai cité précédement :-) .
PS: Allez vous rendre compte de l'effet sur le site : http://sphax3d.free.fr/Tux69
Message édité par SphAx3D le 17-10-2007 à 20:52:35