Partage
  • Partager sur Facebook
  • Partager sur Twitter

Tuto PHP / MySQL

minichat

Sujet résolu
    1 janvier 2006 à 15:07:51

    bonjour

    et bonne année à tous ;)

    voila, je suis sur le tuto du minichat dans la partie php/sql

    et y a un truc que je comprends pas :
    j'ai bien réalisé le script comme il fallait, par contre, certains des messages ne sont pas pris en compte.

    le script en question :

    Citation : code php


    <?php
    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
    {
    echo "cond effectuée";
    // D'abord, on se connecte à MySQL
    mysql_connect("localhost", "root", "");
    mysql_select_db("test");

    // On utilise la fonction PHP htmlentities pour éviter d'enregistrer du code HTML dans la table
    $message = htmlentities ($_POST['message']);
    $pseudo = htmlentities ($_POST['pseudo']);

    // Ensuite on enregistre le message
    mysql_query("INSERT INTO minichat VALUES('', '$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 :
    ?>

    <form action="minichat.php" method="post">
    <p>
    Pseudo : <input type="text" name="pseudo" /><br />
    Message : <input type="text" name="message" /><br />
    <input type="submit" value="Envoyer" />
    </p>
    </form>

    <?php

    // Maintenant on doit récupérer les 10 dernières entrées de la table
    // On se connecte d'abord à MySQL :
    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 minichat ORDER BY ID DESC LIMIT 0, 10");

    // 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) )
    {
    ?>
    <p>
    <strong><?php echo $donnees['pseudo']; ?></strong> :
    <em><?php echo $donnees['message']; ?></em>
    </p>
    <?php
    }
    // Fin de la boucle, le script est terminé !
    ?>



    (bon, le script c'est le même que celui du tuto)

    ça marche très bien, sauf avec certaines phrase, par exemple quand je mets dans pseudo : bad10
    et dans message : ça a l'air de marcher

    là y a rien qui est rajouté dans la bdd

    mes champs "pseudo" et "message" sont des varchar de 255 charactères,
    et même en les changeant par des "text" ça ne fait rien de spécial.


    a++
    • Partager sur Facebook
    • Partager sur Twitter
      1 janvier 2006 à 15:17:09

      essaye

      <?php while ($donnees == mysql_fetch_array($reponse) ) ?>

      • Partager sur Facebook
      • Partager sur Twitter
        1 janvier 2006 à 15:24:14

        merci de ta participation,
        mais ton code cause une erreur à l'execution de la page.


        une autre idée??? :)
        • Partager sur Facebook
        • Partager sur Twitter
          1 janvier 2006 à 15:26:34

          je pense que le dernier mysql_close() serait mieu tout a la fin de ton script j'ai bien dis le 2eme pas le 1er
          • Partager sur Facebook
          • Partager sur Twitter
            1 janvier 2006 à 15:36:36

            non plus :(

            j'ai l'impression que c'est l'instruction sql "insert into ..." qui marche pas tout le temps

            car je vérifie avant et après cette instruction le contenu des variables $pseudo et $message et elles contiennent bien ce qu'il faut
            par contre, quand je vais voir avec phpmyadmin dans la bdd, ils n'y sont pas ajouté ... :??:

            • Partager sur Facebook
            • Partager sur Twitter
              1 janvier 2006 à 15:44:43

              Essaie
              mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')") OR die (mysql_error());


              Juste pour voir ce que ca te marque...
              • Partager sur Facebook
              • Partager sur Twitter
                1 janvier 2006 à 16:06:30

                bien vu ;)

                ça me marque ça :

                Citation

                Erreur de syntaxe près de 'air de marcher')' à la ligne 1



                j'en conclue que l'erreur viens de l'apostrophe

                y a un moyen d'y remédier??

                merci bien :)
                a+
                • Partager sur Facebook
                • Partager sur Twitter
                  1 janvier 2006 à 16:17:07

                  Essaye en changeant, ça :

                  $message = htmlentities ($_POST['message']);
                  $pseudo = htmlentities ($_POST['pseudo']);


                  par

                  $message = htmlentities(addslashes($_POST['message']));
                  $pseudo = htmlentities(addslashes($_POST['pseudo']));
                  • Partager sur Facebook
                  • Partager sur Twitter
                    1 janvier 2006 à 16:21:12

                    :D

                    merci bien, ça marche impec maintenant, les apostrophes sont bien prises en compte.

                    merci à tous,

                    à ++
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Tuto PHP / MySQL

                    × 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