construction d'un tableau à 2 dimensions à partir d'une tabl

Eléphanteau du PHP | 24 Messages

01 mars 2006, 14:51

Bonjour,

Je souhaiterais créer un tableau à deux dimensions à partir d'une table... Je m'explique, je voudrais que (à partir de ma table triée par ordre décroissant de date) j'ai un code qui construise un tableau qui pour les douze mois de l'année et sur toutes les années présentes dans ma table me donne le nombre d'enregistrements correspondants...

Voila ma requete sql :
mysql_select_db($database_blog, $blog);
$query_archives = "SELECT * FROM post ORDER BY date_post DESC";
$archives = mysql_query($query_archives, $blog) or die(mysql_error());
while ($row_archives = mysql_fetch_assoc($archives)) {
	$mois = substr($row_archives['date_post'],5,2);
	$an = substr($row_archives['date_post'],0,4);
	echo $an.$mois."<BR>";
}
J'ai commencé à écrire un peu le code mais je demande un si je peux pas le faire en sql ou... si la fonction substr est bien adaptée pour le traitement que je veux faire...

MErci d'avance

Mammouth du PHP | 19672 Messages

02 mars 2006, 00:22

J'ai un peu de mal a comprendre ce que tu veux afficher: essaye de faire un croquis au blc-note de ce que tu veux obtenir et colle ça ici, on pourra te répondre beaucoup plus efficacement.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 24 Messages

02 mars 2006, 08:52

OK... voici donc... J'ai avancé dans le code depuis... Voila où j'en suis...

J'ai une table post :
num_post, date_post, ...

Je voudrais obtenir un tableau de la forme suivante :
200606 ::: 1 post
200605 ::: 2 posts
200603 ::: 1 post
...

Pour y arriver,
Premièrement je trie ma table en fonction de date_post (DESC)
ensuite, la première colonne est la concaténation de l'année et du mois présent dans ma table... J'ai ecris un code qui me permet de compter le nombre d'enregistrements pour chaque "clé" année/mois de ma table (deuxième colonne)...

voici le code que j'ai écris...
mysql_select_db($database_blog, $blog);
$query_archives = "SELECT * FROM post ORDER BY date_post DESC";
$archives = mysql_query($query_archives, $blog) or die(mysql_error());
$ligne = 0;
//$nbre = 1 ;
$cle2 = "";
while ($row_archives = mysql_fetch_assoc($archives)) {
	// $cle : concaténation de l'année et du mois
	$cle = substr($row_archives['date_post'],0,4).substr($row_archives['date_post'],5,2);
	if ($cle != $cle2) {
	$tab_archives[$ligne][0] = $cle;
	$nbre = 1;
	$tab_archives[$ligne][1] = $nbre;
	$ligne ++;
	$cle2 = $cle;}
	else {$nbre ++;
	$tab_archives[$ligne][1] = $nbre;
	}
}
bon... maintenant c'est là que j'ai un souci, je dois avoir un bug quelque part parce que je n'arrive pas à obtenir le nombre d'enregistrements correct...
ça m'affiche quelque chose du genre :

200606 ::: 1 post
200605 ::: 1 post
200603 ::: 1 post
...

Est-ce que vous auriez une idée de mon erreur ?

Merci d'avance...