Problème les sous catégories de mon forum ne s'affichent pas

Ce topic a été résolu
AlexisParder

AlexisParder Le 11 novembre 2018 à 18:54 (Édité le 25 janvier 2019 à 17:54)

Bonsoir j'ai un problème lors de la création de mon forum les sous-catégories ne s'affichent pas voici mon code:
forum.php:
<?php
require('php/config.php'); /* Contient la connexion à la $bdd */
$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:
<!DOCTYPE html>
<html>
<head>
   <title>apollon4</title>
</head>
<body>
   <table class="forum">
   <tr class="header">
      <th class="main">Catégories</th>
      <th class="sub-info">Messages</th>
      <th class="sub-info">Dernier message</th>
   </tr>
   <?php
   while($c = $categories->fetch()) {
      $subcat->execute(array($c['id']));
      $souscategories = '';
      while($sc = $subcat->fetch()) { 
         $souscategories .= '<a href="">'.$sc['nom'].'</a> | ';
      }
      $souscategories = substr($souscategories, 0, -3);
   ?>
   <tr>
      <td class="main">
         <h4><a href=""><?= $c['nom'] ?></a></h4>
         <p>
         <?= $souscategories ?>
         </p>
      </td>
      <td class="sub-info">4083495</td>
      <td class="sub-info">04.12.2015 à 14h52<br />de PrimFX</td>
   </tr>
   <?php } ?>
</table>
</body>
</html>


voici le message d'erreur:
Notice: Undefined variable: categories in C:\wamp\www\test4\Forum\views\forum.view.php on line 14

Merci de votre aide et bonne journée.
Clouder

Clouder Le 12 novembre 2018 à 12:02

Salut,
L'erreur que tu as provient de ta variable $categories !

A aucun moment tu n'exécutes cette requête ... Il faut que tu fasses un prepare puis un execute comme ta deuxième requête avec $subcat

Ton ancienne requête : 
$categories = $bdd->query('SELECT * FROM f_categories ORDER BY nom');

Devient : 
$categories = $bdd->prepare('SELECT * FROM f_categories ORDER BY nom');
$categories = $bdd->execute();

AlexisParder

AlexisParder Le 12 novembre 2018 à 15:44 (Édité le 12 novembre 2018 à 15:44)

Merci j'ai modifier le code dans le fichier forum.view.php en intégrant le code que tu ma donné mais il me met un autre message d'erreur:
Fatal error: Call to undefined method PDO::execute() in C:\wamp\www\test4\Forum\views\forum.view.php on line 15

voici le code 
<!DOCTYPE html>
<html>
<head>
   <title>apollon4</title>
</head>
<body>
   <table class="forum">
   <tr class="header">
      <th class="main">Catégories</th>
      <th class="sub-info">Messages</th>
      <th class="sub-info">Dernier message</th>
   </tr>
   <?php
      $categories = $bdd->prepare('SELECT * FROM f_categories ORDER BY nom');
      $categories = $bdd->execute();
   while($c = $categories->fetch()) {
      $subcat->execute(array($c['id']));
      $souscategories = '';
      while($sc = $subcat->fetch()) { 
         $souscategories .= '<a href="">'.$sc['nom'].'</a> | ';
      }
      $souscategories = substr($souscategories, 0, -3);
   ?>
   <tr>
      <td class="main">
         <h4><a href=""><?= $c['nom'] ?></a></h4>
         <p>
         <?= $souscategories ?>
         </p>
      </td>
      <td class="sub-info">4083495</td>
      <td class="sub-info">04.12.2015 à 14h52<br />de PrimFX</td>
   </tr>
   <?php } ?>
</table>
   <footer>
   <p>© 2018 ApoWeb | apollon4 | Tous droit réservés</p>
</footer>
</body>
</html>
AlexisParder

AlexisParder Le 12 novembre 2018 à 15:47 (Édité le 12 novembre 2018 à 15:48)

Je viens de remarquer que je n'est pas mis le code au bon endroit mais sa me met la même erreur mais a la ligne 4.
<?php
require('php/config.php'); /* Contient la connexion à la $bdd */
$categories = $bdd->prepare('SELECT * FROM f_categories ORDER BY nom');
$categories = $bdd->execute();
$subcat = $bdd->prepare('SELECT * FROM f_souscategories WHERE id_categorie = ? ORDER BY nom');
require('views/forum.view.php');
?>
Clouder

Clouder Le 12 novembre 2018 à 16:15

Tu peux me remettre tes deux bout de code alors ?

Est ce que tu peux mettre ceci et me dire ce que tu obtiens comme message (c'est pour savoir si tu obtiens déjà des résultat): 
$categories = $bdd->prepare('SELECT * FROM f_categories ORDER BY nom');
$categories = $bdd->execute();
print_r($categories);
AlexisParder

AlexisParder Le 12 novembre 2018 à 16:21 (Édité le 12 novembre 2018 à 16:21)

Quand je met :
<?php
require('php/config.php'); /* Contient la connexion à la $bdd */
$categories = $bdd->prepare('SELECT * FROM f_categories ORDER BY nom');
$categories = $bdd->execute();
print_r($categories);
$subcat = $bdd->prepare('SELECT * FROM f_souscategories WHERE id_categorie = ? ORDER BY nom');
require('views/forum.view.php');
?>

voici le message d'erreur:
Fatal error: Call to undefined method PDO::execute() in C:\wamp\www\test4\Forum\forum.php on line 4

et ça n'affiche rien d'autre
Clouder

Clouder Le 12 novembre 2018 à 17:44

Je suis bête ^^ 
Je n'avais pas vu que j'ai écrit une bêtise !!

Essaie plutôt ça : 
$categories = $bdd->prepare('SELECT * FROM f_categories ORDER BY nom');
$categories->execute();
D'un seul coup ça va fonctionner ! 😃
AlexisParder

AlexisParder Le 12 novembre 2018 à 18:00

Merci j'ai dut modifié quelque truc mais maintenant sa fonctionne
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte