IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Probleme de rafraichisement d'une page [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 112
    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 : 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
    <!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>

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    }

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 112
    Par défaut
    ça marche comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/05/2008, 16h01
  2. probleme d'ouverture d'une page web dans un stream
    Par fraisa1985 dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 26/02/2008, 17h03
  3. probleme de deploiement d'une page simple en JSP
    Par abohafss dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 18/10/2007, 16h39
  4. [Tableaux] Probleme de rechargement d'une page
    Par johnson95 dans le forum Langage
    Réponses: 2
    Dernier message: 29/11/2006, 13h06
  5. [STRUTS] probleme de compilation d'une page JSP
    Par XristofGreek dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 31/03/2005, 17h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo