Calendrier php

Soyez le premier à donner votre avis sur cette source.

Vue 78 974 fois - Téléchargée 7 714 fois

Description

une fonction qui affiche un calendrier sous la forme d'un tableau avec les liens parametres

version 1.4.3 mise a jour le 01-02-2006

nouvelle presentation et demo interactive du script sur : http://hrz.free.fr/calendrier/

telechargement direct possible sur le meme site

utilisation de la fonction:
- usage : @AfficheCalendrier ([$Aff[,$NoMois[,$Annee[,$evenement,$Page[,$CompAff ]]]]])
fournir obligatoirement les elements precedends , pas de $NoMois sans $Aff ect.. ect..
l'affichage du nom du mois est definit comme un lien interne de la page
- les variables d'appel :
$Aff valeur 0 :commence l'affichage par Dimanche default 1
$NoMois : le N° du mois à afficher default le mois actuel
$Annee : l'annee du mois a afficher default l'annee actuel
$evenement : un tableau de donnees pour les liens
$Pages : l'adresse de la page a appeller default la page actuel
$CompAff : si valeur >0 ,le tableau est complete
les liens sont retournes sous la forme :
<A HREF="adresse?NoJour=JJ&Mois=MM&Annee=AAAA">

Source / Exemple :


<?
/*
auteur hrz@free.fr
version 1.4.4  mise a jour   29-05-2006

utilisation de la fonction:
   - usage : @AfficheCalendrier ([$Aff[,$NoMois[,$Annee[,$evenement,$Page[,$CompAff ]]]]])
     fournir obligatoirement les elements precedends , pas de $NoMois sans $Aff  ect.. ect..
     l'affichage du nom du mois est definit comme un lien interne de la page
   - les variables d'appel :
     $Aff valeur 0 :commence l'affichage par Dimanche   default 1
     $NoMois       : le N° du mois à afficher              default le mois actuel
     $Annee         : l'annee du mois a afficher            default l'annee actuel
     $evenement : un tableau de donnees pour les liens
     $Pages         : l'adresse de la page a appeller       default la page actuel
     $CompAff      : si valeur >0 ,le tableau est complete
        les liens sont retournes sous la forme :
           <A HREF="adresse?NoJour=JJ&Mois=MM&Annee=AAAA">

  • /
// fonction principale function AfficheCalendrier ($Aff=1,$Mois="",$Annee=0,$evenement="",$Page="",$Aff1=0) { // definitions complementaires $NomDuMois=array("erreur","Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Decembre"); $Week=array( array("d","l","m","M","j","v","s"), // debut d'affichage =dimanche array("l","m","M","j","v","s","d") // debut d'affichage =lundi ); // controle pour les valeurs par default if ($Aff != "0") { $Aff =1; } // toute autre valeurs que 0 retourne 1 if ( $Mois >0 or $Mois >13 ) {}else{$Mois=date("n" );}// mois courrant par default if ( $Annee == 0 ){$Annee=date("Y");} // annee courrante par default if (!isset($Page)) {$Page=$_SERVER['PHP_SELF'];} // script d'appel par default // ajustement des variables du script $NoJour = -date("w",mktime(0,0,0,$Mois,1,$Annee)); // determine le decalage du 1er dans la semaine if ($Aff == 0 ) {$NoJour +=1;}else{$NoJour +=2 ; } // pour l'ajuster suivant l'affichage if ($NoJour >1 && $Aff ==1) { $NoJour -=7;} // on s'assure du debut de l'affichage a la 1ere ligne du tableau $JourMax =date("t",mktime(0,0,0,$Mois,1,$Annee)); // nombre de jours dans le mois $Liens = 0; // compteur du tableau des liens $cejour = date("j n Y"); // la date actuelle if (!is_array($evenement)) { // fonctionnement erratique si ce n'est pas un tableau $evenement= (array) $evenement ; } @sort($evenement,SORT_NUMERIC ); // le tableau est classe dans l'ordre numeric $evenement=@array_unique($evenement) ; // eliminee les doublons $evenement= @array_slice($evenement,0); // suprimer les vides // affichage du debut de calendrier print " <A class=\"MoisAnnee\"NAME=\"$NomDuMois[$Mois]_$Annee\">&nbsp;$NomDuMois[$Mois] $Annee&nbsp;</A> <TABLE class=\"Mois\"> <TR class=\"S\">\n"; for ( $w=0;$w<7;$w++){ print " <TD class=\"e".$w."\">".strtoupper($Week[$Aff][$w])."</TD> \n"; } print " </TR>\n"; // creation du calendrier for ($semaine=1;$semaine <=6;$semaine++) { // 6 semaines par mois print " <TR class=\"S$semaine\">\n"; for ($journee=1;$journee <=7;$journee++) { // 7 jours par semaine if ("$NoJour $Mois $Annee"==$cejour) { // est ce le jour actuel ? print " <TD class=\"J\">"; // oui on utilise la surbrillance }else{ print " <TD class=\"J".date("w",mktime(0,0,0,$Mois,$NoJour,$Annee))."\">"; } if ($NoJour >0 && $NoJour <= $JourMax ){ // si le jour est valide a afficher if (isset($evenement[$Liens]) && $NoJour >0 && $NoJour == $evenement[$Liens]){ // si evenement $elements=explode(",",$evenement[$Liens]); // separe les infos if ($elements[1]=="") { // si url vide $elements[1]= $Page; // url par default } $pos = strpos($elements[1],"?"); // verifier si l'url contiend des parametres if ($pos === false) { $elements[1].="?"; // si non on ajoute le ? }else{ $elements[1].="&"; // si oui on complete par & } // le lien est pret pour l'affichage print "<A HREF=\"$elements[1]NoJour=$NoJour&amp;Mois=$Mois&amp;Annee=$Annee \"title=\"$elements[2]\">$elements[0]</A>"; $Liens++; // incrementer le tableau des liens }else{ // sinon juste la date print "$NoJour"; } }else{ if ($Aff1>0) { // si remplir la table print "<EM class=\"JComp\"\">"; // afficher une date complementaire au mois en cour print date("j",mktime(0,0,0,$Mois,$NoJour,$Annee)); // afficher les joursdu mois prec / suivant print "</EM>"; }else{ print"&nbsp;"; // afficher un espace si jour non valide } } $NoJour ++; // incremente le jour print "</TD>\n"; // on passe au jour suivant } if ($NoJour > $JourMax){ $semaine ++; } // on echappe la derniere ligne si vide print " </TR>\n"; // semaine suivante } print "</TABLE>\n"; // le mois est affiche } /****************************************************************/ ?>

