Bonjour,

Comment modifier mon code sur ce calendrier pour que les jours importants « d_important » soient également visibles comme le jour d'aujourd'hui « d_jour », quand ils tombent le même jour.

En ce moment, seul le jour d'aujourd'hui est visible (color:red;) quand ils tombent à la même date. Le jour important ne l'est pas (background-color:plum;)

Quand ils sont à des dates différentes tout va bien.

Avez-vous une idée de modification du code pour atteindre ce but.
<?php
		// Ecriture de la 1ere ligne
		echo '<tr>';
			// Ecriture de colones vides tant que le mois ne demarre pas
			for($i = 0 ; $i < $numero_jour1er ; $i++) {		echo '<td></td>';	}
			for($i = 1 ; $i <= 7 - $numero_jour1er; $i++) {	
				echo '
				<td class="';
					if(isset($coloreNum) && $coloreNum == $i) echo 'd_jour">';
					else if(in_array($i . "_" . $numero_mois . "_" . $annee, $d_important)) echo 'd_important">';
					else echo 'td">';
					echo $i.'
				</td>';	
			}
		echo '</tr>';
	
		$nbLignes = ceil((date('t', $timestamp) - ($i-1))/ 7); // Calcul du nombre de lignes  afficher en fonction de la 1re (surtout pour les mois a 31 jours)
		
		for($ligne = 0 ; $ligne < $nbLignes ; $ligne++) {
			echo '<tr>';
			for($colone = 0 ; $colone < 7 ; $colone++) {
				if($i <= date('t', $timestamp))	{
					echo '<td class="';
					if(isset($coloreNum) && $coloreNum == $i) echo 'd_jour">';
					else if(in_array($i . "_" . $numero_mois . "_" . $annee, $d_important)) echo 'd_important">';
					else echo 'td">';
					echo $i.'</td>';
				}
				else // On a fini d'ecrire le mois on termine le tableau par des cellules vides
				{
					echo '<td></td>';
				}
				$i = $i +1;
			}
			echo '</tr>';
		}
	?>

Merci d'avance, pierreandre (voir sur http://ppzx.net )
P.S. Détails du code du calendrier et celui du CSS : http://ppzx.net/calendrier.txt
Modifié par pierreandre (25 Feb 2009 - 01:59)
Salut,

plusieurs façons de faire ça. Par exemple :
if($i <= date('t', $timestamp))	{
	$class = 0;
	if(isset($coloreNum) && $coloreNum == $i) $class++;
	if(in_array($i . "_" . $numero_mois . "_" . $annee, $d_important)) $class = $class + 2;
	switch ($class) {
		case 0:
			echo '<td>';
			break;
		case 1:
			echo '<td class="d_jour">';
			break;
		case 2:
			echo '<td class="d_important">';
			break;
		case 3:
			echo '<td class="d_jour d_important">';
			break;
	}
	echo $i.'</td>';
}
Bonjour Heyoan,
Merci de t'être penché sur ce problème et me donner une réponse si vite.

Je crois bien avoir «loupé quelque chose» parce que rien n'a changé.
voici le code tel que je l'ai compris :
	<?php
		// Ecriture de la 1ere ligne
		echo '<tr>';
			// Ecriture de colones vides tant que le mois ne demarre pas
			for($i = 0 ; $i < $numero_jour1er ; $i++) {		echo '<td></td>';	}
			for($i = 1 ; $i <= 7 - $numero_jour1er; $i++) 
		if($i <= date('t', $timestamp))	{
$class = 0;
if(isset($coloreNum) && $coloreNum == $i) $class++;
if(in_array($i . "_" . $numero_mois . "_" . $annee, $d_important)) $class = $class + 2;
switch ($class) {
	case 0:
	echo '';
		break;
	case 1:
	echo '';
		break;
	case 2:
	echo '';
		break;
	case 3:
	echo '';
	break;
}
echo $i.'';
}
	
