8791 sujets

Développement web côté serveur, CMS

Bonjour,

Je cherche à faire une archive dynamique, c'est à dire donner la possibilité d'accéder aux anciennes pages de news par années et mois. Chaque enregistrements contient un champs de type DATE.
Voici mes requetes et le code :

$MoisEnCours = date("n");
$AnneeEnCours = date("Y");


if ($mois) { if ($mois != $MoisEnCours) { $MoisEnCours = $mois; } }
if ($annee) { if ($annee != $AnneeEnCours) { $AnneeEnCours = $annee; } }

//SELECTION DES MOIS
$sql3 = 'SELECT DISTINCT MONTH(date) AS mois FROM maison WHERE YEAR(date) = '.$AnneeEnCours.' ORDER by mois desc';
$req3 = mysql_query($sql3);


//SELECTION DES ANNEES
$sql4 = 'SELECT DISTINCT YEAR(date) AS annee FROM maison ORDER by annee desc';
$req4 = mysql_query($sql4);


Et l'affichage :

while($listannee = mysql_fetch_assoc($req4)) 
{
$Annee = $listannee['annee'];
echo 'ARCHIVES '.$Annee.'';

while($listmois = mysql_fetch_assoc($req3)) 
{ 
$Mois = $listmois['mois'];
if ($Mois != $mec) { echo '<a href="index.php ?mois='.$Mois.'&annee='.$Annee.'">'.$Mois.'</a>'; }

}


ça affiche bien chaque année et les mois de l'année en cours mais pas les mois des années précédentes.
Quelqu'un aurait-il une idée ?

Merci de votre aide !
Modifié par webcrea (22 Aug 2007 - 14:21)
Bonjour et bienvenue parmi nous webcrea Smiley smile

En tant que modérateur, je me dois de te faire remarquer que tu n'as malheureusement pas respecté l'une des Règles de base du forum qui est d'afficher les codes et exemples proprement à l'aide des boutons [ code]... ici ton code HTML, CSS, PHP, etc.[ /code] (sans espace).

Je te remercie par avance de bien vouloir éditer ton message afin de le rendre conforme à cette règle. Smiley cligne

D'ailleurs, je rappelle que le lien qui apparaît en bandeau tout en haut du forum ("Nouveau sur le forum ?...") est important. Il contient des pistes de recherche, des indications sur les règles de vie de la communauté, etc.
Il serait courtois de ta part de bien vouloir en prendre connaissance.

Bonne continuation Smiley smile

upload/1-code.gif
bonjour,

Ce n'est pas a cause de ta requet rq3 car tu lui demandes de prendre l'année en cours et non pas tout les années ?
Non car lorsque je supprime la condition ( WHERE YEAR(date) = '.$AnneeEnCours.') de rq3, ça m'affiche tous les mois (distincts) de 2006 et 2005 dans 2007.
Devrait pas manquer grand chose !
ah oui et les liens des mois 2006 qui se trouvent dans 2007 pointent vers 2007 (alors qu'ils devraient pointer vers 2006)...
Tu requets rq3 et compris dans rq4 ? dans le while ? ( d'apres ton code )

Si c'est le cas tu as juste faire une requete pour chaque année non ?
un truc dans ce style

while($listannee = mysql_fetch_assoc($req4)) 
{
$Annee = $listannee['annee'];
echo 'ARCHIVES '.$Annee.'';
//SELECTION DES MOIS

$sql3 = 'SELECT DISTINCT MONTH(date) AS mois FROM maison WHERE YEAR(date) = '.$Annee.' ORDER by mois desc';

$req3 = mysql_query($sql3);
while($listmois = mysql_fetch_assoc($req3)) 
{ 
$Mois = $listmois['mois'];
if ($Mois != $mec) { echo '<a href="index.php ?mois='.$Mois.'&annee='.$Annee.'">'.$Mois.'</a>'; }
}


Je sais pas si cela va marcher oO mais normalement a chaque nouvelle année il fera fera une requete sql pour chaque année et l'affichera si j'ai bien compris ton code.
C'est nickel Halindel. Il fallait effectivement déplacer la requette des mois et l'intégrer dans le while des années.
Merci beaucoup !