Calendrier - floptwo--------------------
Url     : http://codes-sources.commentcamarche.net/source/38054-calendrier-floptwoAuteur  : floptwoDate    : 06/09/2013
Licence :
=========

Ce document intitul  Calendrier - floptwo  issu de CommentCaMarche
(codes-sources.commentcamarche.net) est mis  disposition sous les termes de
la licence Creative Commons. Vous pouvez copier, modifier des copies de cette
source, dans les conditions fixes par la licence, tant que cette note
apparat clairement.

Description :
=============

Calendrier - floptwo :
<br />Il s'agit d'un script qui r&eacute;alise un calend
rier&agrave; partir de la date du jour.
<br />Il est &eacute;quiper de deux bou
tons de navigation pour passer au mois suivant ou mois pr&eacute;cedent en tenan
t compte du changement d'ann&eacute;e.
<br />La date du jour et le mois en cour
s sont accentu&eacute;s.
<br />Il permet aussi d'accentuer une liste de dates c
ontenues dans un tableau.
<br />
<br />Script r&eacute;alis&eacute;par floptwo
 (floptwo@gmail.com)
<br /><a name='source-exemple'></a><h2> Source / Exemple :
 </h2>

<br /><pre class='code' data-mode='basic'>
&lt;?php 
/* * * * * * * *
 * * * * * * * * * * * * * * * * * * * 

<ul> <li> Calendrier - floptwo :
</l
i> <li>   Il s'agit d'un script qui ralise un calendrier
</li> <li>    partir
 de la date du jour.
</li> <li>   Il est quiper de deux boutons de navigation 
pour 
</li> <li>   passer au mois suivant ou mois prcedent en tenant
</li> <l
i>   compte du changement d'anne.
</li> <li>   La date du jour et le mois en c
ours sont accentus.
</li> <li>   Il permet aussi d'accentuer une liste de date
s
</li> <li>   contenues dans un tableau.</li></ul>
 *

<ul> <li>   Script r
alispar floptwo (floptwo@gmail.com)
</li> <li> * * * * * * * * * * * * * * * 
* * * * * * * * * * */</li></ul>

/* Je ne dcrirais pas la partie CSS car ce 
n'est pas

<ul> <li> fondamental pour le script.
</li> <li> Les deux variable
s suivante indiques la date 
</li> <li>  partir de laquelle nous ferons le cal
endrier.
</li> <li> 
</li> <li> Si les variables mois et annee ne sont pas pas
ses
</li> <li> par l'url on prend la date du jour (mois et anne)*/ </li></ul>

if (!isset($_GET['mois']) &amp;&amp; !isset($_GET['annee']))
{
	$calendrier_
date_mois = date('n');
	$calendrier_date_annee = date('Y');
}
else
{
	$cale
ndrier_date_mois = $_GET['mois'];
	$calendrier_date_annee = $_GET['annee'];
}



/* Ici on calcul le passage  l'anne prcdente. */
if ($calendrier_date_mo
is == '1')
{
	$calendrier_date_mois_precedent = '12';
	$calendrier_date_annee
_precedente = $calendrier_date_annee - 1;
}
else 
{
	$calendrier_date_mois_p
recedent = $calendrier_date_mois - 1;
	$calendrier_date_annee_precedente = $cal
endrier_date_annee;
}

/* Et ici on calcul le passage  l'anne suivante. */


if ($calendrier_date_mois == '12')
{
	$calendrier_date_mois_suivant  = '1';

	$calendrier_date_annee_suivante  = $calendrier_date_annee + 1;
}
else 
{
	$
calendrier_date_mois_suivant  = $calendrier_date_mois + 1;
	$calendrier_date_an
nee_suivante = $calendrier_date_annee;
}

/* Ici on declare la date du jour.



<ul> <li> Elle permettera de mettre la date en valeur du jour. 
</li> <li> O
n l'crit jour_mois_annee pour ne la confondre avec aucune 
</li> <li> autre da
te*/</li></ul>
$calendrier_dateDuJour = date('j_n_Y'); 

/* Ici on dclare un
 tableau avec toutes les dates

<ul> <li> importantes et que l'on souhaite acc
entuer.
</li> <li> Elles scrivent jours_mois_annee. */</li></ul>
$calendrier
_dates_importantes = array(	'1_6_2006', 
										'5_6_2006', 
								      
 '15_8_2006',
									   '14_7_2006',
									   '20_7_2006',
									    
'1_1_2007');

/* le mktime retourne les info d'une date donne */
$calendrier
_mktime = mktime(0, 0, 0, $calendrier_date_mois, 1, $calendrier_date_annee);