$nbLignes = ceil((date('t', $timestamp) - ($i-1))/ 7); // Calcul du nombre de lignes  afficher en fonction de la 1re (surtout pour les mois a 31 jours)
		
		for($ligne = 0 ; $ligne < $nbLignes ; $ligne++) {
			echo '<tr>';
			for($colone = 0 ; $colone < 7 ; $colone++) {
				if($i <= date('t', $timestamp))	{
	$class = 0;
	if(isset($coloreNum) && $coloreNum == $i) $class++;
	if(in_array($i . "_" . $numero_mois . "_" . $annee, $d_important)) $class = $class + 2;
		switch ($class) {
	case 0:
	echo '';
		break;
	case 1:
	echo '';
		break;
	case 2:
	echo '';
		break;
	case 3:
	echo '';
		break;
}
	echo $i.'';
}
				else // On a fini d'ecrire le mois on termine le tableau par des cellules vides
				{
					echo '<td></td>';
				}
				$i = $i +1;
			}
			echo '</tr>';
		}
	?>
Amitiés, pierreandre
En partant de ton .txt j'ai fait :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Test</title>
<style type="text/css" media="screen">
caption /* Titre du tableau */
{
background-color:#E5D5A5;
margin: auto; /* Centre le titre du tableau, &ccedil;a rend mieux */
font: normal .9em "Trebuchet MS", Arial, Helvetica, Sans-serif;
color: black; /* Couleur du texte */
margin-bottom: 10px; /* Marge avec le tableau */
}

table /* Le tableau en lui-m&ecirc;me */
{
background-color:#BDB38E;
border:1px solid #BDB38E;
font: .9em "Trebuchet MS", Arial, Helvetica, Sans-serif;
text-align: center; /* Tous les num&eacute;ros des cellules seront centr&eacute;s*/
border-collapse: collapse; /* separate Rend les cellules ind&eacute;pendantes les unes des autres */
empty-cells: show; /* r&eacute;v&egrave;le les cellules vide */
}

th /* Les cellules d'en-t&ecirc;te */
{
font:bold .9em "Trebuchet MS", Arial, Helvetica, Sans-serif;
background-color:#ffffff;
color:black;
width:20px; 
height:17px;
}

td /* Les cellules normales */
{
font:normal .9em "Trebuchet MS", Arial, Helvetica, Sans-serif;
background-color:#ffffff;
color:black;
width:23px; 
height:17px;
}

.d_jour {
    /* La cellule du jour actuel dans le calendrier */
font: bold .9em "Trebuchet MS", Arial, Helvetica, Sans-serif; color:red;
}

.d_important 
{/* Jour important */
background-color:plum;
}
</style>
</head>
<body>
<?php 
$tsQuebec = time() - (6*60*60); // = 6 heures = 6 x 60 x 60 secondes
// Enregistrons les informations de date dans des variables

// Si on ne recupere rien dans l'url, on prends la date du jour
if(!isset($_GET['m']) && !isset($_GET['y']))	$timestamp = mktime(0, 0, 0, date('m'), 1, date('Y'));
// Sinon on recupere la date donnee
else $timestamp = mktime(0, 0, 0, $_GET['m'], 1, $_GET['y']);

// === Si le mois correspond au mois actuel et l'annee aussi, on retient le jour actuel pour le griser plus tard (sinon le jour actuel ne se situe pas dans le mois)
if(date('m', $timestamp) == date('m',$tsQuebec) && date('Y', $timestamp) == date('Y',$tsQuebec)) $coloreNum = date('d',$tsQuebec);

$m = array("Janvier", "F&eacute;vrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Ao&ucirc;t", "Septembre", "Octobre", "Novembre", "D&eacute;cembre");
$j = array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
$d_important = array( '13_2_2010', '14_2_2010', '20_2_2009', '24_2_2009', '1_3_2009', '15_3_2009', '26_3_2009', '30_3_2009', '8_4_2009', '4_5_2009', '4_5_2009', '13_5_2009', '7_6_2009', '26_6_2009', '14_9_2009', '30_9_2009', '9_10_2009', '10_10_2009', '12_10_2009', '28_12_2009');	

$numero_mois = date('m', $timestamp);

if($numero_mois < 10) { $numero_mois = substr($numero_mois, -1);}

$annee = date('Y', $timestamp);

