Calendrier php dynamique

Calendrier php dynamique - PHP - Programmation

Marsh Posté le 25-06-2007 à 22:26:55    

Bonsoir à tous.
J'aimerais afficher sur mon site un calendrier avec un lien sur le jour si un article est ajouté.
Par exemple le 15 juin 2007 un article est ajouté, le calendrier aura le 15 juin cliquable.
 
J'arrive à afficher le calendrier de cet façon :

Code :
  1. <?php
  2. function afficheMois($mois, $annee)
  3. {
  4. $labelMois = array( '01'=>'Janvier', '02'=>'Février', '03'=>'Mars', '04'=>'Avril', '05'=>'Mai', '06'=>'Juin', '07'=>'Juillet', '08'=>'Août', '09'=>'Septembre', '10'=>'Octobre', '11'=>'Novembre', '12'=>'Decembre');
  5. $labelJour = array('Lu.', 'Ma.', 'Me.', 'Je.', 'Ve.', 'Sa.', 'Di.');
  6. //détermine le nombre de jours dans le mois en tenant compte des années bissextiles
  7. $timestamp = mktime(00, 00, 01, $mois, 1, $annee);
  8. $nbJours = date('t', $timestamp);
  9. echo "<table>\n";
  10. echo "<tr><td colspan=\"4\" class=\"mois\">$labelMois[$mois]</td>";
  11. echo "<td colspan=\"3\" align=\"right\">$annee</td></tr>\n";
  12. echo "<tr>";
  13. for ($si = 0; $si < 7; $si++)
  14. {
  15. echo "<td>$labelJour[$si]</td>";
  16. }
  17. echo "</tr>\n";
  18. echo "<tr>";
  19. $premierJour = date('w', $timestamp) - 1;
  20. //sauter autant de colonne que nécessaire pour atteindre le premier jour de la semaine
  21. for($si = 0; $si < $premierJour; $si++)
  22. {
  23. echo "<td></td>";
  24. }
  25. //Passer en revue tous les autres jours du mois
  26. for ($si = 0; $si < $nbJours; $si++)
  27. {
  28. if (($si + $premierJour) % 7 == 0)
  29. {
  30. //Retour à la ligne chaque Lundi
  31. echo "</tr>\n<tr>";
  32. }
  33. $actuelj = date('d');
  34. $actuelm = date('m');
  35. $actuela = date('Y');
  36. if($actuelj == ($si+1) AND $actuelm == $mois AND $actuela == $annee)
  37. {
  38. $cssClass ="jour";
  39. }
  40. else
  41. {
  42. $cssClass ="date";
  43. }
  44. echo "<td align=\"center\" class=\"$cssClass\">";
  45. echo ($si + 1);
  46. echo "</td>";
  47. }
  48. echo "</tr>\n";
  49. echo "</table>\n";
  50. }
  51. ?>


 
Puis j'affiche ma fonction :

Code :
  1. <?php
  2. $mois = date('m');
  3. $annee = date('Y');
  4. afficheMois($mois, $annee);
  5. ?>


 
Jusqu'a la pas de probleme.
 
Je peut recuperer les dates de mes articles ajoutés :

Code :
  1. $requete_article = mysql_query('SELECT * FROM article');
  2. while ($donnees_article = mysql_fetch_assoc($requete_article))
  3. {
  4. $donnees_article["date_parution"];
  5. }


 
Maintenant je n'arrive pas à inserer à cet endroit :

Code :
  1. for ($si = 0; $si < $nbJours; $si++)
  2. {
  3. if (($si + $premierJour) % 7 == 0)
  4. {
  5. //Retour à la ligne chaque Lundi
  6. echo "</tr>\n<tr>";
  7. }
  8. $actuelj = date('d');
  9. $actuelm = date('m');
  10. $actuela = date('Y');
  11. if($actuelj == ($si+1) AND $actuelm == $mois AND $actuela == $annee)
  12. {
  13. $cssClass ="jour";
  14. }
  15. else
  16. {
  17. $cssClass ="date";
  18. }
  19. echo "<td align=\"center\" class=\"$cssClass\">";
  20. echo ($si + 1);
  21. echo "</td>";
  22. }


 
 
J'ai créer une variable  
$auj = $actuela."-".$actuelm."-".$si
 
J'arrive à obtenir toutes les dates entre le 2007-06-01 et le 2007-06-30
 
De plus j'arrive à obtenir de ma base les dates des artciles du mois de juin et recuperer les valeurs ainsi : 2007-06-15    2006-06-01  
 
Malheureusement je ne voit pas ou mettre

Code :
  1. if ($auj == $donnees_article["date_parution"]){
  2. echo "<td align=\"center\" class=\"$cssClass\"><a href'#'>";
  3. echo ($si + 1);
  4. echo "</a></td>";
  5. } else {
  6. echo "<td align=\"center\" class=\"$cssClass\">";
  7. echo ($si + 1);
  8. echo "</td>";
  9. }


 
Voila je me perd entre les "if" les "for" les "while"  
 
Merci de votre aide tres précieuse

Reply

Marsh Posté le 25-06-2007 à 22:26:55   

Reply

Marsh Posté le 25-06-2007 à 22:43:57    

Ca sent le code repompé non ?? Joli calendrier en effet ^^


Message édité par grosbin le 25-06-2007 à 22:45:52

---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 25-06-2007 à 22:56:30    

oui bien sur c'est un script en licence GPL.
 
Un script simple qui affiche le calendrier dont j'essaye de le rendre dynamique.

Reply

Sujets relatifs:

Leave a Replay

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