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

Résolu
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

  1. Modérateur
    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
    1. Merci, depuis des années tu réponds à mes demande d'aide avec succès, je ne sais pas comment te remercier :)
      0