Creation module [archives] trie par annees / mois

Creation module [archives] trie par annees / mois - PHP - Programmation

Marsh Posté le 03-07-2007 à 00:00:38    

Bonjour,
je souhaite faire un module [archives] sur mon blog qui me permettrait de n'afficher que les posts du mois selectionne.
Je voudrais suivant le format suivant :
 
http://www.slb-life.com/img/archives.JPG
 
J'ai trouve cet exemple sur blogspot, mais je pense qu'il en existe des centaines.
Merci de votre aide. Seb.


---------------
Ho_Zyris - www.slb-life.com
Reply

Marsh Posté le 03-07-2007 à 00:00:38   

Reply

Marsh Posté le 03-07-2007 à 00:12:09    

Ho_Zyris a écrit :

Bonjour,
je souhaite faire un module [archives] sur mon blog qui me permettrait de n'afficher que les posts du mois selectionne.


 
Et bien vas-y.
 
(bah oui, y a pas de questions, de code, même rien sur la structure de ton blog pour le cas où tu voudrais juste des suggestions, je vois pas ce qu'on peut faire avec autant d'informations, à part te dire Bonne chance :D)

Reply

Marsh Posté le 03-07-2007 à 01:17:51    

Oui desole, c'est parce que je cherche des infos plutot generale sur comment m'y prendre.
Ma table a la structure suivante:
 

Code :
  1. intIdx, strDate, strLieu, strData


 
intIdx = index,
strDate = date au format 0000/00/00 00:00
 
Ce que je souhaite faire, c'est d'analyser ma bdd et d'en sortir comme l'exemple le montre la liste des mois faisant un lien vers la meme page (index.php) en n'affichant que les posts du mois selectionne. Appliquer un filtre avec une variable date. Pour le moment j'utilise une fonction type "suivant" / "precedent" qui compte le nombre de post et affiche le nombre de page - aucun moyen de revenir rapidement en arriere a un mois precis. Je renomme l'url pour changer de page et aller au posts precedents.
 
La ou je bloque c'est comment extraire le mois en question et l'afficher en tant que lien, puis passer au suivant et ainsi de suite...
 
Pour info le code que j'utilise pour afficher mes posts, je ne suis pas certain que cela aidera... merci quand meme.
 

