Warning: count(): Parameter must be an array or an object that implements Count

Résolu/Fermé
rolly41 Messages postés 243 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 25 octobre 2024 - 23 mai 2021 à 14:43
rolly41 Messages postés 243 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 25 octobre 2024 - 23 mai 2021 à 23:32
Bonjour, ma page index.php doit reprendre le nombre de résultat que retourne une requete, le problème c'est que si aucun résultat n'est retourné, j'ai une erreur ' Warning: count(): Parameter must be an array or an object that implements Countable'

Quand il y a des résultats dans la requête, je n'ai aucun message d'erreur. Pourriez-vous m'aider à comprendre ce problème?

Code de la page:
<?php
$page = 'Accueil';
require 'include/head.php';
require 'include/body.php';
$req = $pdo->query('SELECT id FROM cat_forum');
$nbr = $req->fetch();
$test = count($nbr);
if(!empty($test) & $test !== '0')
{
$req1 = $pdo->prepare('SELECT * FROM cat_forum');
$req1->execute();
while($row1 = $req1->fetch())
{
$id_cat = $row1['id'];
$type_cat = $row1['type'];
$name_cat = $row1['name'];
$desc_cat = $row1['description'];
$req2 = $pdo->query('SELECT * FROM forum_forum WHERE id_type_parent="'.$id_cat.'" AND parent="cat"');
$nbr2 = $req2->fetch();
$value = count($nbr2);
if(empty($value))
{
$admin='off';
if($admin == 'on')
{
echo '<table border="3" class="category" align="center">';
echo '<tr valign="middle" align="center"><td colspan="2" width="650"><a href="#" name="'.$name_cat.'">'.$name_cat.'</a></td><td width="100">Sujets</td><td width="100">Messages</td><td width="200">Dernier message</td></tr>';
echo '<tr align="center"><td colspan="5">Cette catégorie ne sera pas visible temps qu\'elle n\'a aucun forum. Créez un forum pour cette catégorie</td></tr>';
echo '</table><br />';
}

}
if($value !== '0')
{
echo '<table border="3" class="category" align="center">';
echo '<tr valign="middle" align="center"><td colspan="2" width="650"><a href="#" name="'.$name_cat.'" title="'.$desc_cat.'">'.$name_cat.'</a></td><td width="100">Sujets</td><td width="100">Messages</td><td width="200">Dernier message</td></tr>';
$req2 = $pdo->prepare('SELECT * FROM forum_forum WHERE id_type_parent="'.$id_cat.'" AND parent="cat"');
$req2->execute();
while($row2 = $req2->fetch())
{
$forum = $row2['name'];
$description = $row2['description'];

echo '<tr height="115"><td width="110" valign="middle" align="center"></td><td valign="top" align="left"><a href="#">'.$forum.'</a><br /><p>'.$description.'</p></td><td width="100" valign="middle" align="center">0 Sujet</td><td width="100" valign="middle" align="center">0 Message</td><td width="200" valign="middle" align="center"><a href="#">Dernier message</a></td></tr>';
}
echo '</table><br />';
}
else
{
echo '';
}
}
}
else
{
echo '<table border="3" class="category" align="center"><tr><td width="1050">Aucune catégorie de forum n\'a été trouvé dans la base de données. <a href="#">Créer une catégorie</a></td></tr></table>';
}
require 'include/end.php';
?>


Je suis sous WampServer 3.2.3:
php: 7.3.21
Apache: 2.4.46
mysql: 5.7.31
Windows 10 64bits

1 réponse

jordane45 Messages postés 38264 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 31 octobre 2024 4 694
Modifié le 23 mai 2021 à 19:01
Bonjour,

$req = $pdo->query('SELECT id FROM cat_forum');
$nbr = $req->fetch();
$test = !empty($nbr) ? count($nbr) : 0 ; // IF/ELSE réalisé en écriture TERNAIRE pour s'assurer que la variable existe et n'est pas vide/false/null


1
rolly41 Messages postés 243 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 25 octobre 2024 1
23 mai 2021 à 23:32
Merci, depuis des années tu réponds à mes demande d'aide avec succès, je ne sais pas comment te remercier :)
0