Probleme requete ou boucle php

Résolu
Bonsoir, je suis en train d'apprendre le php et j'essai de creer un livre d'or mais j'ai apparement un probleme avec une requete ( quoique je me demande si ca ne vient de la boucle que j'ai fait ou autre choses....)

Voici le bout de code qui me pose probleme :

$reponse = mysql_query('SELECT * FROM livreor ORDER BY ID DESC LIMIT' . $premierMessage . ', ' . $nombreDeMessageParPage);

while ($donnees = mysql_fetch_array($reponse))
{
echo '<p><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . $donnees['message'] . '</p>';
}

Et lorsque que j'affiche la page j'obtiens cette erreur :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\tests\livreor.php on line 76

Merci de m'aider !
Configuration: Windows XP
Firefox 3.0

18 réponses

  1. Oupppsssssss ! Tu as presque raison, j'ai donc mis :

    $reponse = mysql_query('SELECT * FROM livreor ORDER BY ID DESC LIMIT' . $premierMessage . ', ' . $nombreDeMessageParPage) or die("Erreur SQL : $query<br/>".mysql_error());

    mais j'avais une erreur dont nous avions parlé plus haut (l'espace apres le LIMIT)

    Et maintenant ca marche !!!

    Mille merci, j'ai du faire quelques erreur d'etouderies !! ^^
    1. La ligne 74 devrait etre :
      $reponse = mysql_query('SELECT * FROM livreor ORDER BY ID DESC LIMIT' . $premierMessage . ', ' . $nombreDeMessageParPage) or die("Erreur SQL : $query<br/>".mysql_error());

      Et ce n'est pas ce qu'il y a!
      1. j'ai juste ca :

        Parse error: syntax error, unexpected ')' in C:\wamp\www\tests\livreor.php on line 74
        1. remplace :
          mysql_select_db("base02");

          par :
          mysql_select_db("base02") or die("Probleme avec le choix de base");
          1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
            <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title>Livre d'or</title>

            <style type="text/css">
            p, form
            {
            text-align : center;
            }
            </style>
            </head>

            <body>
            <form method="post" action="livreor.php">
            <p>Ceci est le livre d'or, alors venez me dire si vous aimez le site</p>
            <p>Pseudo : <input name="pseudo" /><br />
            Message :<br />
            <textarea name="message" rows="12" cols="35"></textarea><br />
            <input type="submit" value="Envoyer" />
            </p>
            </form>

            <p>

            <?php

            mysql_connect("localhost", "root", "") or die("Probleme avec la base de données");
            mysql_select_db("base02");

            if (isset($_POST['pseudo']) AND isset($_POST['message']))
            {
            $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
            $message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
            $message = nl2br($message);

            mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "')");
            }

            $nombreDeMessageParPage = 20;

            $retour = mysql_query('SELECT COUNT(*) AS nbre_message FROM livreor');
            $donnees = mysql_fetch_array($retour);
            $totalDesMessage = $donnees['nbre_message'];

            $nombreDePage = ceil($totalDesMessage / $nombreDeMessageParPage);

            echo 'Page : ';

            for ($i = 1 ; $i <= $nombreDePage ; $i++)
            {
            echo '<a href="livreor.php?page=' . $i . '">' . $i . '</a> ';
            }

            ?>

            </p>

            <?php

            if (isset ($_GET['page']))
            {
            $page = $_GET['page'];
            }

            else
            {
            $page = 1;
            }

            $premierMessage = ($page - 1) * $nombreDeMessageParPage;

            'SELECT * FROM livreor ORDER BY ID DESC LIMIT ' . $premierMessage . ', ' . $nombreDeMessageParPage) or die("Erreur SQL : $query<br/>".mysql_error());

            while ($donnees = mysql_fetch_array($reponse))
            {
            echo '<p><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . $donnees['message'] . '</p>';
            }

            mysql_close();
            ?>
            </body>
            </html>
            1. Snif.. maintenant, j'ai ca :

              Parse error: syntax error, unexpected T_STRING in C:\wamp\www\tests\livreor.php on line 30

              la ligne 30 corresponds a mysql_select_db("base02");
              1. Met le code complet
            2. remplace :

              'SELECT * FROM livreor ORDER BY ID DESC LIMIT' . $premierMessage . ', ' . $nombreDeMessageParPage

              par

              'SELECT * FROM livreor ORDER BY ID DESC LIMIT ' . $premierMessage . ', ' . $nombreDeMessageParPage
              (avec un espace apres LIMIT)
              1. Voila ce que j'obtiens : Erreur SQL :

                You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT0, 20' at line 1
                1. remplace :
                  $reponse = mysql_query('SELECT * FROM livreor ORDER BY ID DESC LIMIT' . $premierMessage . ', ' . $nombreDeMessageParPage);

                  par

                  $reponse = mysql_query('SELECT * FROM livreor ORDER BY ID DESC LIMIT' . $premierMessage . ', ' . $nombreDeMessageParPage) or die("Erreur SQL : $query<br/>".mysql_error());
                  1. Et encore une fois, j'obtiens cette erreur :

                    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\tests\livreor.php on line 76
                    1. Met ça et relance:
                      mysql_connect("localhost", "root", "") or die("Probleme avec la base de données");
                      1. Ben j'ai fait ce que tu m'a dit mais sa me donne la meme erreur !?
                        1. Récupere le résultat de mysql_connect et met le en parametre de ta fonction mysql_query.
                          1. Euh desoler d'etre debutant mais je suis pas sure d'avoir tout compris le code que vient de poster... :(
                            1. Ben pourtant je me connecte a mysql en faisant ca :

                              mysql_connect("localhost", "root", "");
                              mysql_select_db("base02");
                              1. Essaie ce genre de code (en baladant ta connexion, en parametre) :

                                $connection = @mysql_connect($tp_database_host, $tp_database_username, $tp_database_password);
                                $database = @mysql_select_db($tp_database_name);

                                $posts = mysql_query('SELECT * FROM textpattern', $connection);

                                while ($post = mysql_fetch_array($posts)) {
                                ...
                                }
                            2. Tu dois bien utiliser une connexion MySQL : mysql_connect
                              et utilisé la ressource (la connexion) pour tes requetes.