Bonjour,
Mon code :
"forum.php"
<?php
require('php/config.php');
$categories = $bdd->query('SELECT * FROM f_categories ORDER BY nom');
$subcat = $bdd->prepare('SELECT * FROM f_souscategories WHERE id_categorie = ? ORDER BY nom');
require('views/forum.view.php');
?>
"forum.view.php"
La ligne 172 : <?php while($c = $categories->fetch()) { ?>
L'erreur afficher en allant sur la page "forum.php"
Fatal error: Uncaught Error: Call to a member function fetch() on boolean in C:\xampp\htdocs\abdifrh\views\forum.view.php:172 Stack trace: #0 C:\xampp\htdocs\abdifrh\forum.php(7): require() #1 {main} thrown in C:\xampp\htdocs\abdifrh\views\forum.view.php on line 172
Bonjour,
Si tu debug ton $categories->fetch()
ça donne quoi ?
Ce serait pas fetchAll()
au lieu de fetch()
sinon ?
PS: Fait attention a tes posts sur le forum. C'est "présenté" très brièvement, avec :
Voilà voilà
Merci de ton aide.
Comment faire pour debug ?
Non, pour le fetchAll cela ne change rien.
Oui, je changerai cela a l'avenir ;) !
Voilà, mon code :
<?php var_dump($categories); ?>
Ce que sa me donne :
bool(false)
Que faire ?
Bonsoir
Tu devrais activé les erreurs de pdo pour savoir ce qui cloche dans ta requête.
Pour récupérer une liste de catégories, il faudrait plutot utilisé la methode fetchAll(). La méthode fetch() te retournera qu'une seul ligne non ?
$subcat = $bdd->prepare('SELECT * FROM f_souscategories WHERE id_categorie = ? ORDER BY nom');
Tu as rétrécies le code pour prendre moins de place dans ton post, ou tu n'éxecute pas ta requête ?
Pour compléter la réponse de kwik, lorsqu'une requête retourne false
, c'est qu'elle ne s'est pas éxecuté (ou avec un erreur). Donc oui, active l'affichage des erreurs et tu en sauras plus.
kwik : J'ai retreci le code pour prendre moin de place, et pour s'y retrouver plus facilement ! Enfaite meme quand je rassemble le tout, cela ne change rien ! Même en mettant "fetchAll()" cela met la même erreur ! ;)
Mais en voyant cette erreur, je penses que sa doit etre quelque chose qui ne dois pas être activer nan ?
Stack trace: #0 C:\xampp\htdocs\abdifrh\forum.php(8): require() #1 {main} thrown in C:\xampp\htdocs\abdifrh\views\forum.view.php on line 173
oui c'est normal que le fetchAll() ne change rien puisque ta requête retourne false ().
je n'arrive pas a voir l'erreur (un problème venant sans doute de mon tel), il va falloir attendre que je sois sur mon pc ou qu'une autre personne te reponds ;)
D'accord pas de soucis, j'attendrai alors ;) !
Mais je penses que cela viens de mon xampp, parce que j'ai un nouveau pc, et j'ai jamais eu ce genre d'erreur. :(
EDIT : J'ai réinstaller une version, plus ancienne de xampp, du coup, je n'ai plus l'erreur bizarre :
Stack trace: #0 C:\xampp\htdocs\abdifrh\forum.php(8): require() #1 {main} thrown in C:\xampp\htdocs\abdifrh\views\forum.view.php on line 173
Mais j'ai toujours celle la :
Fatal error: Call to a member function fetch() on boolean in C:\xamppp\htdocs\abdifrh\views\forum.view.php on line 173
Je suis débutant, je n'ai jamais eu ce type d'erreur non plus.
As tu activés les erreurs de pdo ? Si ce n'est pas le cas ajoute la ligne suivante :
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Pendant ta connexion à la base de donnée
Exemple :
try {
$bdd = new PDO('mysql:host=localhost;dbname=labase', 'root', '');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
exit('Erreur: ' . $e->getMessage());
}