Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comparaison de variables

tuto minichat :-)

    1 janvier 2006 à 17:29:27

    Salut à tous, et particulièrement à Mateo, génie du PHP ;)

    J'ai essayé d'optimiser le code PHP du minichat, mais il y a un problème à la ligne que je souligne en rouge dans l'extrait que voici ( parse error )

    Citation : L'expert Débutant

    if (isset($_POST['pseudo']) AND isset($_POST['message']))
    { if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL)
    {
    mysql_connect( "localhost", "root", "" );
    mysql_select_db( "test" );

    $message = htmlentities ($_POST['message']);
    $pseudo = htmlentities ($_POST['pseudo']);
    $comparer = mysql_query( "select message from minichat order by id desc limit 0, 0" )
    if ($comparer != $message)
    {
    mysql_query( "insert into minichat values ( '', '$pseudo', '$message' )" );
    mysql_close();
    }
    }
    }



    Je précise que je cherchais à résoudre le problème suivant :

    Citation : M@teo21

    Empêcher les messages en double. En effet, si vous actualisez la page (touche F5) pour voir s'il y a de nouveaux messages, votre navigateur va vous demander s'il doit renvoyer les informations... Si vous dites "oui", alors le message qu'il vient d'envoyer sera réenvoyé, ce qui fait qu'il apparaîtra en double !Pour éviter cela, il y a bien une solution : avant d'enregistrer un message, vous vérifiez que le dernier message posté n'est pas identique. Si c'est le même, vous n'enregistrez pas le message (sinon vous auriez eu un double !).



    Merci d'avance pour vos réponses et bonne continuation pour votre excellent site ;)

    PS : sauriez-vous me dire comment utiliser la fonction date correctement s'il vous plaît ?
    J'ai en fait essayé de répondre à la question de M@teo :

    Citation : M@teo21

    Supprimer automatiquement les vieux messages. A chaque fois qu'un nouveau message va être posté, vous comptez le nombre total de messages dans la table. S'il y en a par exemple plus de 1000, vous supprimez le plus vieux, histoire de faire de la place pour pas trop encombrer votre base de données (à moins que vous ne préfériez garder un historique complet ;))



    Alors j'ai rajouté un champ "date" de type date :p mais cela m'affiche toujours 000-00-00 à chaque message que j'avais écris auparavant, et il m'est en outre impossible de rajouter des messages sur mon chat à cause en partie de cette ligne :

    Citation : L'expert Débutant

    mysql_query( "insert into minichat values ( '', '$pseudo', '$message' )" );



    car je ne sais pas ce qu'il faut mettre par défaut pour la valeur date !
    ( D'ailleurs dans PHPMyAdmin, 0000-00-00 est dans la colonne "défaut" du champ "date", ce qui pourrait alors expliquer ce petit PS ? ^^ ).

    PS 2 : Est ce que dans la suite de vos tutos, vous expliquez comment faire une belle interface graphique, ou bien est ce de notre ressort uniquement ? ( J'ignore si PHP dispose de fonctions graphiques dignes de ce nom pour agrémenter mon petit chat perso :o ).

    Merci d'avance :)
    • Partager sur Facebook
    • Partager sur Twitter
      1 janvier 2006 à 17:49:49

      C'est juste mon opignon ... mais à la fin de l'enregistrement du 1er message, tu n'a qu'a détruire la superglobale $_POST avec unset()

      Après faudrait que je vérifie, chuis pas sûr ...
      j'essaye et j'édite ;)

      bon dsl, j'ai dit une connerie :D
      autant pour moi ;)
      • Partager sur Facebook
      • Partager sur Twitter
        1 janvier 2006 à 17:57:03

        Dans ta requete tu fait un limit 0,0 mais la ca te choisis pas le dernier, je crois que ca choisit meme rien. pour avoir le dernier tu fait limit 0, 1.


        Pour la date, tu dois utiliser la fonction timestamp. Tu supprime ton champs date et tu en recreer un autre timestamp.

        Puis lors d'un post tu fait pour qu'il reste dans ta base de donnée 10 messages par exemple. Donc tu compte toute tes entrée, si yen a plus que 10 tu suprime la difference (16 message ds la bdd, tu supprime les 6derniers, du moins les plus vieux en fonction du timestamp. Si je te dis d'utiliser le timestamp c'est pour que si tu veux afficher date, heure cest plus facile, biensur si tu veu pas de date, ni heure, tu peux tres bien supprimer tes messages en fonction de l'id du message, donc plus besoin de champs timestamp dans ta bdd, a toi de voir :)

        ++
        • Partager sur Facebook
        • Partager sur Twitter
          1 janvier 2006 à 18:03:52

          Y'a plus simple pour avoir 10 message max dans la table : tu comptes le nombre d'entrées, puis si le nombre retourné est supérieur à 10, tu supprimes MIN('id') pour ne garder que les 10 derniers messages.

          Faire une différence est obsolète si le code est mis en place avant que le stade des 10 messages soit passé ;)
          • Partager sur Facebook
          • Partager sur Twitter
            1 janvier 2006 à 18:04:59

            Oui pas bete j'avai pas penser au MIN('id') :)
            • Partager sur Facebook
            • Partager sur Twitter
              1 janvier 2006 à 19:27:58

              $comparer = mysql_query( "select message from minichat order by id desc limit 0, 0" )
              if ($comparer != $message)


              T'a Oublié le ; a la fin de la ligne de la requête donc ton parse error vient de la je pense

              $comparer = mysql_query( "select message from minichat order by id desc limit 0, 0" );
              if ($comparer != $message)


              Ca devrait mieux marcher comme cela ;););)

              Bonne Continuation
              • Partager sur Facebook
              • Partager sur Twitter

              Comparaison de variables

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown