Afficher les archives de votre blog sous cette forme
- Janvier 2007 (10)
- Décembre 2006 (35)
- ...
Cela peut parfois sembler compliquer mais non, on peut le faire grâce à une seule requête
Supposons notre table "blog"
CREATE TABLE `blog` (
`id_blog` int(11) NOT NULL AUTO_INCREMENT,
`titre` varchar(150) NOT NULL DEFAULT '',
`texte` longtext NOT NULL,
`date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id_blog`)
) TYPE=MyISAM ;
Pour afficher les archives :
SELECT DISTINCT YEAR( date ) AS year, MONTH( date ) AS
month , Count( id_blog ) AS posts, MONTHNAME(date) AS monthname
FROM blog
WHERE date < now( )
AND date != '0000-00-00 00:00:00'
GROUP BY YEAR( date ) , MONTH( date )
ORDER BY date DESC
Les champs que nous aurons sont : year,month,post,monthname
Reste plus qu'a les placer dans l'ordre : monthname year (post) avec le code php.
ET voici le code php
$query = "SELECT DISTINCT YEAR( date ) AS year, MONTH( date ) AS
month , Count( id_blog) AS posts, MONTHNAME(date) as monthname
FROM blog
WHERE date < now( )
AND date != '0000-00-00 00:00:00'
GROUP BY YEAR( date ) , MONTH( date )
ORDER BY date DESC "
$result = mysql_query($query,$connect);
$row = mysql_fetch_assoc($result);
do {
echo '<li><a href="/site/archives/'.$row['year'].'/'.$row['month'].'/">'.$row['monthname'].' '.$row['year'].' ('.$row['posts'].')</a></li>';
}while($row = mysql_fetch_assoc($result));