afficher les archives de votre blog
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));