Calendrier simple, facilement modifiable, affichage complet

Soyez le premier à donner votre avis sur cette source.

Snippet vu 49 219 fois - Téléchargée 18 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

Super ! Merci ! ;)
cs_sofabe
Messages postés
1
Date d'inscription
jeudi 23 juin 2011
Statut
Membre
Dernière intervention
25 juin 2011

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

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.