begin process at 2010 09 02 22:23:50
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date / Heure

 > UN CALENDRIER SOUS LA FORME D'UN TABLEAU

UN CALENDRIER SOUS LA FORME D'UN TABLEAU


 Information sur la source

Note :
6 / 10 - par 2 personnes
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Date / Heure Classé sous :calendrier, timestamp, php Niveau :Initié Date de création :13/03/2009 Date de mise à jour :13/03/2009 12:12:59 Vu / téléchargé :9 418 / 636

Auteur : d54

Ecrire un message privé
Site perso
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Cette source permet de créer un calendrier sous la forme d'un tableau, comme celui du Site du Zer0, par exemple.
Il utilisa le timestamp.
Vous pouvez avoir un apercu du rendu à l'adresse :
http://hirrade.lescigales.org/codes/calendrier.ph p
et le rendu inclu dans une page à l'adresse :
http://hirrade.lescigales.org/

Source

  • <html>
  • <head>
  • <style>
  • caption
  • {
  • margin: auto;
  • font-family: Arial, Times, "Times New Roman", serif;
  • font-weight: bold;
  • font-size: 1.2em;
  • color: #EFF3FF;
  • margin-bottom: 20px;
  • }
  • table
  • {
  • margin: auto;
  • border: 4px outset #EFF3FF;
  • border-collapse: collapse;
  • width: 100%;
  • }
  • th
  • {
  • background-color: #EFF3FF;
  • color: black;
  • font-size: 1em;
  • font-family: Arial, "Arial Black", Times, "Times New Roman", serif;
  • border: 1px
  • }
  • td
  • {
  • border: 1px solid black;
  • font-family: "Trebuchet MS", "Times", serif;
  • font-size: 1em;
  • text-align: center;
  • padding: 5px;
  • }
  • .lienCalendrierJour
  • {
  • background-color: #CDF0F0;
  • text-decoration: underline;
  • }
  • </style>
  • </head>
  • <body>
  • <?php
  • if(!isset($_GET['m']) && !isset($_GET['y']))
  • {
  • // Si on ne récupère rien dans l'url, on prend la date du 1er jour du mois actuel.
  • $timestamp = mktime(0, 0, 0, date('m'), 1, date('Y'));
  • }
  • else
  • {
  • // Sinon on récupère la date du 1er jour du mois donné.
  • $timestamp = mktime(0, 0, 0, $_GET['m'], 1, $_GET['y']);
  • }
  • ?>
  • <?php
  • /* Si le mois et l'année de la variable $timestamp correspondent au mois et à l'année d'aujourd'hui, on retient le jour actuel.
  • Sinon le jour actuel ne se situe pas dans le mois et on ne retient rien */
  • if(date('m', $timestamp) == date('m') && date('Y', $timestamp) == date('Y'))
  • {
  • $coloreNum = date('d');
  • }
  • ?>
  • <?php
  • $m = array("01" => "Janvier", "02" => "Février", "03" => "Mars", "04" => "Avril");
  • $m += array("05" => "Mai", "06" => "Juin", "07" => "Juillet", "08" => "Août");
  • $m += array("09" => "Septembre", "10" => "Octobre", "11" => "Novembre", "12" => "Décembre");
  • $j = array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
  • // Souvenez-vous que les dates en PHP commencent par dimanche !
  • ?>
  • <?php
  • $numero_mois = date('m', $timestamp);
  • $annee = date('Y', $timestamp);
  • if($numero_mois == 12)
  • {
  • // Dans le cas du mois de décembre
  • $annee_avant = $annee;
  • $annee_apres = $annee + 1; // L'année d'après change
  • $mois_avant = $numero_mois - 1;
  • $mois_apres = 01; // Le mois d'après est janvier
  • }
  • elseif($numero_mois == 01)
  • {
  • // Dans le cas du mois de janvier
  • $annee_avant = $annee - 1; // L'année d'avant change
  • $annee_apres = $annee;
  • $mois_avant = 12; // Le mois d'avant est décembre
  • $mois_apres = $numero_mois + 1;
  • }
  • else
  • {
  • // Il ne s'agit ni de janvier ni de décembre
  • $annee_avant = $annee;
  • $annee_apres = $annee;
  • $mois_avant = $numero_mois - 1;
  • $mois_apres = $numero_mois + 1;
  • }
  • $numero_jour1er = date('w', $timestamp); // 0 => Dimanche, 1 => Lundi, 2 = > Mardi...
  • // Changement du numéro du jour car l'array commence à l'indice 0.
  • if ($numero_jour1er == 0)
  • {
  • /*
  • Si c'est dimanche, on le place en 6e position
  • (car on commencera notre boucle à 0)
  • */
  • $numero_jour1er = 6;
  • }
  • else
  • {
  • // Sinon on met lundi à 0 ou mardi à 1 ou mercredi à 2...
  • $numero_jour1er--;
  • }
  • ?>
  • <table>
  • <caption>
  • <?php
  • // Lien pour aller au mois précédent
  • echo '<a href="?m='.$mois_avant.'&amp;y='.$annee_avant.'"><<</a>';
  • // Affichage du mois et de l'année
  • echo '<span style="color: #000000;"> '.$m[$numero_mois].' '.$annee.'</span> ';
  • // Lien pour aller au mois suivant
  • echo '<a href="?m='.$mois_apres.'&amp;y='.$annee_apres.'">>></a>';
  • ?>
  • </caption>
  • <tr>
  • <th>Lu</th>
  • <th>Ma</th>
  • <th>Me</th>
  • <th>Je</th>
  • <th>Ve</th>
  • <th>Sa</th>
  • <th>Di</th>
  • </tr>
  • <?php
  • echo '<tr>'; // Nouvelle ligne du tableau (celle de la 1ère semaine, donc)
  • // Écriture de colonnes vides tant que le mois ne démarre pas.
  • for($i = 0 ; $i < $numero_jour1er ; $i++)
  • {
  • echo '<td></td>';
  • }
  • for($i = 1 ; $i <= 7 - $numero_jour1er; $i++)
  • {
  • echo '<td><div class="';
  • if(isset($coloreNum) && $coloreNum == $i)
  • {
  • echo 'lienCalendrierJour';
  • }
  • else
  • {
  • echo 'lienCalendrier';
  • }
  • echo '">'.$i.'</div></td>';
  • }
  • echo '</tr>';
  • ?>
  • <?php
  • $nbLignes = ceil((date('t', $timestamp) - ($i-1)) / 7);
  • for($ligne = 0 ; $ligne < $nbLignes ; $ligne++)
  • {
  • echo '<tr>'; // Nouvelle ligne du tableau (celle de la nouvelle semaine)
  • for($colone = 0 ; $colone < 7 ; $colone++)
  • {
  • if($i <= date('t', $timestamp))
  • {
  • echo '<td><div class="';
  • if(isset($coloreNum) && $coloreNum == $i)
  • {
  • echo 'lienCalendrierJour';
  • }
  • else
  • {
  • echo 'lienCalendrier';
  • }
  • echo '">'.$i.'</div></td>';
  • }
  • else
  • {
  • // On a fini d'écrire le mois on termine la tableau par des cellules vides
  • echo '<td></td>';
  • }
  • $i = $i +1;
  • }
  • echo '</tr>';
  • }
  • ?>
  • </table>
  • </body>
  • </html>
<html>
<head>
<style>
caption 
{
   margin: auto; 
   font-family: Arial, Times, "Times New Roman", serif;
   font-weight: bold;
   font-size: 1.2em;
   color: #EFF3FF;
   margin-bottom: 20px; 
   
}

table 
{
   margin: auto; 
   border: 4px outset #EFF3FF; 
   border-collapse: collapse; 
   width: 100%;
}

th
{
   background-color: #EFF3FF;
   color: black;
   font-size: 1em;
   font-family: Arial, "Arial Black", Times, "Times New Roman", serif;
   border: 1px
}

td 
{
   border: 1px solid black;
   font-family: "Trebuchet MS", "Times", serif;
   font-size: 1em;
   text-align: center; 
   padding: 5px; 
}


.lienCalendrierJour 
{
	background-color: #CDF0F0;
	text-decoration: underline;
}
</style>
</head>
<body>

<?php

if(!isset($_GET['m']) && !isset($_GET['y']))
{
	// Si on ne récupère rien dans l'url, on prend la date du 1er jour du mois actuel.
	$timestamp = mktime(0, 0, 0, date('m'), 1, date('Y'));
}


else
{
	// Sinon on récupère la date du 1er jour du mois donné.
	$timestamp = mktime(0, 0, 0, $_GET['m'], 1, $_GET['y']);
}

?>
<?php

/* Si le mois et l'année de la variable $timestamp correspondent au mois et à l'année d'aujourd'hui, on retient le jour actuel.
Sinon le jour actuel ne se situe pas dans le mois et on ne retient rien */

if(date('m', $timestamp) == date('m') && date('Y', $timestamp) == date('Y'))
{
	$coloreNum = date('d');
}

?>
<?php

$m = array("01" => "Janvier", "02" => "Février", "03" => "Mars", "04" => "Avril");
$m += array("05" => "Mai", "06" => "Juin", "07" => "Juillet", "08" => "Août");
$m += array("09" => "Septembre", "10" => "Octobre",  "11" => "Novembre", "12" => "Décembre");

$j = array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
// Souvenez-vous que les dates en PHP commencent par dimanche !

?>
<?php

$numero_mois = date('m', $timestamp);
$annee = date('Y', $timestamp);

if($numero_mois == 12)
{
	// Dans le cas du mois de décembre
	$annee_avant = $annee;
	$annee_apres = $annee + 1;	// L'année d'après change
	$mois_avant = $numero_mois - 1;
	$mois_apres = 01;		// Le mois d'après est janvier
}
elseif($numero_mois == 01)
{
	// Dans le cas du mois de janvier
	$annee_avant = $annee - 1;	// L'année d'avant change
	$annee_apres = $annee;
	$mois_avant = 12;		// Le mois d'avant est décembre
	$mois_apres = $numero_mois + 1;
}
else
{
	// Il ne s'agit ni de janvier ni de décembre
	$annee_avant = $annee;
	$annee_apres = $annee;
	$mois_avant = $numero_mois - 1;
	$mois_apres = $numero_mois + 1;
}



$numero_jour1er = date('w', $timestamp);  // 0 => Dimanche, 1 => Lundi, 2 = > Mardi...
	
// Changement du numéro du jour car l'array commence à l'indice 0.
if ($numero_jour1er == 0)
{
	/*
		Si c'est dimanche, on le place en 6e position
		(car on commencera notre boucle à 0)
	*/
	$numero_jour1er = 6; 
}
else
{
	// Sinon on met lundi à 0 ou mardi à 1 ou mercredi à 2...
	$numero_jour1er--;
}

?>
<table>
	<caption>
		<?php 
		// Lien pour aller au mois précédent
		echo '<a href="?m='.$mois_avant.'&amp;y='.$annee_avant.'"><<</a>';


		// Affichage du mois et de l'année
		echo '<span style="color: #000000;">  '.$m[$numero_mois].' '.$annee.'</span>  ';


		// Lien pour aller au mois suivant
		echo '<a href="?m='.$mois_apres.'&amp;y='.$annee_apres.'">>></a>';
		?>
	</caption>

	<tr>
		<th>Lu</th>
		<th>Ma</th>
		<th>Me</th>
		<th>Je</th>
		<th>Ve</th>
		<th>Sa</th>
		<th>Di</th>
	</tr>

	<?php

echo '<tr>'; // Nouvelle ligne du tableau (celle de la 1ère semaine, donc)

	// Écriture de colonnes vides tant que le mois ne démarre pas.
	for($i = 0 ; $i < $numero_jour1er ; $i++)
	{ 
		echo '<td></td>';
	}

	for($i = 1 ; $i <= 7 - $numero_jour1er; $i++)
	{	
		echo '<td><div class="';

		if(isset($coloreNum) && $coloreNum == $i)
		{
			echo 'lienCalendrierJour';
		}
		else
		{
			echo 'lienCalendrier';
		}

		echo '">'.$i.'</div></td>';	
	}

echo '</tr>';

?>
<?php
$nbLignes = ceil((date('t', $timestamp) - ($i-1)) / 7);
for($ligne = 0 ; $ligne < $nbLignes ; $ligne++)
{
	echo '<tr>'; // Nouvelle ligne du tableau (celle de la nouvelle semaine)

	for($colone = 0 ; $colone < 7 ; $colone++)
	{
		if($i <= date('t', $timestamp))
		{
			echo '<td><div class="';

			if(isset($coloreNum) && $coloreNum == $i)
			{
				echo 'lienCalendrierJour';
			}
			else
			{
				echo 'lienCalendrier';
			}

			echo '">'.$i.'</div></td>';
		}
		else
		{
			// On a fini d'écrire le mois on termine la tableau par des cellules vides
			echo '<td></td>';
		}

		$i = $i +1;
	}

	echo '</tr>';
}
?>
</table>
</body>
</html>

 Conclusion

Deux dernières recommendations :
1. Personalisez le design, celui que j'ai mis correspond à mon
   design, mais je doute que le votre soit un clone du mien ;)
2. Créez un fichier "calendrier.php" et incluez-le à l'aide d'une
   include (<?php include('calendrier.php'); ?>) là ou vous voullez
   le mettre. Le code n'en sera que plus lisible.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

13 mars 2009 11:55:05 :
Mise à jour d'un lien
13 mars 2009 11:56:26 :
Mise à jour d'un lien
13 mars 2009 11:57:36 :
Mise à jour d'un lien et correction de quelques fautes d'orthographe
13 mars 2009 12:00:41 :
Mise a jour du code, correction des fautes
13 mars 2009 12:02:43 :
Misa à jour du code, correction des fautes
13 mars 2009 12:10:41 :
Edition des mots-clés
13 mars 2009 12:12:59 :
Edition de la description

 Sources du même auteur

CALENDRIER SOUS LA FORME D'UN TABLEAU

 Sources de la même categorie

