[PHP] erreur php mysql_fetch_array

Résolu
Bonjour,
Voilà j'ai une petite erreur, j'ai une liste déroulante, je selectionne un nom de méthode dedans, je clique sur valider et il est censer m'afficher le résultat de ma requete, j'ai une erreur en dessous de ma liste déroulante

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\muscu 2\evolution.php on line 53
tu as fait série de le


voici mon code

<?php
if ($test_evo==0) { echo
'<div class="item">
<div class="date">
<div>'.date("d/m/Y").'</div>
</div>
<div class="content"><br>
<h1><u>Aucune évolution</u></h1><br>
<div class="body"><br>
Nous sommes désolé mais il n\'y a pas encore d\'exercice, veuillez ajouter une série
</div><br><br>
</div>
</div>'; }
else

{echo "<select name='methode'>";
while ($requete) { echo "<option value=$requete[0]>$requete[1]</option>";
$requete=mysql_fetch_array($requete_evo);}}
$id_meth=$_GET['methode'];
?>
<input name="Insert" type="submit" value="Valider"><br>
<?php $req=mysql_query("select s.id_serie,NbSerie,NbParSerie,Date_serie from serie s, methode m, avoir a where s.id_serie=a.id_serie and m.id_meth=$id_meth and a.id_meth=$id_meth");
$req2=mysql_fetch_array($req);

echo "<option value=$req2[0]> tu as fait $req2[1] série de $req2[2] le $req2[3]</option>";
?>
Configuration: Windows XP / Firefox 3.5.8

21 réponses

Résumé de la discussion

Le problème décrit concerne une page PHP comportant une liste déroulante et une requête MySQL qui génère l'erreur mysql_fetch_array() attendait une ressource, mais un booléen est passé. Plusieurs propositions pointent des défauts d'itération et d'utilisation des résultats, notamment l'absence de boucle autour des fetch et la manipulation directe de la ressource. La piste jugée la plus pertinente est qu'il manquait une boucle, ce qui empêchait d'itérer correctement les résultats et provoquait l'erreur. En complément, des remarques évoquent de corriger des fautes de syntaxe dans les requêtes et d'utiliser des indices entre crochets lors de l'accès aux champs des résultats.

Bobot (l’IA à votre service)
  1. Bonjour

    ...where s.id_serie='a.id_serie' ..
    il ne faut pas d'apostrophes autour de 'a.id_serie', c'est un nom de champ, pas une valeur
    ...where s.id_serie=a.id_serie ..
    1
    1. c'est marqué quoi a la ligne 53
      0
      1. rajoute des ' derriere chaque condition des tes where exemple :

        where s.id_serie=a.id_serie ----> where s.id_serie='a.id_serie'
        0
        1. quand je met mes balises je n'ai plus l'erreur fetch_array mais ma requete ne fonctionne plus et je n'ai rien qui s'affiche... donc je sais pas
          0
      2. c'est ce qu'il y a en gras

        <form>
        <?php
        if ($test_evo==0) { echo
        '<div class="item">
        <div class="date">
        <div>'.date("d/m/Y").'</div>
        </div>
        <div class="content"><br>
        <h1><u>Aucune évolution</u></h1><br>
        <div class="body"><br>
        Nous sommes désolé mais il n\'y a pas encore d\'exercice, veuillez ajouter une série
        </div><br><br>
        </div>
        </div>'; }
        else

        {echo "<select name='methode'>";
        while ($requete) { echo "<option value=$requete[0]>$requete[1]</option>";
        $requete=mysql_fetch_array($requete_evo);}}
        $id_meth=$_GET['methode'];
        ?>
        <input name="Insert" type="submit" value="Valider"><br>
        <?php $req=mysql_query("select s.id_serie,NbSerie,NbParSerie,Date_serie from serie s, methode m, avoir a where s.id_serie=a.id_serie and m.id_meth=$id_meth and a.id_meth=$id_meth");
        $req2=mysql_fetch_array($req);
        echo "<option value=$req2[0]> tu as fait $req2[1] série de $req2[2] le $req2[3]</option>";
        ?>
        </form>
        0
        1. $req=mysql_query("select s.id_serie,NbSerie,NbParSerie,Date_serie from serie s, methode m, avoir a where s.id_serie='a.id_serie' and m.id_meth='$id_meth' and a.id_meth='$id_meth' " );

          c'est juste comme ça ? pour la fin ? ...........= '$id_meth' " );
          0
          1. oui, c est ptet pas ca mais bon
            0
        2. ta requète ne renvoie probablement aucun résultat.... peut etre une erreur syntaxique. remplace ta ligne mysql_query par celle-ci :

          <?php $req=mysql_query("select s.id_serie,NbSerie,NbParSerie,Date_serie from serie s, methode m, avoir a where s.id_serie=a.id_serie and m.id_meth=$id_meth and a.id_meth=$id_meth") or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

          et dis nous si tu as une erreur SQL !
          0
          1. et ben il ne m'affiche pas d'erreur il m'affiche un résultat en dessous de ma liste déroulante, mais que 1 seul résultat, dans phpmyadmin quand je teste ma requete il me ressort plusieurs résultat et là que 1 seul, mais je n'ai pas d'erreur
            0
        3. ton "<option value=$req2[0]> tu as fait $req2[1] série de $req2[2] le $req2[3]</option>"; n'est dans aucune boucle, c est pour ca que tu n'as qu un résultat (enfin je crois)
          0
          1. au lieu de echo "<option value=$req2[0]> tu as fait $req2[1] série de $req2[2] le $req2[3]</option>";

            essaye de mettre les noms des champs entre crochet (genre $req2['nombre']
            0
            1. ça me fait la même chose

              en fait quand je clique dans mon menu sur l'onglet pour arrive sur cette page, j'obtiens l'erreur et quand je sélectionne quelque chose dans ma liste déroulante et clique sur le bouton valider l'erreur disparait et m'affiche le résultat de ma requête, mais à moitié... lol je comprends plus rien
              0
          2. essaye avec cette requète, légèrement modifiée

            "select s.id_serie,NbSerie,NbParSerie,Date_serie from serie s, methode m, avoir a where s.id_serie='a.id_serie' and m.id_meth='" . $id_meth . "' and a.id_meth='" . $id_meth . "'; "
            0
            1. pareil il m'affiche juste

              tu as fait série de le

              et j'ai aucun résultat, mais je n'ai plus d'erreur FECTH_ARRAY c'est un bon début lol
              0
              1. donc, la ta requète est bonne... C'est le traitement que tu en fait qui ne vas pas...
                0
                1. ben il ne m'affiche rien donc je sais pas ... mais je pense qu'elle est bonne vu que dans phpmyadmin ca fonctionne...
                  0
                  1. ah non il me dit aucun enregistrement dans phpmyadmin
                    0
                    1. j'ai rien reçu..
                      ger57@live.fr
                      0
                      1. oui merci ^^ je viens juste de voir ça
                        0
                        1. c'est bon j'ai réussi merci à tous, et thanks swoog :)

                          while ($requete) { echo "<option value=$requete[0]>$requete[1]</option>";
                          $requete=mysql_fetch_array($requete_evo);}}
                          $id_meth=$_GET['methode'];
                          ?>
                          <input name="Insert" type="submit" value="Valider"><br>
                          <?php $req=mysql_query("select s.id_serie,NbSerie,NbParSerie,Date_serie from serie s, methode m, avoir a where s.id_serie=a.id_serie and m.id_meth='$id_meth' and a.id_meth='$id_meth'" ) ;
                          while($req2 = mysql_fetch_array($req))
                          {
                          echo "<option value=$req2[0]> tu as fait $req2[1] série de $req2[2] le $req2[3]</option><br>";
                          }
                          ?>
                          0
                          1. pas de problème, si je peux aider ;)
                            0
                            • 1
                            • 2