Parse error: syntax error, unexpected '$souscategories' (T_VARIABLE) in
- Accueil
- Forum
- Programmation
- PHP
- Parse error: syntax error, unexpected '$souscategories' (T_VARIABLE) in
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.
Profil introuvable 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 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 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 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();
?>