Code :
  1. <?php
  2. $nbParPage = 8;
  3. $req1=mysql_query("SELECT * FROM AMSUD" );
  4. $nbNews=mysql_numrows($req1);
  5. $moy= ceil($nbNews/$nbParPage);
  6. if ($moy>=2)
  7. {
  8. if (isset($_GET['page']))
  9. {
  10. if ($_GET['page']==1)
  11. {
  12. echo "<font class=linkp>Precedent - </font>";
  13. }
  14. else
  15. {
  16. echo "<a class=linkpb href=\"index.php?page=".($_GET['page']-1)."\">Precedent</a><font class=linkp> - </font>";
  17. }
  18. }
  19. else
  20. {
  21. echo "<font class=linkp>Precedent - </font>";
  22. }
  23. }
  24. if ($moy>=2)
  25. {
  26. if (isset($_GET['page']))
  27. {
  28. if ($_GET['page']==$moy)
  29. {
  30. echo "<font class=linkp>Suivant<font>";
  31. }
  32. else
  33. {
  34. echo "<a class=linkpb href=\"index.php?page=".($_GET['page']+1)."\">Suivant</a>";
  35. }
  36. echo '<font class=linkp face="arial" size="2"> - Page '.$_GET['page'].' de </font>';
  37. echo '<font class=linkp>'.$moy.'</font>';
  38. echo '<br/><br/>';
  39. }
  40. else
  41. {
  42. echo "<a class=linkpb href=\"index.php?page=1\">Suivant</a>";
  43. }
  44. }
  45. $query="SELECT COUNT(*) FROM AMSUD";
  46. $result=mysql_query($query);
  47. if(mysql_num_rows($result)>0) { $row=mysql_fetch_row($result);
  48. $nbposts=$row[0]; } else $nbposts=0;
  49. $page=$_GET['page'];
  50. if
  51. (
  52. !isset($page)) $page=1;
  53. $idx=($page-1)*$nbParPage;
  54. $query="SELECT intIdx, strDate, strLieu, strData FROM AMSUD ORDER BY intIdx DESC LIMIT $idx, $nbParPage";
  55. $result=mysql_query($query);
  56. while($row=mysql_fetch_row($result))
  57. {
  58. echo "<li><b><font color='#CC0000' face=Verdana size=2>$row[1]</font>&nbsp;
  59. <font color='#61718A' face=Verdana size=2>$row[2]</font></b>&nbsp;&nbsp;
  60. <font face=Verdana size=2><a class=linkb href='#haut' title='haut de page'>^</a><hr align=left width=400 size=1><br>$row[3]</font>
  61. <br><br>";
  62. $query="SELECT COUNT(*) FROM AMSUD_COMMENTS WHERE intIdxA=$row[0]";
  63. $resultc=mysql_query($query);
  64. if(mysql_num_rows($resultc)>0)
  65. {
  66. $rowc=mysql_fetch_row($resultc);
  67. $nbcomments=$rowc[0];
  68. }
  69. else $nbcomments=0;
  70. echo "<a class=linkb href='#' onclick='sViewComments($row[0]);
  71. return false'>commentaires ($nbcomments)</a></li><br><br>";
  72. }
  73. if ($moy>=2)
  74. {
  75. if (isset($_GET['page']))
  76. {
  77. if ($_GET['page']==1)
  78. {
  79. echo "<font class=linkp>Precedent - </font>";
  80. }
  81. else
  82. {
  83. echo "<a class=linkpb href=\"index.php?page=".($_GET['page']-1)."\">Precedent</a><font class=linkp> - </font>";
  84. }
  85. }
  86. else
  87. {
  88. echo "<font class=linkp>Precedent - </font>";
  89. }
  90. }
  91. if ($moy>=2)
  92. {
  93. if (isset($_GET['page']))
  94. {
  95. if ($_GET['page']==$moy)
  96. {
  97. echo "<font class=linkp>Suivant<font>";
  98. }
  99. else
  100. {
  101. echo "<a class=linkpb href=\"index.php?page=".($_GET['page']+1)."\">Suivant</a>";
  102. }
  103. echo '<font class=linkp face="arial" size="2"> - Page '.$_GET['page'].' de </font>';
  104. echo '<font class=linkp>'.$moy.'</font>';
  105. echo '<br/><br/>';
  106. }
  107. else
  108. {
  109. echo "<a class=linkpb href=\"index.php?page=1\">Suivant</a>";
  110. }
  111. }
  112. ?>

Reply

Marsh Posté le 03-07-2007 à 16:46:24    

Ho_Zyris a écrit :


La ou je bloque c'est comment extraire le mois en question et l'afficher en tant que lien, puis passer au suivant et ainsi de suite...


 
- Si strDate est une chaine de caractères pas un champs datetime, voir SUBSTRING dans MySQL, mais tu mériterais des baffes.
- Bon, sinon, passage dans la doc de MySQL sur les mots-clé YEAR() et MONTH().
- Tu fais une requête qui va compter les articles en les regroupant par année puis par mois
- Tu affiches le tout, en ajoutant deux paramètres (basés sur YEAR() et MONTH() donc), style

Code :
  1. <a href="index.php?m=1&y=2007">Janvier</a>


- Tu n'as plus qu'à vérifier dans ta page index.php si les deux paramètres sont définis dans $_GET. Si oui, tu modifies un peu ta requête actuelle pour les ajouter dans une clause where, sinon, bah, tu changes rien :D
 
En gros.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed