Erreur mysql_fetch_array()

Bonjour, j'ai une erreur avec mon script php. On me dit Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\site_topher_design_propre\livre_or.php on line 37.

Voila mon code :
<?php

mysql_connect("localhost", "root", "");
mysql_select_db("topher_design");

$nombreDeMessagesParPage = 10; // Essayez de changer ce nombre pour voir :o)
// On récupère le nombre total de messages
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livre_or');
$donnees = mysql_fetch_array($retour);
$totalDesMessages = $donnees['nb_messages'];
// On calcule le nombre de pages à créer
$nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);
// Puis on fait une boucle pour écrire les liens vers chacune des pages
echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
    echo '<a href="livre_or.php?page=' . $i . '">' . $i . '</a> ';
}

 


if (isset($_GET['page']))
{
        $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
}
else // La variable n'existe pas, c'est la première fois qu'on charge la page
{
        $page = 1; // On se met sur la page 1 (par défaut)
}
 
// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
 
$reponse = mysql_query('SELECT * FROM livre_or ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
 
while ($donnees = mysql_fetch_array($reponse)) 
{
        echo $donnees['message'];
}
 
mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o)
?>

12 réponses

  1. 'lut,

    Moi, en l'executant, la page m'affiche

    Page :


    Donc, à mon avis, tu n'as pas d'erreur de code.

    Qu'utilises-tu pour émuler un serveur Apache ? WAMP? LAMP ? MAMP ? EasyPHP ? autre ?

    0
    1. J'utilise WAMP server
      0
      1. Regarde déjà si Apache ( je pense que oui), serveur SQL etc. sont lancés.

        Car ce code fonctionne (apparemment) puisque j'arrive à le lancer sans ton erreur.
        0
        1. Oui ils sont lancés !
          0
          1. $reponse = mysql_query('SELECT * FROM livre_or ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);


            A priori, c'est la requete qui plante... test là directement dans phpmyadmin
            0
            1. oui en effet on me dit cela : " 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 '$reponse = mysql_query('SELECT * FROM livre_or ORDER BY id DESC LIMIT ' . $premi' at line 1 ".
              0
              1. c'est logique ... phpmyadmin et PHP c'est différent

                si tu lui met des variable PHP, il va te renvoyer une erreur

                echo 'SELECT * FROM livre_or ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage;die;


                génère ta requete en PHP, et copie colle dans phpadmin ensuite
                0
                1. dsl mais je ne comprend pas quand tu me dis génère ta requete en PHP, et copie colle dans phpadmin ensuite. Je suis un débutant.
                  0
                  1. L'erreur est à ce niveau là

                    $reponse = mysql_query('SELECT * FROM livre_or ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);


                    donc avant de faire un mysql_query de la requete, tu la met dans une variable ou tu fais un echo => tu vas donc récupérer la requete générée, cad les variables seront remplacés par leurs valeurs.

                    tu la copie colle dans phpmyadmin pour la tester, et tu sauras si il y a une erreur dans la requete.

                    exemple :

                    $premierMessageAafficher = 0;
                    $nombreDeMessagesParPage = 10;
                    
                    echo 'SELECT * FROM livre_or ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage;die;


                    va te donner :

                    SELECT * FROM livre_or ORDER BY id DESC LIMIT 0,10
                    0
                    1. Okei merci pour l'explication mais il n'y a pas d'erreur !
                      0
                      1. l'erreur se situe forcement à cet endroit là

                        $reponse renvoie une erreur, donc cela vient du mysql_query
                        0
                        1. Okei ben merci kan meme e vais essayer de le faire passer par PDO !
                          0