Conclusion :


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//FR">
<html>
<head>
<meta name="generator" content="HTML Tidy for Windows (vers 1st September 2004), see www.w3.org">
<meta http-equiv="content-language" content="fr">
<title>utilisation de la fonction AfficheCalendrier</title>
<meta name="keywords" content="script fonction php affichage calendrier agenda">
<meta name="author" content="hrz">
<meta http-equiv="Reply-to" content="hrz@free.fr">
<link rel="stylesheet" href="base.css" type="text/css">
<link rel="stylesheet" href="AfficheCalendrier.css" type="text/css">
</head>
<body >
<div align="center"><p >Utilisez cette fonction php pour creer votre calendrier<br />
y definir des liens pour en faire un agenda ou autre<br />
la fonction les retournera sous la forme suivante:<br />
<font color="#FF0000"><A HREF="adresse?NoJour=JJ&Mois=MM&Annee=AAAA"><br /></font>
et utilisez sa feuille de style pour en modifier l'affichage </p>
</div>
<p>Un exemple d'utilisation de la fonction AfficheCalendrier v1.3 du 1 janvier 2005<br />
suivre un liens pour les infos de Debug <br />

<p><A href="archives/AfficheCalendrier-1.3.zip" title="essaie">Telecharger le zip </A> de la derniere version</p>
<p>Retrouvez <A href="archives/" title="essaie">les archives de la fonction</a></p>

</p>
<?php
include 'AfficheCalendrier.php'; // instalation de la fonction

