fonctions calendrier

<?php

define
("TINY"2);
define("MEDIUM"3);
define("LARGE"4);
define("HUGE"6);
define("DEFAULT_YEAR"2000);

$jours = array(1=>"Lundi""Mardi""Mercredi""Jeudi""Vendredi""Samedi""Dimanche");
$mois = array(1=>"Janvier""F&eacute;vrier""Mars""Avril""Mai""Juin""Juillet""Ao&ucirc;t""Septembre""Octobre""Novembre""D&eacute;cembre");

/**
 * affiche un mois sous la forme d'un petit tableau 
 * @param $mois (int) : le numero du mois 
 * @param $year (int) : l'annee sur 4 chiffres
 */
function table_month($month$year) {
        if (
$month || $month 12) { $month 1; }
        if (
$year 1900 || $year 2100) { $year DEFAULT_YEAR; }
        global 
$jours$mois;
        
$timestamp mktime(000$month1$year);
        
$nb_jours date("t"$timestamp);
        
$no_jour 0;
        if (
date("n") == $month && date("Y") == $year) {
            
$current_day date("j");
        }
        else {
            
$current_day 0;
      }
      
      
$table "<table style='font-size:8pt;'><caption>".$mois[date("n"$timestamp)]."</caption>";
        
$table .= "<tr>";    // ligne de titre
        
for ($i $i <=$i++) {
            
$table .= "<th style='font-family:sans-serif; background-color:#09F;'>".substr($jours[$i], 02)."</th>";
        }
        
$table .= "</tr>";
        
$table .= "<tr>";    // cas particulier du d├ębut du mois
        
for($i $i date("N"$timestamp) ; $i++) {
            
$table .= "<td style=\"border:0px;\">&nbsp;</td>";
        }
        for(
$jour $i $jour <= $jour++) {
            
$no_jour++;
            
$table .= "<td".($current_day == $no_jour?" style='background-color:red;'":($jour == || $jour == 7?" style='background-color:#ccc;'":"")).">".$no_jour."</td>";
        }    
        
$table .= "</tr>";
        
$start $no_jour;
        for (
$semaine $start $semaine <= $nb_jours - ($nb_jours 7) - $start $semaine+=7) {
            
$table .= "<tr>";
            for (
$jour $jour <= 7$jour++) {
                
$no_jour++;
                
$table .= "<td".($current_day == $no_jour?" style='background-color:red;'":($jour == || $jour == 7?" style='background-color:#ccc;'":"")).">".$no_jour."</td>";
            }
            
$table .= "</tr>";            
        }
        if (
$no_jour $nb_jours) {
            
$table .= "<tr>";
            
$jour 1;
            while(
$no_jour $nb_jours) {
                
$no_jour++;
                
$table .= "<td".($current_day == $no_jour?" style='background-color:red;'":($jour == || $jour == 7?" style='background-color:#ccc;'":"")).">".$no_jour."</td>";
                
$jour++;
            }
            for(
$i $jour $i <= $i++) { // cas particulier de la fin du mois
                
$table .= "<td style=\"border:0px;\">&nbsp;</td>";
            }    
            
$table .= "</tr>";    
        }
        
$table .= "</table>\n";
      return 
$table;
}

/**
 * affiche par defaut 3 mois avec le mois courant au milieu
 * sinon affiche l'ensemble du calendrier d'une annee
 * @param $year (int) : l'annee sur 4 chiffres
 * @param $style (int) : le style d'affichage (TINY / MEDIUM / LARGE / HUGE)
 */
function show_calendar($year DEFAULT_YEAR$style LARGE) {
        if(
func_num_args() == 0) { // on n'affiche que 3 mois (avec le mois courant au milieu) 
            
$current_year date("Y");
            
$current_month date("n");
            
            switch(
$current_month) {
                case 
// janvier
                    
$previous_month 12;
                    
$previous_year $current_year 1;
                    
$next_month $current_month 1;
                    
$next_year $current_year;
                    break;
                case 
12 // decembre
                    
$previous_month $current_month 1;
                    
$previous_year $current_year;
                    
$next_month 1;
                    
$next_year $current_year 1;
                    break;
                default:
                    
$previous_month $current_month 1;
                    
$previous_year $current_year;
                    
$next_month $current_month 1;
                    
$next_year $current_year;                
            }
            echo 
"<table><tr>";
            echo 
"<td style='vertical-align:top;'>";
            echo 
table_month($previous_month$previous_year);
            echo 
"</td>";
            echo 
"<td style='vertical-align:top;'>";
            echo 
table_month($current_month$current_year);
            echo 
"</td>";
            echo 
"<td style='vertical-align:top;'>";
            echo 
table_month($next_month$next_year);
            echo 
"</td>";            
            echo 
"</tr></table>";            
        }
        else {
            if (
$year 1900 || $year 2100) { $year DEFAULT_YEAR; }
            echo 
"<table><caption>".$year."</caption>";
            for(
$ligne $ligne 12 $style $ligne++) {
                echo 
"<tr>";
                for (
$colonne $colonne <= $style $colonne++) {
                    echo 
"<td style='vertical-align:top;'>";
                    echo 
table_month($ligne $style $colonne$year);
                    echo 
"</td>";
                }
                echo 
"</tr>";
            }
            echo 
"</table>";
        }
}

?>

Liste des exercices

  1. dix fois hello
  2. heure du serveur
  3. chiffres hexadecimaux
  4. table de multiplication
  5. bases de numeration
  6. fonctions table multiplication
  7. table ASCII
  8. palette web
  9. fonction table ASCII
  10. fonction palette web
  11. fonction bases de numeration
  12. appels fonction bases de numeration
  13. fonctions liste jours et date en francais
  14. appel liste jours et date en francais
  15. date serveur i18n
  16. fonctions calendrier
  17. appels fonctions calendrier