8797 sujets

Développement web côté serveur, CMS

bonjour,
j'aimerai créer un calendrier comme sur www.babylon-design.com (à droite) mais le jour actuel serait en grisé par dessus (je ne savait pas comment dire autrement) et le mois et l'année seraient affichées grace a

<?php
$annee = date("Y");
$month = date("n");

if ($month == "1" )
{ $mois = "janvier"; }
elseif ($month == "2")
{ $mois= "février";}
/*ainsi de suite jusqu'a décembre*/

mais pour les jours je ne sait vraiment pas comment faire Smiley sweatdrop Smiley biggol
merci d'avance Smiley biggrin
Modifié par ttoine (01 Jul 2005 - 08:26)
Un petit coup de main déjà Smiley cligne
$months=array('Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre');
$mois=$months[date('n')-1];

Modifié par 84mickael (29 Jun 2005 - 15:29)
Et pour les jours :
$days=array('Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi');
$jour=$days[date('w')];
Petites explications :

Le premier indice d'un tableau PHP, c'est 0.

Pour les mois tu remplis un tableau de 12 cases correspondant aux 12 mois de l'année. Les indices de ces cases sont donc de 0 à 11. La fonction PHP date('n') te renvoie le numéro du mois de 1 à 12... d'où le "-1".

Pour les jours de la semaine, tu remplis le tableau avec les 7 jours soit des indices de 0 à 6. Ca tombe bien, date('w') te renvoie le numéro du jour de 0 à 6.

Compris ?
oui
en fait j'aimerai faire un calendrier comme ça :

: le jour actuel serait en gris (au lieu du orange)
comment le faire ?
merci upload/2373-imgcal.gif
Modifié par ttoine (30 Jun 2005 - 08:42)
ttoine a écrit :
oui
en fait j'aimerai faire un calendrier comme ça :

: le jour actuel serait en gris (au lieu du orange)
comment le faire ?
merciupload/2373-imgcal.gif


Sans vouloir te vexer, avant de faire le calendrier, je reverrais css Smiley smile
c bon pour le css mais ce n'est pas la couleur qui m'importe
c'est de savoir comment faire pour que le jour actuel soit grisé (ou n'importe quoi d'autre)
Administrateur
if($jour_courant==$jour_calendrier) {
  echo '<td class="jour_actif">'.$jour_calendrier.'</td>'
}


css :
td.jour_actif { background:#fc0; }
Administrateur
soyons plus complet...

PHP :

<?php

// A gérer soi-même :

if(!$_GET['y']) $year=time('Y'); else $year=$_GET['y'];     // Année
if(!$_GET['m']) $month=time('m'); else $month=$_GET['m'];   // Mois
if(!$_GET['d']) $day=time('d'); else else $day=$_GET['d'];  // Jour

// Précalculs :

$time=mktime(0,0,0,$month,1,$year);      // Timestamp du mois
$jours_mois=date('t',$time);             // Nombre de jours dans le mois
if($day>$jours_mois) $day=$jours_mois;   // Dernier jour du mois
$firstday=(date('w',$time)+6)%7;         // Premier jour de la semaine

// Liens mois et années

$previousmonthlink='?y='.($month<2?$year-1:$year).'&amp;m='.($month<2?12:$month-1).'&amp;d='.$day;
$nextmonthlink='?y='.($month>11?$year+1:$year).'&amp;m='.($month>11?1:$month+1).'&amp;d='.$day;
$previousyearlink='?y='.($year-1).'&amp;m='.$month.'&amp;d='.$day;
$nextyearlink='?y='.($year+1).'&amp;m='.$month.'&amp;d='.$day;

?>

<table class="cal" cellspacing="1">
<tr><th>L</th><th>M</th><th>M</th><th>J</th><th>V</th><th>S</th><th>D</th></tr>

<?

$tr=0;
echo '<tr>';
for($i=0;$i<$firstday;$i++) {
	echo '<td>&nbsp;</td>';
	$tr++;
}
for($i=1;$i<=$jours_mois;$i++) {
	if($day==$i) {
		echo '<td><a href="#" class="active">'.$i.'</a></td>';
	} else {
		echo '<td><a href="?y='.$year.'&amp;m='.$month.'&amp;d='.$i.'">'.$i.'</a></td>';
	}
	$tr++;
	if($tr%7==0) echo '</tr><tr>';
}
$i=$tr%7;
for($j=$i;$j<7;$j++) {
	echo '<td>&nbsp;</td>';
}
echo '</tr>';

?>

</table>

<p><a href="<? echo $previousyearlink; ?>">Année précédente</a> 
<a href="<? echo $previousmonthlink; ?>">Mois précédent</a> 
<? echo sprintf("%02d",$day).'/'.sprintf("%02d",$month).'/'.$year; ?> 
<a href="<? echo $nextmonthlink; ?>">Mois suivant</a> 
<a href="<? echo $nextyearlink; ?>">Année suivante</a></p>

?>


CSS :
/* Calendrier */

.cal {
	background:#DBDBCD;
}

.cal th {
	text-align:center;
	background:#80806b;
	color:#fff;
}

.cal td {
	background:#DBDBCD;
	text-align:center;
	padding:0;
}

.cal td a {
	display:block;
	background:#E5E5D8;
	text-decoration:none;
	font-size:10px;
}

.cal td a.active {
	background:#fff;
	font-weight:bold;
}

.cal td a:hover {
	text-decoration:none;
	background:#fff;
}


(désolé pour les variables en anglais c'est l'habitude...)
Modifié par dew (30 Jun 2005 - 17:28)
Administrateur
dew a écrit :
(désolé pour les variables en anglais c'est l'habitude...)

Genre...
Administrateur
genre c'est plus rapide à écrire et on n'a pas le sentiment d'être totalement skynculte en éliminant les accents.
Administrateur
ttoine a écrit :
merci dew c'est exactement ce que je voulais Smiley biggrin

Un petit résolu alors ? Smiley cligne