Petit nouveau ! |
1 Messages
20 mars 2005, 15:15
Salut!
Merci de ce code, il correspond exactement qu besoin que j'avais pour envoyer certains parametres de tri dans une requete sans installer une usine a gaz...
j'ai ajouté un ptit truc sympa qui permet de recuperer les variables annee mois et jour ( c'est pas 100% compatible ISO, mais ca suffit pour ce que je veux faire ;-) ):
[php]
<?php
$m_loc = array(
1=>'Janvier',
2=>'Février',
3=>'Mars',
4=>'Avril',
5=>'Mai',
6=>'Juin',
7=>'Juillet',
8=>'Août',
9=>'Septembre',
10=>'Octobre',
11=>'Novembre',
12=>'Décembre'
);
// numéro du mois
$m = isset($_GET['m']) ? $_GET['m'] : date('m');
// exclure les valeurs en dehors de [ 1 , 12 ]
$m %= 12;
if ($m == 0) $m = 12;
// numéro de l'année
$a = (int) ( isset($_GET['a']) ? $_GET['a'] : date('Y') );
// exclure les années < 1970
if ($a<1970) $a=1970;
// timestamp du 1er du mois à minuit une
$t = mktime(0, 0, 1, $m, 1, $a);
// nombre de jours dans ce mois
$nj = date('t', $t);
// n° du premier jour du mois: on décale le résultat anglais (premier=0=dimanche) pour obtenir premier=1=lundi
$j = date('w', $t);
if ($j==0) $j = 7; // dimanche=7
else $j = $j; // lundi=1 ... samedi=6
// nombre d'espaces à laisser vides avant le premier jour du mois = numéro du jour - 1
$sb = $j - 1;
// nombre de lignes au total dans la table
// sachant qu'il faut placer AU MOINS $nj+$sb cases, et qu'on a 7 colonnes
$nl = ceil(($nj+$sb)/7);
// pré-remplissage de la table avec des cases vides (0) partout
$tb = array_fill(0, $nl, array_fill(1,7,0));
// remplissage avec les n° de jours, en sautant les $sb premières cases
for ($i=1; $i<=$nj; $i++) {
$ligne = floor(($i+$sb-1)/7);
$colonne = ($i+$sb-1)%7 + 1;
$tb[$ligne][$colonne] = $i;
}
// mois précédent
$m_prec = $m==1 ? 12 : $m-1;
$a_prec = $m==1 ? $a-1 : $a;
// mois suivant
$m_suiv = $m==12 ? 1 : $m+1;
$a_suiv = $m==12 ? $a+1 : $a;
// jour en cours (pour surligner la case correspondante)
// -1 si mois != mois en cours ou année != année en cours
$jc = $a==date('Y') && $m==date('m') ? date('d') : -1;
?>
<table border="1">
<tr><th align="center" colspan="7">
<?php if ($m>1||$a>1970) { ?><a href="calendrier.php?a=<?=$a_prec?>&m=<?=$m_prec?>"><</a><?php } ?>
<?=$m_loc[$m]?> <?=$a?>
<a href="calendrier.php?a=<?=$a_suiv?>&m=<?=$m_suiv?>">></a>
</th></tr>
<tr>
<th>Lundi</th>
<th>Mardi</th>
<th>Mercredi</th>
<th>Jeudi</th>
<th>Vendredi</th>
<th>Samedi</th>
<th>Dimanche</th>
</tr>
<?php foreach ($tb as $l) { ?>
<tr>
<?php foreach ($l as $c) { ?>
<td <?php
/*
passage en GET de anne mois et jour pour les recuperer dans une page au choix
et ajout d'un test sur la valeur de $c pour eviter l'affichage de date zero clicables
*/
if ($c==$jc) { ?> style="background:#E0E0E0"<?php } ?>><? if ($c!=0){ echo "<a href=\"test.php?a=".$a."&m=".$m."&j=".$c."\">".$c."</a>"; } ?></td>
<?php } ?>
</tr>
<?php } ?>
</table>
[/php]