// exemple 1: affichage de l'annee avec liens
// cet exemple affichera l'annee en 4 trimestres avec des liens different pour chaques mois
$Annee=date("Y"); // definis l'annee en cour
$Page = 'UtiliserCalendrier.php'; // a redefinir suivant vos script
$evenement = array ( // le tableau des liens tries dans l'ordre des dates
1 => array(
0=>"1,1erJanvier.html,bonne annee", // date, page, infos
1=>"2,".$_SERVER['PHP_SELF'].",", // date, page
"3,,suivre le lien", // date, page default, halt
5,7,10, // date seules
"15,test.php,juste pour voir",
20,25,30
),
2 => array(1,2,3,27),
3 => array(5),
4 => array(8,12,15,16),
5 => array(5,7,9,13,16,18,22),
6 => array(2,5,9,12,25),
7 => array(8,12),
8 => array(15,21,25,29),
9 => array(1,5,9),
10 => array(6,10),
11 => array(25),
12 => array(13,15,19)

);print "<table width=\"100%\" border=0 >\n";
for ($trimestre=0;$trimestre<=3;$trimestre++){
print "<tr>\n";
for ($Mois=1;$Mois<=3;$Mois++){
$MoisEncour= $Mois+($trimestre*3);
print"<td align=\"center\">\n";
// appel de la fonction avec tous les parametres
@AfficheCalendrier(0,$MoisEncour,$Annee,$evenement[$MoisEncour],$Page);
// @AfficheCalendrier(0,

}
print "</tr>\n";
}
print "</table>\n";

/*
// exemple 2: appel minimum de la fonction , elle affichera le mois en cour sans liens
@AfficheCalendrier() // c'est tout !
  • /

?>

</body>
</html>

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
3
Date d'inscription
vendredi 10 février 2006
Statut
Membre
Dernière intervention
3 mai 2006

Effectivement c'est ok pour nous également, merci beaucoup.
Messages postés
43
Date d'inscription
samedi 12 juillet 2003
Statut
Membre
Dernière intervention
4 avril 2010

bonsoir et merci de signaler ce bug (car c'en est un )
la ligne 44 de la fonction :
@sort($evenement);
effectue un trie alphanumerique du tableau et la le 2 se retrouve appres le 15
dans le cas du mois de mai
la ligne corrigee devrait etre :
@sort($evenement,SORT_NUMERIC ); // pour garder l'ordre des chiffres

je vient de faire le test en local et cela semble ok
Messages postés
3
Date d'inscription
vendredi 10 février 2006
Statut
Membre
Dernière intervention
3 mai 2006

Salut j'ai un petit probléme tout les lien ne s'affiche pas pourais ton m'aidé svp voici le code merci d'avance

Sujet : Re : Aide

Message :
Merci mille fois, voici le script :

<?php/* Date de création: 04/04/2006 */?>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Calendrier du mois en cour , affichage simple </title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="HAPedit 3.1">
<link rel="StyleSheet" href="ete.css" type="text/css">
</head>



<?php
/* pour limiter les donnes transmises, seul une valeur timestamp est utilisee */
if (!isset ($ref)) { $ref=time(); } // pour 1er affichage
if (isset($_GET["ref"])) { $ref=$_GET["ref"]; } // pour les suivants
$Mois=date("n",$ref); // important n => Mois sans les zéros initiaux
$Annee=date("Y",$ref); // Y pour l'annee en format long
// le calcul est reference sur un jour du mois(le 1er ici) si absent, erreurs possible
$prec= mktime (0,0,0,$Mois-1,1,$Annee); // calcul le mois precedent
$suivant= mktime (0,0,0,$Mois+1,1,$Annee); // calcul le mois suivant
$url= $_SERVER['PHP_SELF']; // faut bien faire tourner le compteur

$evenement = array ( // le tableau des liens tries dans l'ordre des dates
1 => array(
0=>"1,../evenement/janvier/1/1janvier.php,BONNE ANNEE", // date, page, infos
1=>"2,../evenement/janvier/2/2janvier.php,BONNE ANNEE",
2=>"3,../evenement/janvier/3/3janvier.php,BONNE ANNEE",
3=>"4,../evenement/janvier/4/4janvier.php,BONNE ANNEE", // date, page
4=>"5,../evenement/janvier/5/5janvier.php,BONNE ANNEE", // date, page default, halt
5=>"6,../evenement/janvier/6/6janvier.php,BONNE ANNEE",
6=>"7,../evenement/janvier/7/7janvier.php,BONNE ANNEE",
7=>"8,../evenement/janvier/8/8janvier.php,BONNE ANNEE",
8=>"9,../evenement/janvier/9/9janvier.php,BONNE ANNEE",
9=>"10,../evenement/janvier/10/10janvier.php,BONNE ANNEE",
10=>"11,../evenement/janvier/11/11janvier.php,BONNE ANNEE",
11=>"12,../evenement/janvier/12/12janvier.php,BONNE ANNEE",
12=>"13,../evenement/janvier/13/13janvier.php,BONNE ANNEE",
13=>"14,../evenement/janvier/14/14janvier.php,BONNE ANNEE",
14=>"15,../evenement/janvier/15/15janvier.php,BONNE ANNEE",
15=>"16,../evenement/janvier/16/16janvier.php,BONNE ANNEE",
16=>"17,../evenement/janvier/17/17janvier.php,BONNE ANNEE",
17=>"18,../evenement/janvier/18/18janvier.php,BONNE ANNEE",
18=>"19,../evenement/janvier/19/19janvier.php,BONNE ANNEE",
19=>"20,../evenement/janvier/20/20janvier.php,BONNE ANNEE",
20=>"21,../evenement/janvier/21/21janvier.php,BONNE ANNEE",
21=>"22,../evenement/janvier/22/22janvier.php,BONNE ANNEE",
22=>"23,../evenement/janvier/23/23janvier.php,BONNE ANNEE",
23=>"24,../evenement/janvier/24/25janvier.php,BONNE ANNEE",
24=>"25,../evenement/janvier/25/25janvier.php,BONNE ANNEE",
25=>"26,../evenement/janvier/26/26janvier.php,BONNE ANNEE",
26=>"27,../evenement/janvier/27/27janvier.php,BONNE ANNEE",
27=>"28,../evenement/janvier/28/28janvier.php,BONNE ANNEE",
28=>"29,../evenement/janvier/29/29janvier.php,BONNE ANNEE",
29=>"30,../evenement/janvier/30/30janvier.php,BONNE ANNEE",
30=>"31,../evenement/janvier/31/31janvier.php,BONNE ANNEE"),

2 => array(
0=>"1,../evenement/fevrier/1/1fevrier.php,Les événements de ce jour",
1=>"2,../evenement/fevrier/2/2fevrier.php,Les événements de ce jour",
3=>"14,../evenement/evrier/14/14fevrier.php,Bonne saint Valentin",
4=>"18,../evenement/fevrier/18/18fevrier.php,Joyeux nouvel an Chinois"),
3 => array(),
4 => array(),
5 => array(
0=>"1,../evenement/mai/1/1mai.php,Les événements de ce jour",
1=>"2,../evenement/mai/2/2mai.php,Les événements de ce jour",
2=>"3,../evenement/mai/3/3mai.php,Les événements de ce jour",
3=>"4,../evenement/mai/2/2mai.php,Les événements de ce jour",
4=>"5,../evenement/mai/2/2mai.php,Les événements de ce jour",
5=>"6,../evenement/mai/2/2mai.php,Les événements de ce jour",
6=>"7,../evenement/mai/2/2mai.php,Les événements de ce jour",
7=>"8,../evenement/mai/8/8mai.php,Les événements de ce jour",
8=>"12,../evenement/mai/12/12mai.php,Les événements de ce jour",
9=>"13,../evenement/mai/13/13mai.php,Les événements de ce jour",
10=>"14,../evenement/mai/14/14mai.php,Les événements de ce jour",
11=>"15,../evenement/mai/15/15mai.php,Les événements de ce jour"),
6 => array(),
7 => array(),
8 => array(),
9 => array(),
10 => array(0=>"28,../evenement/octobre/28/28octobre.php,Les événements de ce jour"),
11 => array(),
12 => array()
);
?>
<NOBR>
[<?php print $url. ">]

[<?php print $url;?> ]

[<?php print $url. ">]
</NOBR>


<?php
include ("AfficheCalendrier.php"); // charger la fonction
AfficheCalendrier(0,$Mois,$Annee,$evenement[$Mois],$_SERVER['PHP_SELF'],0); // affiche le calendrier
?>



</html>
Messages postés
43
Date d'inscription
samedi 12 juillet 2003
Statut
Membre
Dernière intervention
4 avril 2010

bonjour a tous .
si quelqu'un se proposait de traduire le fichier doc,
cela serait tres utiles a tous ; le script est populaire meme a l'etranger.
merci d'avance
Messages postés
43
Date d'inscription
samedi 12 juillet 2003
Statut
Membre
Dernière intervention
4 avril 2010

je te propose de prendre contact par la :
http://hrz.free.fr/forum/index.php
Afficher les 32 commentaires

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.