Pseudo Mot de passe
fleche Inscription
fleche Mot de passe oublié ?
Les dernières pages de Cours et Dossiers ajoutées
Informations Générales
Chargement en cours...
Nombre de Visites fleche [ 1 129 564 ]
Votre IP fleche [ 38.107.179.241 ]
Vous êtes ici : Home Page Dossiers Trucs et astuces (PHP) Calendrier
Imprimer le document Version Imprimable

Informations Générales

[436] Posts sur le forum
[514] Membres inscrits
Il y a en ligne :
arrow 0 Membre
arrow 1 Invité
fled Membre en ligne:
Aucun

Partenariat

Partenariat Vous pouvez aider ce site à évoluer, en contribuant à son développement. Proposez vos idées de cours et/ou dossiers.
Rendez-vous dans « Partenariat » pour en savoir plus.


Publicité


Prestataire

N°1 de l'hébergement, location de serveurs, nom de domaines et téléphonie.
(OVH est recommandé par Webelix.net)

www.

Nos Partenaires

PHP/MySQL - Calendrier avec CSS

Auteur : 3L!X | Créé le : 06/12/2006 à 09H00

Afficher un calendrier dans une page avec mise en forme CSS.

Février 2012
LMMJVSD
12345
6789101112
13141516171819
20212223242526
272829

Dans cet exemple il y a deux fichiers à inclure (calendrier.css, calendrier.inc.php).
Le calendrier généré ne contient pas de tableau mais une liste d'éléments.

Pour afficher le calendrier dans votre page, il suffira d'appeler la fonction showCalendar() en passant en paramètre le mois et l'année sous la forme YYYY-MM.
Pour le mois en cours

echo showCalendar(date("Y-m"));

calendrier.css contient les mises en formes :

#calendar {
	text-align: center;
	margin: 0 auto;
	background-color: #aaa;
}
#mois {
	font-weight: bold;
	background-color: white;
}
#jours td {
	width: 22px;
	background-color: yellow;
}
.ligne td {
	padding: 3px;
}
td.itemCurrentItem {
	color: white;
	background-color: black;
}
td.itemSelectedItem {
	background-color: #eee;
}

calendrier.inc.php contient le script générant le calendrier :

<?php
// fonctions utiles, $valeur représente une date au format AAAA-MM-JJ
function getSecond($valeur) {
	return substr($valeur, 17, 2);
}

function getMinute($valeur) {
	return substr($valeur, 14, 2);
}

function getHour($valeur) {
	return substr($valeur, 11, 2);
}

function getDay($valeur) {
	return substr($valeur, 8, 2);
}

function getMonth($valeur) {
	return substr($valeur, 5, 2);
}

function getYear($valeur) {
	return substr($valeur, 0, 4);
}

function monthNumToName($mois) {
	$tableau = array("", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aôut", "Septembre", "Octobre", "Novembre", "Décembre");
	return (intval($mois) > 0 && intval($mois) < 13) ? $tableau[intval($mois)] : "Indéfini";
}

// Fonction pour afficher le calendrier
function showCalendar($periode) {
	$leCalendrier = "<table cellpadding=\"0\" cellspacing=\"1\" id=\"calendar\">";

	// Tableau des valeurs possibles pour un numéro de jour dans la semaine
	$tableau = array("0", "1", "2", "3", "4", "5", "6", "0");
	$nb_jour = Date("t", mktime(0, 0, 0, getMonth($periode), 1, getYear($periode)));
	$pas = 0;
	$indexe = 1;

	// Affichage du mois et de l'année
	$leCalendrier .= "<tr><td colspan=\"7\" id=\"mois\">".monthNumToName(getMonth($periode))." ".getYear($periode)."</td></tr>";

	// Affichage des entêtes
	$leCalendrier .= "<tr id=\"jours\"><td>L</td><td>M</td><td>M</td><td>J</td><td>V</td><td>S</td><td>D</td></tr>";

	// Tant que l'on n'a pas affecté tous les jours du mois traité
	while ($pas < $nb_jour) {
		if ($indexe == 1) $leCalendrier .= "<tr class=\"ligne\">"; 
		// Si le jour calendrier == jour de la semaine en cours
		if (Date("w", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) == $tableau[$indexe]) {
			// Si jour calendrier == aujourd'hui
			$afficheJour = Date("j", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode)));
			if (Date("Y-m-d", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))) == Date("Y-m-d")) {
				$class = "class=\"itemCurrentItem\"";}
			else {
				// 1 est toujours vrai => on affiche un lien à chaque fois
				// A vous de faire les tests nécessaire si vous gérer un agenda par exemple
				if (1) {
					$class = "class=\"itemSelectedItem\"";
					$afficheJour = Date("j", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode)));}
				else {
					$class = "";}
				}
			// Ajout de la case avec la date
			$leCalendrier .= "<td $class>$afficheJour</td>";
			$pas++;}
		else {
			// Ajout d'une case vide
			$leCalendrier .= "<td> </td>";}
		if ($indexe == 7 && $pas < $nb_jour) { $leCalendrier .= "</tr>"; $indexe = 1;} else {$indexe++;}
	}
	// Ajustement du tableau
	for ($i = $indexe; $i <= 7; $i++) {
		$leCalendrier .= "<td> </td>";
	}
	$leCalendrier .= "</tr></table>";

	// Retour de la chaine contenant le Calendrier
	return $leCalendrier;
}
?>

[0] commentaire - Voir/EditerAjout commentaire

Haut de page