Calendrier en PHP

Voici un petit script pour faire un calendrier en PHP.
Ce calendrier peut être utile, notament si on le couple avec une Base de données, et,ainsi, mettre en surbrillance des dates importantes.

 Voir le calendrier 


// fonction de transfert N°mois => nom du mois:
function meses($mois){
switch ($mois)
{
case 1:$mois=Janvier;
break;
case 2:$mois=Février;
break;
case 3:$mois=Mars;
break;
case 4:$mois=Avril;
break;
case 5:$mois=Mai;
break;
case 6:$mois=Juin;
break;
case 7:$mois=Juillet;
break;
case 8:$mois=Août;
break; case 9:$mois=Septembre;
break;
case 10:$mois=Octobre;
break;
case 11:$mois=Novembre;
break;
case 12:$mois=Decembre;
break;
}
return $mois;
}

//debut du script comme tel

$jour1="";
$jour2="";

//juste vérifier que l'on a pas cliqué pour rien...
if($busquedad=="Voir"){
if( ($mois=="Choix") ){
?> <script="javascript">>
history.go(-1);
</script>>
<?
exit;
}

// On commence par afficher le mois et l'année en question
echo meses($mois);//voir le fichier fonctions_php.php
echo" /$ano ";
$interinicio="$ano-$mois-01";// 1er jour du mois à afficher
$jour1=date('Y-m-d', strtotime('-1 day', strtotime($interinicio))) ; //recherche dernier jour du mois précedent
$jour2=date('Y-m-d', strtotime('+1 month', strtotime($interinicio))) ; // recherche du 1er jour mois suivant
$jour2=date('Y-m-d', strtotime('-1 day', strtotime($jour2))) ; //recherche du dernier jour du mois à afficher
}

// recherche pour mois suivant if($act=="ms"){
$jour1=$fecha;
$interm=date('Y-m-d', strtotime('+1 day', strtotime($fecha))) ;
$jour2=date('Y-m-d', strtotime('+1 month', strtotime($interm))) ;
$jour2=date('Y-m-d', strtotime('-1 day', strtotime($jour2))) ;
ereg( "([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $jour2, $regs );
echo meses($regs[2]);
echo" /$regs[1]";
}

//recherche pour mois précedent if($act=="mp"){
$jour2=$fecha;
ereg( "([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $fecha, $regs );
$inter="$regs[1]-$regs[2]-01";
$jour1=date('Y-m-d', strtotime('-1 day', strtotime($inter))) ;
meses($regs[2]);
echo" /$regs[1]";
}

// si aucune demande particulière a été donnée alors on prend le premier
jour du mois en cours...
if(empty($jour1)){
$basic=date('Y-m-01');
$jour1=date('Y-m-d', strtotime('-1 day', strtotime($basic))) ;
$jour2=date('Y-m-d', strtotime('+1 month', strtotime($basic))) ;
$jour2=date('Y-m-d', strtotime('-1 day', strtotime($jour2))) ;
ereg( "([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $jour2, $regs );
echo meses($regs[2]);
echo" /$regs[1]";
}
$pga=$jour1;
$pgs=$jour2;


?>


// Entête du tableau représentant le calendrier , la 1 ère cellule étant le Lundi
<table border="1" width="">
<tr bgcolor="454545">
<td width="">Lun>/td>>td width="">Mar</td>
<td width="">Mer>/td>>td width="">Jeu</td><td width="">Ven</td>;
<td width="">Sam</td><td width="">Dim</td>
</tr>

<tr>
<?
$aujourdhui=date('Y-m-d');

// $jour1 est donc 1er jour du mois suivant et $jour2 est 1er jour du mois en cours

while ( $jour1 > $jour2 ) {
$jour1 = date('Y-m-d', strtotime('+1 day', strtotime($jour1))) ;

// on va rechercher le nom du jour à afficher:
$jours = array('Dimanche', 'Lundi', 'Mardi','Mercredi','Jeudi','Vendredi','Samedi') ;
$jour_date = $jours[date('w', strtotime($jour1))] ;
ereg( "([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $jour1, $regs );


// si le jour en question est la date d'aujourd'hui alors on la met d'une autre couleur
$bg="";
if($jour1==$aujourdhui){
$bg="bgcolor='7f7f7f'";
}

//Maintenant il va falloir formater le tableau pour qu'il commence sous le bon nom de jour :
//formatage suivant le jour de la semaine.....
if($jour_date=="Dimanche"){
$saut="</tr><tr>";
}else{$saut="";}


$debut="$jour_date/$regs[3]";

if($debut=="Mardi/01"){
echo"<td></td>";
}
if($debut=="Mercredi/01"){
echo"<td></td><td></td>";
}
if($debut=="Jeudi/01"){
echo"<td></td><td></td><td></td>";
}
if($debut=="Vendredi/01"){
echo"<td>>/td><td></td><td></td><td></td>";
}
if($debut=="Samedi/01"){
echo"<td></td><td></td><td></td><td></td><td></td>";
}
if($debut=="Dimanche/01"){
echo"<td></td><td></td><td></td><td></td><td></td><td></td>";
}
echo "<td $bg width=''> $regs[3]</td> $saut";

}
//fin formatage

?>
</tr>
</table>

<div align="center">
<?
//lien pour le mois précédent:
echo"<a class='lien' href='?act=mp&fecha=$pga'><< Mois précédent</a>";

// Lien pour le mois suivant:
echo"    <a class='lien' href='?act=ms&fecha=$pgs'> Mois suivant >></a>";
?>
</div>
<br><br>

<?
// Début du formulaire de recherche d'un mois :
if( empty($fig)){
// on fait les recherches sur 5 ans avant et 5 ans aprés
$annee=date('Y');
$deban=$annee-5;
$finan=$annee+5;
$moisan= 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'=>Décembre);
?>
<form method="POST" action="?busquedad=Voir">
Voir mois de :<select size="1" name="mois">
<option selected>Choix</option>
<?
foreach($moisan as $opt=>$alfa){
echo"<option value='$opt'>$alfa</option>";
}
?>
</select>
<br>
Sélectionner l'année :
<select size="1" name="ano">
<?
while($deban++<=$finan ){
echo"<option>$deban</option>";
}
?>
</select>
<br><input type="submit" name="busquedad" value="Voir">
</form>
<?
}




Si des doutes persistent, des questions spécifiques, des petits problèmes de mise en place, n'hésitez pas à consulter le forum référence en php :
www.AllHtml.com

Tutos:
Cases à cocher   Tronquer un texte    Moteur de recherche    Tableau (Array) et boucles    Caddie virtuel    Calendrier   

Notes:
Notez que de toute façon ces scripts ne sont qu'à titre d'exemples et n'en sont donc que trés partiels, il vous faudra bien-sûr les intégrer dans l'environnement de votre page, de votre site, mais la méthode est là et elle fonctionne.
Autre point important, ces morceaux de scripts notament, lorsqu'il y a connexion à votre base de données, ne font aucune référence à certains problèmes de sécurité.