[RESOLU] Problème count id je ne comprend pas !

Avatar du membre
Eléphanteau du PHP | 36 Messages

17 mars 2016, 19:54

Bonsoir,

Je viens vers vous car j'ai un petit soucis pour compter le nombres d'entré dans 3 tables !

Voici donc la fonction qui est sensé faire le taf :

Code : Tout sélectionner

function inTable($table){ global $db; $query = $db->query("SELECT COUNT(id) FROM $table"); return $nombre = $query->fetch(); } $tables = ["Publications" => "works", "Les commentaires" => "comments", "Utilisateurs" => "users"];
Et ensuite le foreach qui aussi sensé afficher ce que je lui donne a manger :

Code : Tout sélectionner

<?php var_dump($tables); foreach($tables as $table_name => $table){ ?> <div class="col-md-4"> <div class="alert alert-success" role="alert"> <h5><?php echo $table_name; ?></h5> <?php $nombre = inTable($table); ?> <p><?php echo $nombre[0]; ?></p> </div> </div> <?php } ?>
Mon var_dump retourne bien mes tables mai j'ai un problème sur nombre[0] qui me retourne ça :
Cannot use object of type stdClass as array


J'ai pourtant tester plusieurs méthode rien n'y fait c'est pourquoi j'en appel a vous.

je ne vois peut être pas ce qui sera visible pour vous ?

je code un blog actuellement et c'est le seul point qui m'agace.

j'ai coder tout le reste sans trop de difficulté le login, les commentaires, account avec l’édition du profil, le register avec envoie de mail d'activation token la total, l'envoie d'article les faille csrf, la gestion des utilisateurs etc... en plus de tout le dashboard et j'en passe.

Mai je plante sur un simple count() qui pour moi n'est pas sensé me renvoyer cette erreur la ou toutes les autre requête fonctionne.

je suis donc perdu j'ai besoin d'aide !! c'est avec plaisir que j'attend vos lumières.

En vous remerciant !! :)

PS : c'est normal que les balise code renvoie du vert ?

Mammouth du PHP | 2703 Messages

17 mars 2016, 20:58

bizarre
cela donne quoi avec ?
<p><?php echo $nombre->id; ?></p>

Avatar du membre
Eléphanteau du PHP | 36 Messages

18 mars 2016, 05:14

Avec ce que tu me donne ça fait ça :

Code : Tout sélectionner

Undefined property: stdClass::$id
Donc je ne comprend pas trop !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

18 mars 2016, 12:28

Bonjour,

As-tu affiché la requête SQL générée et testé le résultat de son exécution ?

Note : pour que le test de Or1 fonctionne, il faut donner un alias à la colonne COUNT(id), sans quoi, comme tu ne récupères pas l'id lui même, l'attribut n'est jamais défini :
$query = $db->query("SELECT COUNT(id) as nb FROM $table");
... 
<?php echo $nombre->nb; ?> // ou print_r ($nombre);
Ps : ça sert à rien de stocker le résultat du fetch dans une variable $nombre dans ta méthode si celle-ci n'est pas utilisée, autant faire un return de la valeur directement :)
return $query->fetch();
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Avatar du membre
Eléphanteau du PHP | 36 Messages

18 mars 2016, 19:13

@Ryle

Merci bien en effet ça fonctionne mieux comme ça :)