Parse error: syntax error, unexpected '$souscategories' (T_VARIABLE) in

Hardy_14

Hardy_14 Le 11 juillet 2020 à 00:54 (Édité le 11 juillet 2020 à 00:58)

Bonsoir,

J'ai un problème, je veux afficher les catégories et sous catégories de forum dans mon navigateur, mais il y a une erreur qui m'affcihe Parse error: syntax error, unexpected '$souscategories' (T_VARIABLE) on line 12. Voici le code :

<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>

Merci d'avance pour vos réponse.

Drakmans

Drakmans Le 13 juillet 2020 à 19:49 (Édité le 13 juillet 2020 à 19:50)

Bonsoir,

Il faut mettre la variable $souscategories = ''; avant la première boucle.

`<?php $souscategories = ''; while($c = $categories->fetch()) {

  $subcat->execute(array($c['id'])); 

  // etc...`
Hardy_14

Hardy_14 Le 15 juillet 2020 à 14:01 (Édité le 22 juillet 2020 à 20:03)

Bonjour @Drakmans,

J'ai mis la variable $souscategories = ""; avant la première boucle, mais ça m'affiche toujours le même erreur : Parse error: syntax error, unexpected '$souscategories' (T_VARIABLE) on line 12 :

<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
    $souscategories = '';
    while($c = $categories->fetch()) {
         $subcat->execute(array($c['id']));
         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>
essonne91

essonne91 Le 15 juillet 2020 à 18:25 (Édité le 15 juillet 2020 à 18:54)

Salut,

L'erreur c'est qu'il manquait # dans le href c'est ce qui fait beuger le système.

        <?php
        while($c = $categories->fetch()) {
            $subcat->execute(array($c['id']));
            $souscategories = '';
            while ($sc = $subcat->fetch()) {
                $souscategories .= '<a href="#">'.$sc['name'].'</a> | ';
            }
            $souscategories = substr($souscategories, 0, -3);
        ?>
        <tr>
            <td class="main">
                <h4><a href=""><?= $c['name'] ?></a></h4>
                <p>
                    <?= $souscategories ?>
                </p>
            </td>
            <td class="sub-info">4083495</td>
            <td class="sub-info">04.12.2015 à 14h52<br />de Admin</td>
        </tr>
        <?php } ?>
Hardy_14

Hardy_14 Le 22 juillet 2020 à 16:13 (Édité le 23 juillet 2020 à 12:14)

Bonjour @essonne91,

J'ai ajouté # dans mon code est maintenant j'ai une autre erreur qui m'affiche : Fatal error: Uncaught Error: Call to undefined method connexionDB::prepare() in C:\xampp\htdocs\EDUTECH\forum-2.php:12 Stack trace: #0 {main} thrown in C:\xampp\htdocs\EDUTECH\forum-2.php on line 12.

J'ai fait un appel à la base de données dans autre page dans un fichier separé voici mon code :

<?php 
    session_start(); 
    /* Contient la connexion à la $bdd */
    include("connexionDB.php"); 

    if(!isset($_SESSION['id'])){ 
        header('Location: connexion.php'); 
        exit; 
    }

  $categories = $DB->query('SELECT * FROM f_categories ORDER BY nom');
  $subcat = $DB->prepare('SELECT * FROM f_souscategories WHERE id_categories = ? ORDER BY nom');

  $afficher_profil = $DB->query("SELECT * 
    FROM user 
    WHERE id = ?", 
  array($_SESSION['id']));
  $afficher_profil = $afficher_profil->fetch();
?>
<!DOCTYPE html>
<html>
<head>
    <title>Forum</title>
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="forum-2.css">
    <link rel="stylesheet" href="css/bootstrap.min.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@500&display=swap" rel="stylesheet">
</head>
<body>
    <div class="text-center">
        <h6 class="under-title">Forum</h6>
    </div>

  <div class="container">
    <div class="row">
      <div class="col-0 col-sm-0 col-md-0 col-lg-0"></div>
      <div class="col-12 col-sm-12 col-md-12 col-lg-12">

        <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
          $souscategories = '';
          while($c = $categories->fetch()) {
            $subcat->execute(array($c['id']));
            while ($sc = $subcat->fetch()) {
              $souscategories .= '<a href="#">'.$sc['name'].'</a> | ';
            }
            $souscategories = substr($souscategories, 0, -3);
          ?>
          <tr>
            <td class="main">
              <h4><a href=""><?= $c['name'] ?></a></h4>
              <p>
                <?= $souscategories ?>
              </p>
            </td>
            <td class="sub-info">4083495</td>
            <td class="sub-info">04.12.2015 à 14h52<br />de Admin</td>
          </tr>
          <?php } ?>
        </table>
      </div>
    </div>
  </div>
</body>
</html>

J'ai essayé de vérifier s'il n'y a pas d'erreur dans le fichier dans le site https://phpcodechecker.com/ et aucune erreur n'a été trouvée.

Voici mon code où j'ai fait appel à la base de données le fichier connexionDB.php :

<?php
  // Déclaration d'une nouvelle classe
  class connexionDB {
    private $host    = 'localhost';  
    private $name    = 'edutech';    
    private $user    = 'root';       
    private $pass    = '';       
    private $connexion;

    function __construct($host = null, $name = null, $user = null, $pass = null){
      if($host != null){
        $this->host = $host;           
        $this->name = $name;           
        $this->user = $user;          
        $this->pass = $pass;
      }
      try{
        $this->connexion = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->name,
          $this->user, $this->pass, array(PDO::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES UTF8', 
          PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
      }catch (PDOException $e){
        echo 'Erreur : Impossible de se connecter  à la BDD !';
        die();
      }
    }
    public function query($sql, $data = array()){
      $req = $this->connexion->prepare($sql);
      $req->execute($data);
      return $req;
    }

    public function insert($sql, $data = array()){
      $req = $this->connexion->prepare($sql);
      $req->execute($data);
    }
  }
  // Faire une connexion à votre fonction
  $DB = new connexionDB();
?>
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte