Calendrier sous la forme d'un tableau

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 055 fois - Téléchargée 15 fois


Contenu du snippet

J'ai réalisé un petit calendrier sous la forme d'un tableau, un peu comme celui situé sur la page d'accueil du [url=http://www.siteduzero.com]Site du Zer0/url.
Il est réalisé en PHP et utilise les timestamp.
Un seul fichier est nécessaire pour le faire fonctionner.
Cela dit, si vous voullez l'inclure sur votre site, je vous conseillerai :
1. de personaliser le design pour que le calendrier s'adapte à votre
site,
2. de créer un fichier nommé par exemple "calendrier.php", d'y mettre
le code et d'inclure ce fichier là ou vous voullez mettre le
calendrier en tapant "<?php include('calendrier.php'); ?>".
Vous pouvez voir un appercu du rendu [url=http://hirrade.lescigales.org/codes/calendrier.php]ici/url.

Source / Exemple :


<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 {
	/* La cellule du jour actuel dans le calendrier */
	background-color: #CDF0F0;
	text-decoration: underline;
}
</style>

<?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;
}

/*
// 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 '  '.$m[$numero_mois].' '.$annee.'  ';

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

  • /
?> <?php $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>

A voir également

Ajouter un commentaire

Commentaires

belette357
Messages postés
1
Date d'inscription
mercredi 3 mars 2010
Statut
Membre
Dernière intervention
21 février 2011

Bonjour !

Ton calendrier me plait beaucoup. Par contre je n'arrive pas a insérer des liens pour les jours ou un evenement est present.

J'ai des evenements classes par date dans ma bdd, comment je dois m'y prendre pour mettre en relation le calendrier et mes evenements datés ?

Je suis apprentie dev en php si tu as un peu de temps ...

Merci
d54
Messages postés
5
Date d'inscription
vendredi 7 novembre 2008
Statut
Membre
Dernière intervention
23 mars 2009

Il faut observer les variables et modifier le code. Il y a DEUX boucles qui affichent respectivement la première ligne et les autres.
Dans chacune, il y a plusieurs variables utilisables :
- $i : numéro du jour ;
- $numero_mois : numéro du mois ;
- $m[$numero_mois] : nom du mois en français ;
- $annee : Année en chiffre.
SrA02
Messages postés
1
Date d'inscription
jeudi 21 octobre 2010
Statut
Membre
Dernière intervention
21 octobre 2010

Bonjour! ton calendrier est super bien fait! ;) mais je voulais savoir comment je fais pour ajouter un lien pour chaque jour du calendrier? par exemple, je dois pouvoir cliquer sur chaque date du calendrier et accéder à une autre page php?
d54
Messages postés
5
Date d'inscription
vendredi 7 novembre 2008
Statut
Membre
Dernière intervention
23 mars 2009

Je demanderai la suppression de cette source pour cause de doublon.
Renfield
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
61
Lorsque tu ajoutes une source sur le site, il te faut confirmer son ajout pour qu'elle soit visible par tous...

Ajout => Description + Fichiers + etc. => Prévisualisation => Mot clés => Terminé

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.