Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme avec MySQL

mysql_fetch_array ne fonctionne pas : /

Sujet résolu
    5 avril 2006 à 14:28:31

    Bonjour tout le monde ^_^.

    Voila je poste car j'ai un problème assez ennuyeux. En effet je suis en ce moment le TP de PHP pour faire un minichat et je me retrouve devant une erreur même avec le code de la correction o_O .
    Si quelqu'un pouvait m'aider je lui en serait très reconnaissant.


    Voici mon code :


    <!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>Link & Co.</title>
           <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
               <link rel="stylesheet" media="screen" type="text/css" title="Design normal" href="css.css" />
       </head>
       <body>
    <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
    if (isset($_POST['pseudo']) AND isset($_POST['message']))
    {
        if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a quelque chose à enregistrer
       {
            mysql_connect("localhost", "root", ""); // Connexion à MySQL
        mysql_select_db("minichat"); // Sélection de la base minichat
    $message = htmlentities ($_POST['message']);
    $pseudo = htmlentities ($_POST['pseudo']);

            mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')");
                          mysql_close();
        }
    }

    ?>
    <?php

            mysql_connect("localhost", "root", ""); // Connexion à MySQL
        mysql_select_db("minichat"); // Sélection de la base minichat
            $reponse = mysql_query("SELECT * FROM minichat ORDER BY id DESC LIMIT 0‚5");
    mysql_close();

    while ($renvoi = mysql_fetch_array($reponse) )
    {
    ?>

    <p><strong><?php echo $renvoi['pseudo']; ?></strong> : <?php echo $renvoi['message']; ?></p>

    <?php
    }
    ?>
    </body>
    </html>



    Et la page me renvoie cette erreur :

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\documents and settings\vivien\mes documents\testsphp\minichat.php on line 43
    • Partager sur Facebook
    • Partager sur Twitter
      5 avril 2006 à 14:30:41

      La table minichat existe ? Et le champ id ?
      • Partager sur Facebook
      • Partager sur Twitter
        5 avril 2006 à 14:42:10

        Oui bien sur la table minichat existe dans la base minichat et les champs id pseudo et message sont mis dans cet ordre ;) .

        J'avais déja eu la même erreur la premiere fois que je voyais mysql_fetch_array dans le tutorial.
        • Partager sur Facebook
        • Partager sur Twitter
          5 avril 2006 à 14:46:39

          Tu as mis mysql_close() avant mysql_fetch_array, la connexion se ferme, la boucle ne peut donc pas se faire.
          • Partager sur Facebook
          • Partager sur Twitter
            5 avril 2006 à 14:53:38

            Bien vu ^_^ je ne m'en était pas apercu mais le probleme persiste malheureusement :euh: .

            Le code rectifié mais qui renvoie toujours l'erreur :

            <!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>Link & Co.</title>
                   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                       <link rel="stylesheet" media="screen" type="text/css" title="Design normal" href="css.css" />
               </head>
               <body>
            <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
            if (isset($_POST['pseudo']) AND isset($_POST['message']))
            {
                if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a quelque chose à enregistrer
               {
                    mysql_connect("localhost", "root", ""); // Connexion à MySQL
                mysql_select_db("minichat"); // Sélection de la base minichat
            $message = htmlentities ($_POST['message']);
            $pseudo = htmlentities ($_POST['pseudo']);

                    mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')");
                                  mysql_close();
                }
            }

            ?>
            <?php

                    mysql_connect("localhost", "root", ""); // Connexion à MySQL
                mysql_select_db("minichat"); // Sélection de la base minichat
                    $reponse = mysql_query("SELECT * FROM minichat ORDER BY id DESC LIMIT 0‚5");

            while ($renvoi = mysql_fetch_array($reponse))
            mysql_close();
            {
            ?>

            <p><strong><?php echo $renvoi['pseudo']; ?></strong> : <?php echo $renvoi['message']; ?></p>

            <?php
            }
            ?>
            </body>
            </html>


            Erreur :

            Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\documents and settings\vivien\mes documents\testsphp\minichat.php on line 43
            • Partager sur Facebook
            • Partager sur Twitter
              5 avril 2006 à 18:27:50

              Remplace

              $reponse = mysql_query("SELECT * FROM minichat ORDER BY id DESC LIMIT 0‚5");


              $reponse = mysql_query("SELECT * FROM minichat ORDER BY id DESC LIMIT 0‚5") or die(mysql_error());


              ça devrait t'en dire plus sur l'erreur. Et le mysql_close, tu l'as mal placé, enlève-le, ce n'est pas indispensable.
              • Partager sur Facebook
              • Partager sur Twitter
                5 avril 2006 à 23:33:35

                J'ai trouvé l'erreur si ca peut t'interesser :)

                Tout simplement et il faudrait peut etre le signaler a mateo, il manque un espace. Je m'explique :
                $reponse = mysql_query("SELECT * FROM minichat ORDER BY id DESC LIMIT 0‚5");


                C'est ca !

                $reponse = mysql_query("SELECT * FROM minichat ORDER BY id DESC LIMIT 0‚ 5");


                L'espace après la virguler bon sang ! ;)

                Enfin si mateo passe par la dans son TP de mini chat PHP il l'a également oublié donc si il peut corriger ca evitera a des personnes comme moi de tomber dans le desespoir ^^.

                Merci encore. Réponse apportée.
                • Partager sur Facebook
                • Partager sur Twitter

                Probleme avec 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