Calendrier simple, facilement modifiable, affichage complet

3/5 (18 avis)

Snippet vu 63 880 fois - Téléchargée 20 fois

Contenu du snippet

Bonjour,

Je vous propose pas quelque chose de révolutionnaire, mais bon... En fait j'avais besoin d'un petit script pour afficher un calendrier pour ensuite y ajouter la mise en forme et les liens evenements mais j'ai trouvé que des calendriers tout fait utilisant une bdd ou alors des tout simples mais au code pas très simple ( et surtout pas très clair ) donc voilà j'en ai fais un maison.

La seule particularité c'est qu'il afficher aussi les dates des jours du mois d'avant et celui d'après ( c'est pas très clair? allez voir le lien vous comprendrez ). Je les ais affiché dans une couleur plus claire pour qu'ils apparaissent moins, mais bon le but c'est que vous modifiez le code à votre envie donc je suis pas allez cherché loin.

Le lien pour tester :
http://pproject.webzzanine.net/calendrier.php

Le code :

Source / Exemple :


<?php
// Récuperation des variables passées, on donne soit année; mois; année+mois
if(!isset($_GET['mois'])) $num_mois = date("n"); else $num_mois = $_GET['mois'];
if(!isset($_GET['annee'])) $num_an = date("Y"); else $num_an = $_GET['annee'];

// pour pas s'embeter a les calculer a l'affchage des fleches de navigation...
if($num_mois < 1) { $num_mois = 12; $num_an = $num_an - 1; }
elseif($num_mois > 12) {	$num_mois = 1; $num_an = $num_an + 1; }

// nombre de jours dans le mois et numero du premier jour du mois
$int_nbj = date("t", mktime(0,0,0,$num_mois,1,$num_an));
$int_premj = date("w",mktime(0,0,0,$num_mois,1,$num_an));

// tableau des jours, tableau des mois...
$tab_jours = array("","Lu","Ma","Me","Je","Ve","Sa","Di");
$tab_mois = array("","Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Decembre");

$int_nbjAV = date("t", mktime(0,0,0,($num_mois-1<1)?12:$num_mois-1,1,$num_an)); // nb de jours du moi d'avant
$int_nbjAP = date("t", mktime(0,0,0,($num_mois+1>12)?1:$num_mois+1,1,$num_an)); // b de jours du mois d'apres

// on affiche les jours du mois et aussi les jours du mois avant/apres, on les indique par une * a l'affichage on modifie l'apparence des chiffres *
$tab_cal = array(array(),array(),array(),array(),array(),array()); // tab_cal[Semaine][Jour de la semaine]
$int_premj = ($int_premj == 0)?7:$int_premj;
$t = 1; $p = "";
for($i=0;$i<6;$i++) {
	for($j=0;$j<7;$j++) {
		if($j+1 == $int_premj && $t == 1) { $tab_cal[$i][$j] = $t; $t++; } // on stocke le premier jour du mois
		elseif($t > 1 && $t <= $int_nbj) { $tab_cal[$i][$j] = $p.$t; $t++; } // on incremente a chaque fois...
		elseif($t > $int_nbj) { $p="*"; $tab_cal[$i][$j] = $p."1"; $t = 2; } // on a mis tout les numeros de ce mois, on commence a mettre ceux du suivant
		elseif($t == 1) { $tab_cal[$i][$j] = "*".($int_nbjAV-($int_premj-($j+1))+1); } // on a pas encore mis les num du mois, on met ceux de celui d'avant
	}
}
?>

<html>
<head><title>Calendrier</title>
</head>
<body>
<table>
	<tr><td colspan="7" align="center"><a href="calendrier.php?mois=<?php echo $num_mois-1; ?>&amp;annee=<?php echo $num_an; ?>"><<</a>&nbsp;&nbsp;<?php echo $tab_mois[$num_mois];  ?>&nbsp;&nbsp;<a href="calendrier.php?mois=<?php echo $num_mois+1; ?>&amp;annee=<?php echo $num_an; ?>">>></a></td></tr>
	<tr><td colspan="7" align="center"><a href="calendrier.php?mois=<?php echo $num_mois; ?>&amp;annee=<?php echo $num_an-1; ?>"><<</a>&nbsp;&nbsp;<?php echo $num_an;  ?>&nbsp;&nbsp;<a href="calendrier.php?mois=<?php echo $num_mois; ?>&amp;annee=<?php echo $num_an+1; ?>">>></a></td></tr>
	<?php
	echo'<tr>';
	for($i = 1; $i <= 7; $i++){
		echo('<td>'.$tab_jours[$i].'</td>');
	}
	echo'</tr>';

	for($i=0;$i<6;$i++) {
		echo "<tr>";
		for($j=0;$j<7;$j++) {
			echo "<td".(($num_mois == date("n") && $num_an == date("Y") && $tab_cal[$i][$j] == date("j"))?' style="color: #FFFFFF; background-color: #000000;"':null).">".((strpos($tab_cal[$i][$j],"*")!==false)?'<font color="#aaaaaa">'.str_replace("*","",$tab_cal[$i][$j]).'</font>':$tab_cal[$i][$j])."</td>";
		}
		echo "</tr>";
	}
	?>
</table>
</body>
</html>

Conclusion :


Voilà, voilà n'hésitez pas à critiquer ^^

A voir également

Ajouter un commentaire Commentaires
Mec ça marche pas et en plus y'a pas de couleurs !!!!
Simple et efficace !! O tOp
bruno2828 Messages postés 11 Date d'inscription samedi 19 avril 2003 Statut Membre Dernière intervention 22 juillet 2015
22 juil. 2015 à 08:50
Super ! Merci ! ;)
cs_sofabe Messages postés 1 Date d'inscription jeudi 23 juin 2011 Statut Membre Dernière intervention 25 juin 2011
25 juin 2011 à 11:21
Bonjour,
je ne trouve pas tte la source du code..
Pourriez vous mettre les img?
Cdlt.
nsoufiane Messages postés 1 Date d'inscription mardi 20 janvier 2009 Statut Membre Dernière intervention 7 mai 2011
7 mai 2011 à 17:06
Bonjour

Je suis un débutant en PHP, je veux savoir comment on peut ajouter des événements dans la calendrier (est ce possibe ?)

Merci

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.