Bonjour,
Je souhaiterais récuperer dans une colonne toute les ligne qui sont = x et aprés les compter.
Exemple :
Dans la base donné on a une colonne is_admin qui est un group = x et is_membre qui est = x On va imaginez quand à 10 membres et 5 admin.
Je voudrais savoir comment récuper les 5 admin dans la base de donné avec la requete count() le probléme c'est que j'ai plusieurs group avec des id différent.
Ah ouais bien vu Balbert !
Par contre ça retourne un gros tableau un peu pénible à utiliser.
Pour en revenir à un tableau simple on peut faire un truc comme ça :
$req = $this->_getDb()->fetchAssoc('
SELECT user_group_id
COUNT(username)
FROM xf_user
WHERE user_group_id
IN (1, 2, 3)
GROUP BY user_group_id
');
echo '<pre>';
print_r($req);
echo '</pre>';
$nb_utilisateurs_par_group = [];
foreach ($req as $key => $value)
{
$nb_utilisateurs_par_group += [
$value['user_group_id'] => $value['COUNT(username)']
];
}
echo '<pre>';
print_r($nb_utilisateurs_par_group);
echo '</pre>';
Bonsoir.
Si je comprends bien, tu veux à la fois récupérer le nombre d'utilisateurs qu'il y a dans chaque groupe/rôle, mais aussi pouvoir les lister selon leur groupe à travers d'une seule requête SQL ?
Salut,
c'est compliqué, j'ai beau relire, je ne comprend pas...
Essaie de reformuler cette phrase :
on a une colonne is_admin qui est un group = x et is_membre qui est = x
On va imaginez quand à 10 membres et 5 admin.
Est-ce que tu veux dire :
Pour l'exemple, disons qu'il ya dans la base de données : 10 membres, et 5 admins.
Je voudrais savoir comment récuper les 5 admin dans la base de donné avec la requete count()
Est-ce que tu veux dire que tu n'as pas vraiment besoin de récupérer les admins, mais seulement de les compter ?
le probléme c'est que j'ai plusieurs group avec des id différent.
Donne nous le nom de ta table, ainsi que tous ses champs, ça va beaucoup nous aider à comprendre.
En plus j'ai l'impression que Lartak te dit une chose, et que tu redemande la même chose xD
Ses pas évident a expliquer.
Voila la table xf_user
Dans la table xf_user Nous avons une collone user_group_id je voudrais récuperer par exemple tout les utilisateur qui on l'id 3 sauf que à l'avenir il peuvent créer des nouveaux groupes donc on peut avoir 5 groupes. Donc je voudrais que de façons automatique cela compte le nombre d'utilisateur dans chaque groupe.
J'ai essayer de faire sa :
$req = $this->_getDb()->fetchAssoc('
SELECT
COUNT(username)
FROM
xf_user
WHERE user_group_id IN (1,2,3 )
');
return $req;
J'obtient sa avec un var_dump
2 =>
array (size=1)
'COUNT(username)' => int 2
Je voudrais donc que sa affiche le nombre d'utilisateur par groupes.
Ex :
id1 = 5 user
id2 = 2user
id3 = 3user
Ah je vois.
Je ne crois pas qu'on puisse tout faire d'un coup (si je me trompe, dites le moi)
Alors soit :
on travail un peu le tableau, que nous retourne la requête qui cible tous les IDs
Je te montre une idée pour "faire" la 2ème proposition :
$req = $this->_getDb()->fetchAssoc('
SELECT category_id
FROM posts
WHERE category_id
IN (1, 2, 3)
');
$i = 0;
$max = count($req);
while ($i < $max)
{
$req[$i] = $req[$i]['category_id'];
$i++;
}
$nb_utilisateurs_par_group = array_count_values($req);
J'avais essayé avec un foreach à la place du while au début, mais je n'ai pas réussi...
// j'ai essayé ça
foreach ($req as $entry)
{
$entry = $entry['category_id'];
}
// et ça
foreach ($req as $key => $value)
{
$key = $value['category_id'];
}
Salut il y a plus simple:
SELECT
user_group_id,
COUNT(username)
FROM
xf_user
WHERE user_group_id IN (1,2,3)
GROUP BY user_group_id