Calendrier

Calendrier

Calendrier

Lors de la création d’une application web, il est parfois utile d’afficher un calendrier, ainsi que des évènements présents dessus. Dans cet optique, voici un calendrier qui vous permet de faire ça, très simplement !

Présentation

Ce calenderier est développé en PHP 5, sous forme de 3 classes. Une classe gêre l’affichage du calendrier, une autre gêre les évènements et une autre est appellée à chaque événement, elle décrit un événement.

Lors du clique sur un événement, une popup DHTML est ouverte et son contenu est dans un fichier « popup.php » appellé en POST avec comme argument, l’argument défini lors de la création de l’événement.

Télécharger

Nous pouvez télécharger le calendrier sous forme d’archive contenant le code source et la page de démo en plusieurs formats :

Mise en place

Comme vous pouvez le voir dans le fichier index.php de l’archive, voici comment créer simplement un calendrier:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// On charge les classes nécessaires
require('librairies/Calendrier.php');
require('librairies/CalendrierEvents.php');
require('librairies/CalendrierEvent.php');
 
// On détermine quel mois afficher
$mois = (int) ((isset($_GET['mois'])) ? $_GET['mois'] : date('m'));
$annee = (int) ((isset($_GET['annee'])) ? $_GET['annee'] : date('Y'));
 
// On créer les événements
$events = new CalendrierEvents();
$events->add(
	array(
		'from' => mktime(12, 0, 0, 6, 12, 2009),
		'to' => mktime(18, 0, 0, 6, 12, 2009),
		'name' => 'Petit test',
		'color' => '#00ff00',
		'ajax_params' => 'id=0'
	),
	array(
		'from' => mktime(8, 30, 0, 6, 5, 2009),
		'to' => mktime(18, 0, 0, 6, 8, 2009),
		'name' => 'Second test assez long',
		'color' => '#ffff00',
		'ajax_params' => 'id=1',
	),
	array(
		'from' => mktime(7, 30, 0, 6, 6, 2009),
		'to' => mktime(23, 19, 0, 6, 15, 2009),
		'name' => '3ème test assez long',
		'color' => '#00ffff',
		'ajax_params' => 'id=2'
	)
);
 
// On créer le carlendrier
$calendrier = new Calendrier($mois, $annee);
// On ajoutes les événements au calendrier
$calendrier->setEvents($events);
// On défini la syntaxe des liens
// %Y = Année (AAAA)
// %M = Mois   (MM)
$calendrier->setLinks(LOCAL_PATH.'%Y/%M');
// On défini la syntaxe des heures
// Attention: Le contenu de cette variable est passé dans "date"
$calendrier->setHours('H<\s\up>i</\s\up>');
// On défini quel sont les conditions d'accès au contenu de la popup
$calendrier->setPopup(LOCAL_PATH.'popup.php', 'POST');
// On affiche le calendrier
$calendrier->parse();

Vous pouvez aussi faire intervenir une base de données afin de pouvoir créer de manière interactive vos énéments. Remplacez le code de la ligne 11 à 34.

5 comments

  1. Jean-Denis dit :

    Bonjour et Bonne Année,
    J’aprécie beaucoup ce calendrier, malheureusement il y a un décalage de jours lorsqu’il est affiché avec IE inférier à 8. Je n’ai pas réussi à résoudre le problème, voilà pourquoi je vous demande comment faire.
    (janvier 2010 : le 4 s’affiche sous la colonne vandrdi au lieu de lundi).

  2. Samuel ROZE dit :

    Bonjour,

    Afin de corriger cette erreur, voici un nouveau fichier CSS calendrier.css à télécharger qui prend place de l’ancien:
    http://projects.d-sites.com/calendrier/style/calendrier.css

    Note: Les archives vont être mises à jour sous peu.

    Merci de votre intérêt pour ce calendrier.
    Samuel.

  3. magieweb dit :

    bonjour,

    le calendrier est sympa mais j’ai des erreurs du type:
    Notice: Undefined offset: 1244764800 in C:\wamp\www\modules\calendrier\librairies\CalendrierEvents.php on line 37

    Notice: Undefined offset: 1244160000 in C:\wamp\www\modules\calendrier\librairies\CalendrierEvents.php on line 37

    Notice: Undefined offset: 1247270400 in C:\wamp\www\modules\calendrier\librairies\CalendrierEvents.php on line 48

    Notice: Undefined offset: 1247356800 in C:\wamp\www\modules\calendrier\librairies\CalendrierEvents.php on line 48

  4. magieweb dit :

    j’ai oublié de dire…comment fait on pour résoudre ce probleme?

  5. magieweb dit :

    Voici la solution pour ceux qui ont le meme probleme que moi :

    dans le fichier CalendrierEvents.php, modifier la fonction get ($time) par celle là:
    public function get ($time) {
    if (isset($this->events[$time])) {
    $events = $this->events[$time];
    if (count($events) > 0) {
    return $events;
    }
    else {
    return array();
    }
    }
    }

    Normalement plus aucun probleme!

    Petite info en plus, pensez a activer la fonction url_rewrite de apache ;-)
    Tres bon calendrier, vraiment du bon boulot!

Laisser un commentaire