Source avec une capture CALENDRIER ANNUEL AVEC NUMÉRO DE SEMAINE par LGGillou
FORMATER DES MILLISECONDES AU FORMAT HH:MM:SS:MMM par lcef
Source avec Zip CLASSE DATETIME AVEC TRADUCTION par 1030
DIFFÉRENCE ENTRE DEUX DATE EN JOURS (LISTE RÉCUPÉRÉE DANS UN... par DevilTN
Source avec Zip Source avec une capture CALENDRIER + AGENDA TRÈS SIMPLE (GERER LES JOURS FÉRIÉS ET L... par mondherclubiste

 Sources en rapport avec celle ci

Source avec une capture CALENDRIER DES RÉSERVATIONS EN PHP par mathieubond
Source avec Zip Source avec une capture CALENDRIER MULTI-USAGE EN PHP (SANS BDD) par jwalter57370
Source avec Zip Source avec une capture CALENDRIER DE RÉSERVATION DYNAMIQUE REVUE ET AMÉLIORÉ par laryflashkod
Source avec Zip CALENDRIER PHP SUR UNE DURÉE DEFINIE À PARTIR DE LA DATE SYS... par Comete_info
Source avec Zip CLASSE CALENDRIER OPTIMISÉE POO par ganjamannicoweb

Commentaires et avis

Commentaire de dark_nemo le 13/03/2009 12:31:05

Bon je me lance dans un petit commentaire.
J'ai juste effectué une lecture rapide sans le tester.
C'est pas mal comme source mais j'pense que tu devrais vérifier le format  de $_GET['m'] et $_GET['y'].
Vérifier que $_GET['m'] est bien un mois et $_GET['y'] une année valide sinon ça risque de planter ton mktime

Commentaire de webdeb le 13/03/2009 13:16:45 6/10

Je vais être un peu critique bien que globalement le code est pas mal mais il y'a quelques petites choses qui me titillent.

1/ Concevoir ton calendrier dans une classe aurait été beaucoup plus pertinent car actuellement ton code n'est pas véritablement réutilisable... L'idéal serait de faire une classe Calendar et de l'appeler de cette manière :

$calendar = new Calendar($_GET['m'], $_GET['y']);

echo $calendar->render(); // Génère le tableau

// ou

echo $calendar; // si ta classe implémente la méthode __toString()

2/ Pour gérer les dates, préfère les fonctions natives de PHP comme strtotime... Tu t'embêtes à tester quel jour, quel mois et quel année on est pour pouvoir en déduire les suivants et précédents. Pour avoir le mois suivant, je fais simplement :

$timestamp = mktime(0,0,0,date('m'), 1, date('Y')); // premier jour du mois courant
$suivant = date('m', strtotime('+1 month', $timestamp));    // numéro du mois suivant

Encapsule tout ça dans une classe en sortant les $_GET à l'extérieur de la classe bien sûr. Au final ce sera beaucoup plus réutilisable que maintenant mais aussi testable unitairement avec PHPUnit ou Lime ;)

++

Commentaire de droques le 16/03/2009 11:21:15

Attention !
Le fichier phpcs_CALENDRIER-SOUS-FORME-TABLEAU___Page.zip
contient le virus Compressed_Huge_File
Il vaut mieux donc recopier le code plutôt que télécharger le zip.
Denis

Commentaire de d54 le 16/03/2009 17:40:01

Arf. Très drole.
C'est moi qui l'ai fait, et je peut te garentire qu'il n'y a pas de virus dedant.

Commentaire de griffondorr le 03/04/2009 11:31:27 6/10

bon début pour cette source et a améliorer ;)

Commentaire de lullaby08 le 11/04/2009 18:13:30

Il marche parfaitement de mon côté... Par contre il serait possible de modifier les dates en évenement en changeant la couleur des dites "dates évenements" ??

Commentaire de gillardg le 17/05/2010 17:48:10

chouette comme calendrier à mettre dans une div
border:5px solid #EFF3FF;

-moz-border-radius: 8px;
  -webkit-border-radius: 8px;
  border-radius: 8px;
   -webkit-box-shadow:5px 5px 5px black;
-moz-box-shadow:5px 5px 5px black;
box-shadow:5px 5px 5px black;

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

comment ajouter un calendrier en php [ par nacer183 ] bonjour, je veut ajouter un calendrier dans mon site comment je doit faire?  veuilez me fournir le code source merci. PHP calendrier [ par lolla19_116 ] bonjour tt le monde, j'ai une tt petite question : je veux faire calendrier comme ce site cliquez ici pb de renvoi de parametre d'une page à une autre [ par helene38000 ] Bonjoursj'ai un petit soucis:j'ai dans une page calendrier.php un calendrier cliquable . Set sur une page  reservation.php j'ai un formulaire avec plu PHP - Calendrier de réservation [ par yaya2669 ] Bonjour,Je cherche un script qui me permettrait de faire un calendrier en php.J'ai regardé ceux qui sont déjà à disposition sur le site mais je n'arri Recherche script calendrier html/php (Sans Php objet ni MySql) [ par lolymeupy ] Bonjour,je suis à la recherche d'un script de calendrier en php/html et sans MySql; Pour les détails, voici le genre de calendrier que je recherche :< CALENDRIER PHP OU JAVASCRIPT [ par eric93 ] Bonjour à tous.Je suis débutant, et je suis en stage.Je dois réaliser un formulaire php pour la saisi d'un menu avec la date.Et mon tuteur veut que je code php [ par parrain3000 ] salut j'ai besoin de votre aide au sujet du code php d'une sélection de date sous forme de calendrier c'est à dire j'aierais selectionner une date en Calendrier + php [ par lsamsoumal ] Bonjour tout le monde j'ai une page php dans laquelle il ya un formulaire contenant un champ texte où je jeux saisir la date à partir d'un calendrier calendrier en php pour gestion locative [ par Justkill ] Bonjour à vous,je vous contact pour la création d'un calendrier pour afficher les dates louées et les dates libres pour les mois et les années sélecti CALENDRIER DE RESERVATION EN PHP MYSQL [ par miniti ] Bonjour,j'ai copié les fichiers pour faire un calendrier de réservation (http://www.phpcs.com/codes/CALENDRIER-RESERVATION-PHP-MYSQL_40895.aspx)j'ai c


Nos sponsors


Sondage...

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,889 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales