Bonjour,
Désolé pour le titre qui ne veut peut-être pas dire grand chose, mais je ne savais pas trop comment m'exprimer.
Voici mon problème, je voudrais faire un requête SQL et trier les résultats selon le nombre de "nom" différents (distinct).
Ma table est une table de réservation dans laquelle je stocke le nom de la personne qui réserve et le sport pour lequel elle a réserver.
Et je voudrais pouvoir afficher combien de personne on réservé 1x, 2x, 3x...- de 3x, + de 3x etc...
Ce que je suis parvenu à faire pour le moment, c'est afficher toute les personnes qui on réservé 1 fois, 2 fois etc...mais elle s'affiche toutes, par exemple, pour une table comme ceci:
id sport nom
4 Spinning Julie
14 Spinning Julie
24 Spinning Mile
34 Spinning JF
44 Escalade JF
54 Escalade JF
64 Tennis Steph
J'arrive à obtenir ce résultat:3 JF
2 Julie
1 Mile
1 Steph
grâce à cette requête: $sql = "SELECT nom, count(nom) as nb_test FROM test GROUP BY nom";3 1 (Car il n'y a que JF qui a réservé 3x)
2 1 (Car il n'y a que Julie qui a réservé 2x)
1 2 (Car il y a Steph et Mile qui ont réservé 1x)
Mon code actuel pour avoir mon résultat actuel:<?php
include("config.php");
$sql = "SELECT nom, count(nom) as nb_test FROM test GROUP BY nom";
$req = mysql_query($sql) or die(mysql_error());
while($data = mysql_fetch_array($req)) {
$nb_test = $data[nb_test];
$test = $data[nom];
echo $nb_test.' '.$test.' '.$nb_total.'<br>';
}
?>
Salut,
J'ai modifié le titre de la discussion pour le rendre un peu plus simple.
Tu pourrais contourner ton problème avec un peu d'algorithmie.
Par exemple, en passant par un tableau intermédiaire et un double parcours (1 fois pour construire le tableau de statistique, 1 autre fois pour afficher les données).
Cela ne serait pas beaucoup plus gourmand qu'une requête SQL complexe à mon avis et vu le contexte.
Par exemple, en ajustant ta boucle while, pour construire le tableau statistique :
$statistics = array();
while($data = mysql_fetch_array($req)) {
if (! isset($statistics[$data[nb_test]])) {
$statistics[$data[nb_test]] = 1;
}
else {
$statistics[$data[nb_test]] ++;
}
}
Et puis après, tu peux jongler avec ce tableau pour afficher ce que tu souhaites : foreach($statistics as $nombre_reservations => $nombre_personnes) {
echo $nombre_personnes . ' personnes ont fait ' . $nombre_reservations . ' réservations<br />';
}
Merci beaucoup!
Je vais faire comme ça alors, votre aide m'est précieuse car j'étais encore loin de cette piste!
Un grand merci!
