8796 sujets

Développement web côté serveur, CMS

Bonjour

J’ai une table Mysql qui a, entre autres, ces colonnes :
• Espace
• Année
• Mois

Je voudrais compter les lignes existantes dans la table de manière arborescente :
• Niveau supérieur : Espace
• Niveau en dessous : Année
• Niveau encore en dessous : Mois
pour obtenir qqechose comme :
• Espace Toto
o 2009
 Septembre = 54
 Août = 34
 …
o 2008
 Décembre = 56
 Novembre = 76
 …
• Espace Riri
o …

Mes essais actuels tournent autour de :

SELECT espace, YEAR(date2), MONTH(date2), COUNT(*) FROM compteur GROUP BY espace ORDER BY espace, YEAR(date2), MONTH(date2)  DESC

mais ça ne donne pas encore le résultat que je recherche.

Merci par avance de votre aide.

Francois
Salut,

quelque chose comme ça :
setlocale(LC_TIME, 'french', 'fr_FR'); 
$sql = 'SELECT espace, YEAR(date2) annee, MONTH(date2) mois, COUNT(*) total FROM compteur GROUP BY espace, YEAR(date2), MONTH(date2) ORDER BY espace, YEAR(date2) DESC, MONTH(date2)  DESC';
$result = mysql_query($sql);
$espace_en_cours = '';
$espace_ul = '';
while($row = mysql_fetch_assoc($result)) {
	$espace = $row['espace'];
	if($espace <> $espace_en_cours) {
		echo $annee_li.$espace_ul.'<h1>'.$espace."</h1>\n<ul>\n";
		$espace_en_cours = $espace;
		$espace_ul = "</ul>\n";
		$annee_en_cours = '';
		$annee_li='';
	}
	$annee = $row['annee'];
	if($annee <> $annee_en_cours) {
		echo $annee_li."\t<li>".$annee."\n\t\t<ul>\n";
		$annee_en_cours = $annee;
		$annee_li = "\t\t</ul>\n\t</li>\n";
	}
	echo "\t\t\t<li>".ucwords(strftime("%B", strtotime('2000-'.$row['mois'].'-01'))).' : '.$row['total']."</li>\n";
}
echo $annee_li.$espace_ul;

Modifié par Heyoan (04 Oct 2009 - 14:04)
bonjour Heyoan et, dans l'immédiat, merci de ta réponse.

Je vais travailler là dessus et je te tiendrai au courant.

Francois