/* $calendrier_date_mois_1erjour :  

<ul> <li> 1er jour du moi, c'est  dire 
s'il s'agit d'un
</li> <li> lundi ou d'un mardi... 
</li> <li> Quand date reto
urne 0 c'est lundi, 1 c'est mardi...
</li> <li> jusqu'a 6 pour dimanche*/</li><
/ul>
$calendrier_date_mois_1erjour = date('w', $calendrier_mktime);

/* $cale
ndrier_date_mois_nombrejour :

<ul> <li> nombre de jours dans le mois. */</li>
</ul>
$calendrier_date_mois_nombrejour = date('t', $calendrier_mktime);

/* $
calendrier_mois :

<ul> <li> Tableau me permettant d'attribuer un nom en fran
ais 
</li> <li>  chaque mois.
</li> <li> Il n'est pas ncessaire si les mois 
doivent tre en englais.
</li> <li> Il suffit de date('F', $calendrier_mktime);
 */</li></ul>
$calendrier_mois = array( '1' =&gt; 'Janvier',   '2' =&gt; 'Fvri
er',   '3' =&gt; 'Mars', 
						  '4' =&gt; 'Avril',     '5' =&gt; 'Mai',      
 '6' =&gt; 'Juin',
						  '7' =&gt; 'Juillet',   '8' =&gt; 'Aot',      '9' =&
gt; 'Septembre', 
					     '10' =&gt; 'Octobre',  '11' =&gt; 'Novembre', '12' 
=&gt; 'Dcembre');
?&gt;
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 
Transitional//EN&quot;&gt;
&lt;html&gt;
&lt;head&gt;
&lt;STYLE type=&quot;tex
t/css&quot;&gt;	
	@IMPORT URL(css.css);	
&lt;/STYLE&gt;

&lt;title&gt;Calend
rier - floptwo&lt;/title&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; conte
nt=&quot;text/html; charset=iso-8859-1&quot;&gt;
&lt;/head&gt;

&lt;body&gt;


&lt;?php 
/* On commence le tableau HTML.

<ul> <li> Dans la premiere ligne 
on affiche le nom du
</li> <li> mois et l'anne. </li></ul>
 *

<ul> <li> Si
 le mois affich est le mois en cours on
</li> <li> utilisera le style : calend
rier_mois_encours 
</li> <li> (voir CSS), sinon on utilise le style normal : 

</li> <li> calendrier_mois. */</li></ul>
if ($calendrier_date_mois.'_'.$calendr
ier_date_annee == date('n_Y'))
{
	$class_mois = 'calendrier_mois_encours';
}


else
{
	$class_mois = 'calendrier_mois';
}
?&gt;
&lt;table width=&quot;200
&quot; border=&quot;0&quot; align=&quot;center&quot; cellpadding=&quot;1&quot; c
ellspacing=&quot;1&quot;&gt;
  &lt;tr align=&quot;center&quot; valign=&quot;mid
dle&quot;&gt;
    &lt;td&gt;&lt;?php echo '&lt;a href=&quot;?mois=' , $calendri
er_date_mois_precedent , '&amp;annee=' , $calendrier_date_annee_precedente , '&q
uot; class=&quot;calendrier_mois&quot;&gt;&lt;&lt;/a&gt;'?&gt;&lt;/td&gt;
    &
lt;td colspan=&quot;5&quot; class=&quot;&lt;?php echo $class_mois ?&gt;&quot;&gt
;&lt;?php echo $calendrier_mois[$calendrier_date_mois],' ',$calendrier_date_anne
e ?&gt;&lt;/td&gt;
    &lt;td&gt;&lt;?php echo '&lt;a href=&quot;?mois=' , $cal
endrier_date_mois_suivant , '&amp;annee=' , $calendrier_date_annee_suivante , '&
quot; class=&quot;calendrier_mois&quot;&gt;&gt;&lt;/a&gt;'?&gt;&lt;/td&gt;
  &l
t;/tr&gt;
  &lt;tr&gt; 
    &lt;td class=&quot;calendrier_nom_des_jours&quot;&
gt;Lun&lt;/td&gt;
    &lt;td class=&quot;calendrier_nom_des_jours&quot;&gt;Mar&
lt;/td&gt;
    &lt;td class=&quot;calendrier_nom_des_jours&quot;&gt;Mer&lt;/td&
gt;
    &lt;td class=&quot;calendrier_nom_des_jours&quot;&gt;Jeu&lt;/td&gt;
  
  &lt;td class=&quot;calendrier_nom_des_jours&quot;&gt;Ven&lt;/td&gt;
    &lt;t
d class=&quot;calendrier_nom_des_jours&quot;&gt;Sam&lt;/td&gt;
    &lt;td class
=&quot;calendrier_nom_des_jours&quot;&gt;Dim&lt;/td&gt;
  &lt;/tr&gt;
  &lt;?p
hp
/* On dclare  zro un compteur de jours. 

<ul> <li> Il compte les jours
 et donc permet d'afficher
</li> <li> le numro du jour et permetra de controle
r le
</li> <li> nombre de jours  afficher (voir la suite). */</li></ul>
$cale
ndrier_compteur_jours = 0;

/* Une boucle While (tant que) :

<ul> <li> Tant
 que le compteur de jours n'a pas atteint
</li> <li> le nombre de jour total du
 mois on fait tout
</li> <li> ce qu'il y a a faire... */</li></ul>
while ($cal
endrier_compteur_jours &lt;= $calendrier_date_mois_nombrejour)
{
 ?&gt;
  &lt
;tr&gt; 
    &lt;?php 
		/* Une boucle For:

<ul>		 <li> On incrmente $i ju
squ'a ce qu'il soit gal a 6
</li>		 <li> De 0  6 il y a 7 chiffres, cette bou
cle correspond
</li>		 <li>  l'affichage en ligne des 7 jours de la semaine. *
/</li></ul>
 		for ($i = 0 ; $i &lt;= 6 ; $i++)
 		{
		 	/* Si $i est gale a
u jour de la semaine de la date

<ul>			 <li> selectionne on incrmente le co
mpteur de jour.
</li>			 <li> Cette condition permet de commencer  incrmenter
 
</li>			 <li> le compteur de jour que lorsque le 1er jour de moi
</li>			 <l
i> correspond a jour de la semaine de la colonne
</li>			 <li> Si date retourne
 1 le premier jour du mois est un 
</li>			 <li> mardi on va donc commencer a c
ompter a partir de 
</li>			 <li> la 2nde case de la ligne. */</li></ul>
			if
 ($i == date('w', mktime(0,0,0, $calendrier_date_mois, $calendrier_compteur_jour
s, $calendrier_date_annee)))
			{
				$calendrier_compteur_jours++;		
			}
	
			
			/* Si le jour auquel le compteur de jour est correspond

<ul>			 <li> 
 un jour dans le tableau de dates importantes 
</li>			 <li> on dfini le styl
e  afficher pour que la case de la
</li>			 <li> date soit differente (voir CS
S).
</li>			 <li> Sinon c'est le style normal qui s'affiche. */</li></ul>
			i
f ($calendrier_compteur_jours.'_'.$calendrier_date_mois.'_'.$calendrier_date_ann
ee == $calendrier_dateDuJour) 
			{
				$class_jour  = 'calendrier_dateDuJour'
;
			} 
			else 
			{	
				if (in_array($calendrier_compteur_jours.'_'.$cale
ndrier_date_mois.'_'.$calendrier_date_annee, $calendrier_dates_importantes))
		
		{	
					$class_jour = 'calendrier_date_importante';
				}
				else
				{	


					$class_jour = 'calendrier_date';
				}
			}
?&gt;
    &lt;td class=&qu
ot;&lt;?php echo $class_jour ?&gt;&quot;&gt; 
      &lt;?php 
			/* Si le jour
 auquel le compteur de jour est

<ul>			 <li> n'est pas gal 0 (0 s'affiche ta
nt le compteur
</li>			 <li> de jours n'a pas commencer a etre incrment) et

</li>			 <li> que le compteur de jour est plus petit ou gal au
</li>			 <li> n
ombre de jour on affiche le jour (son numro). */</li></ul>
			if ($calendrier_
compteur_jours != 0 &amp;&amp; $calendrier_compteur_jours &lt;= $calendrier_date
_mois_nombrejour)
			{
				echo $calendrier_compteur_jours;
			}
			else 
	
		{
				echo '&amp;nbsp;';
			}
			?&gt;
    &lt;/td&gt;
    &lt;?php 		
 
		}
?&gt;
  &lt;/tr&gt;
  &lt;?php 
}
/* Apres quelques modifications vous 
pouvez

<ul> <li> accentuer les dimanches ou jour fris...
</li> <li> A vous
 de jouer !
</li> <li> * * * * * * * * * * * * * * * * * * * * * * * * * * 
</
li> <li> script ralis par floptwo (floptwo@gmail.com)
</li> <li> * * * * * * 
* * * * * * * * * * * * * * * * * * * */</li></ul>
?&gt;
&lt;/table&gt;
&lt;/
body&gt;
&lt;/html&gt;
</pre>