if($numero_mois == 12) {
	$annee_avant = $annee;
	$annee_apres = $annee + 1;
	$mois_avant = $numero_mois - 1;
	$mois_apres = 01;
}
elseif($numero_mois == 01) {
	$annee_avant = $annee - 1;
	$annee_apres = $annee;
	$mois_avant = 12;
	$mois_apres = $numero_mois + 1;
}
else {
	$annee_avant = $annee;
	$annee_apres = $annee;
	$mois_avant = $numero_mois - 1;
	$mois_apres = $numero_mois + 1;
}

// 0 => Dimanche, 1 => Lundi, 2 = > Mardi...
// $numero_jour1er = date('w',$tsQuebec, $timestamp);
$numero_jour1er = date('w', $timestamp);

// Changement du numero du jour car l'array commence a l'indice 0
if ($numero_jour1er == 0) $numero_jour1er = 6; // Si c'est Dimanche, on le place en 6eme position (apres samedi)
else $numero_jour1er--; // Sinon on mets lundi a 0, Mardi a 1, Mercredi a 2...
?>
<table>
	<caption><?php echo '<a href="?m='.$mois_avant.'&amp;y='.$annee_avant.'">&lt;&lt;</a>  '.$m[$numero_mois-1].' '.$annee.'  <a href="?m='.$mois_apres.'&amp;y='.$annee_apres.'">&gt;&gt;</a>'; ?></caption>
	<tbody>
	<tr>
		<th>Lu</th><th>Ma</th><th>Me</th><th>Je</th><th>Ve</th><th>Sa</th><th>Di</th>
	</tr>

<?php
	// Ecriture de la 1ere ligne
	echo '<tr>';
		// Ecriture de colones vides tant que le mois ne demarre pas
		for($i = 0 ; $i < $numero_jour1er ; $i++) {		echo '<td></td>';	}
		for($i = 1 ; $i <= 7 - $numero_jour1er; $i++) {	
			$class = 0;
			if(isset($coloreNum) && $coloreNum == $i) $class++;
			if(in_array($i . "_" . $numero_mois . "_" . $annee, $d_important)) $class = $class + 2;
			switch ($class) {
				case 0:
					echo '<td>';
					break;
				case 1:
					echo '<td class="d_jour">';
					break;
				case 2:
					echo '<td class="d_important">';
					break;
				case 3:
					echo '<td class="d_jour d_important">';
					break;
			}
			echo $i.'</td>';
		}
	echo '</tr>';

	$nbLignes = ceil((date('t', $timestamp) - ($i-1))/ 7); // Calcul du nombre de lignes � afficher en fonction de la 1�re (surtout pour les mois a 31 jours)
	
	for($ligne = 0 ; $ligne < $nbLignes ; $ligne++) {
		echo '<tr>';
		for($colone = 0 ; $colone < 7 ; $colone++) {
			if($i <= date('t', $timestamp))	{
				$class = 0;
				if(isset($coloreNum) && $coloreNum == $i) $class++;
				if(in_array($i . "_" . $numero_mois . "_" . $annee, $d_important)) $class = $class + 2;
				switch ($class) {
					case 0:
						echo '<td>';
						break;
					case 1:
						echo '<td class="d_jour">';
						break;
					case 2:
						echo '<td class="d_important">';
						break;
					case 3:
						echo '<td class="d_jour d_important">';
						break;
				}
				echo $i.'</td>';
			}
			else // On a fini d'ecrire le mois on termine le tableau par des cellules vides
			{
				echo '<td></td>';
			}
			$i = $i +1;
		}
		echo '</tr>';
	}
?>
</tbody>
</table>
</body>
</html>

Modifié par Heyoan (24 Feb 2009 - 20:43)
Bonjour Heyoan,

Vraiment, je te trouve excellent(e).
Ton aide m'a apporté une solution sur un plateau. Cela faisait des semaines que je m'escrimais sans y arriver.

Si tu veux regarder ton succès : http://ppzx.net/calendrier_alsa.php5

Encore merci. Je te prie d'excuser mon retard à répondre, nous avons eu à fêterl'anniversaire du mari, de la fille de ma femme (ah ah ah ah !)
Modifié par pierreandre (25 Feb 2009 - 01:59)
pierreandre a écrit :
Encore merci. Je te prie d'excuser mon retard à répondre, nous avons eu à fêterl'anniversaire du mari, de la fille de ma femme (ah ah ah ah !)
Eh bien Bons Anniversaires à tous ! Smiley ravi