Problème de Fetch

superNoob
Invité n'ayant pas de compte PHPfrance

30 oct. 2020, 16:32

Bonjour,
J'essaie d'afficher les informations sur un film,
Mais avec un fetchAll j'obtiens l'erreur Undefined index: affiche_film (de même pour toutes les informations du film)
et avec un fetch j'obtiens l'erreur Trying to access array offset on value of type bool (pour toutes les variables $val)
Pouvez-vous m'aider s'il vous plaît?
Je pense que la requête fonctionne car j'obtiens avec var_dump le code
object(PDOStatement)#5 (1) { ["queryString"]=> string(127) "SELECT * FROM film WHERE ID_film IN (SELECT ID_film FROM videotheque WHERE id='11' AND possede='o') ORDER BY ID_film LIMIT 0,16" }

Cordialement. :D

Code : Tout sélectionner

$reponse = $db->query("SELECT * FROM film WHERE ID_film IN (SELECT ID_film FROM videotheque WHERE id='".$id."' AND possede='o') ORDER BY ID_film LIMIT ". $premierFilmAafficher .",". $nombreDeFilmsParPage); var_dump($reponse); // affichage $NbrLigne = 0; if ($NbreData != 0) { $j = 1; echo '<table id="video">'; while ($val = $reponse->fetchAll(PDO::FETCH_ASSOC)); { if ($j%$NbrCol == 1) { $NbrLigne++; echo "<tr>"; $fintr = 0; } // ------------------------- // DONNEES A AFFICHER dans la cellule echo '<td><a href="film.php?id_film='.$val['ID_film'].'"><img src="'.$val['affiche_film'].'" width=\"75px\" height=\"100px\" alt="'.$val['titre_film'].'" /></a></td> <td><a href="film.php?id_film='.$val['ID_film'].'">'.$val['titre_film'].'<br />de '.$val['realisateur_film'].'<br />('.$val['annee_prod'].')</a></td><td>&nbsp;</td>';

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

30 oct. 2020, 17:19

Si tu utilises fetchAll() tu ne dois pas le mettre dans un while() puisqu'il te renvoie déjà tous les résultats.
https://www.php.net/manual/fr/pdostatement.fetch.php
https://www.php.net/manual/fr/pdostatement.fetchall.php

Si on te dit que $val est un booléen, fait un var_dump() dessus pour voir ce qu'il contient, si c'est false, c'est probablement que tu as eu une erreur SQL (de connexion ou de requête...).

Le plus pratique pour débuguer, c'est d'activer les messages d'erreurs PDO avec l'attribut : PDO::ERRMODE_WARNING
https://www.php.net/manual/fr/pdo.error-handling.php
Quand tout le reste a échoué, lisez le mode d'emploi...