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. Tu dois bien utiliser une connexion MySQL : mysql_connect
    et utilisé la ressource (la connexion) pour tes requetes.
    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. Euh desoler d'etre debutant mais je suis pas sure d'avoir tout compris le code que vient de poster... :(
      1. Récupere le résultat de mysql_connect et met le en parametre de ta fonction mysql_query.
        1. Ben j'ai fait ce que tu m'a dit mais sa me donne la meme erreur !?
          1. Met ça et relance:
            mysql_connect("localhost", "root", "") or die("Probleme avec la base de données");
            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. 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. 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 :

                    '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. 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. <!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. remplace :
                        mysql_select_db("base02");

                        par :
                        mysql_select_db("base02") or die("Probleme avec le choix de base");
                        1. j'ai juste ca :

                          Parse error: syntax error, unexpected ')' in C:\wamp\www\tests\livreor.php on line 74
                          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. 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 !! ^^