Aide pour modification code

Fermé
Ben314 Messages postés 2312 Date d'inscription lundi 12 décembre 2011 Statut Membre Dernière intervention 1 mai 2017 - Modifié par Ben314 le 15/11/2014 à 15:26
kangourouxxx Messages postés 71 Date d'inscription jeudi 31 janvier 2008 Statut Membre Dernière intervention 6 mars 2015 - 16 févr. 2015 à 09:36
Bonjour

J'aurais besoin d'aide pour modifier ce calendrier :

https://codes-sources.commentcamarche.net/source/52156-calendrier-annuel-avec-numero-de-semaine

Le but : que les dates se colorise en fonction de dates et d'un booléen contenu dans une bd

Je me dit que je doit rajouter ceci, mais j'aurais besoin d'exemple concret pour m'aider :
- créer commande mysql
- mettre le tout dans un tableau. 3 colonne à prendre en compte, 2 dates, 1 bool.
- une commande pour pour comparer mon tableau et "new dates" (dans le code).
- et surtout rajouter 2 couleur (rouge et orange) aux css pour colorer les cases si la date et dans la bd et en fonction du bool (0 orange, 1 rouge)


Un grand merci a qui m'aidera, d'ailleurs si vous avez une soluce plus simple que mon idée dites le moi.

Config : Wamp (dernière version, le truc PDO j'ai trop de mal ^^)
A voir également:

2 réponses

kangourouxxx Messages postés 71 Date d'inscription jeudi 31 janvier 2008 Statut Membre Dernière intervention 6 mars 2015 2
13 févr. 2015 à 11:53
J'ai besoin de plus d'info.
Qu'est-ce qui fait que la date est rouge ou orange ?
0
kangourouxxx Messages postés 71 Date d'inscription jeudi 31 janvier 2008 Statut Membre Dernière intervention 6 mars 2015 2
Modifié par kangourouxxx le 16/02/2015 à 09:32
Bonjour,
sans réponse de votre part j'ai pris la liberté d'avancer une version du code.
Ajout de la coloration rouge et orange si la date est dans un tableau et que c'est TRUE ou FALSE.
J'ai également ajouté la détection de la date du jour avec une coloration du texte en bleu.

Voici le code, à vous de l'adapter maintenant :

<?php
	/**
		Modifié par Julien R. le 16/02/2015
	*/
	
	/*
		La variable "$arrayBdd" doit être à importer depuis la BDD
	*/
	$arrayBdd = array('15-01-2015'=>true, '20-02-2015'=>false, '11-03-2015'=>false, '29-03-2015'=>false, '12-04-2015'=>false , '01-08-2015'=>false); //tableau de la BDD
	$formatDate = "d-m-Y";
	
	// Recuperation des parametres (lors du changement d'annees)
	if(isset($_POST["year"])) { // Recuperation des parametres POST pour le formulaire
		$year = $_POST["year"];
	}
	elseif(isset($_GET["year"])) { // Recuperation des parametres GET pour les liens vers les annees precedentes et suivantes
		$year = $_GET["year"];
	}
	else { // sinon on applique l'annee en cours
		$newDate = New DateTime();
		$year = $newDate->format("Y");
	}
	
	// mise en memoire des jours de la semaine et des mois de l'annee dans un tableau
	$aDayOfWeek = array("Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", "Dim");
	$aMonth = array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre");
	
	// creation d'une date temporaire en fonction du parametre annee recu
	$newDate = New DateTime();
	$newDate->setDate($year, 1, 1);
	if ($newDate->format("L") == 1) { // si l'annee est bissextile, mise en memoire des nombres de jours par mois de l'annee (avec 29 a fevrier)
		$aMonthDays = array("31", "29", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31");
	}
	else { // sinon, mise en memoire des nombres de jours par mois de l'annee (avec 28 a fevrier)
		$aMonthDays = array("31", "28", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31");
	}
?>
<html>
	<head>
		<title>Calendrier <?php echo $year; // Affichage de l'annee ?></title>
		<style type="text/css">
			<!--
				#calendar {padding:0; margin:0; border-top:1px solid black; border-left:1px solid black; border-right:1px solid black; cursor: default;}
				#calendar th {border:1px solid black; border-bottom:2px solid black}
				#calendar td {padding-left:3px; padding-right:3px}
				#calendar td.dayOfWeek {border-left:1px solid black;}
				#calendar td.day {text-align: right;}
				#calendar td.week {border-right:1px solid black; font-weight:bold;}
				#calendar td.endOfMonth {border-bottom:2px solid black;}
				#calendar .weekend{background-color : #CCC;}
				#calendar .orangeDay{background-color : orange;}
				#calendar .redDay{background-color : red;}
				#calendar .isToDay{color : blue; font-weight:bold;}
			-->
		</style>
	</head>
	<body>
		<center>
			<h2>Calendrier <?php echo $year;// Affichage de l'annee ?></h2>
			<table id="calendar" cellpadding="0" cellspacing="0" border="0">
				<thead>
					<tr>
						<?php for ($m=0; $m<12; $m++) { // Creation d'une boucle pour ecrire les entetes de colonnes ?>
						<th colspan="3"><?php echo $aMonth[$m]; // Ecriture du nom du mois ?></th>
						<?php } ?>
					</tr>
				</thead>
				<tbody>
					<?php for ($d=1; $d<=31; $d++) { // Creation d'une boucle pour realiser les lignes ?>
					<tr>
						<?php for ($m=0; $m<12; $m++) { // Creation d'une boucle pour ecrire les colonnes
							$newDate = New DateTime(); // Creation d'une date pour obtenir le numero du jour de la semaine et le numero de semaine
							$newDate->setDate($year, ($m+1), $d);
							$dayOfWeek = $newDate->format("N")-1; // Recuperation du numero du jour de la semaine (0 à 6)
							$weekend = ((($dayOfWeek==5 or $dayOfWeek==6) and $d <= $aMonthDays[$m])?" weekend":""); // Si le jour est un samedi ou dimanche et compris dans le mois, mise en memoire du mot weekend (classe css)
							$endOfMonth = (($d==31)?" endOfMonth":""); // Si dernier jour du mois, mise en memoire du mot endOfWeek (classe css)

							foreach($arrayBdd as $key=>$val){
								$colorDay = "";
								
								if($newDate->format($formatDate) == $key){
									if($val == false){
										$colorDay = " orangeDay";
									}else{
										$colorDay = " redDay";
									}
									break;
								}
							}
							
							if(date($formatDate) == $newDate->format($formatDate)){
								$colorDay = " isToDay";
							}
							
							if ($d <= $aMonthDays[$m])  { // Si le jour est compris dans le mois en cours ?>
							
						<!--// Ajout des classes css predefinis et affichage du jour de la semaine dans la premiere colonne -->
						<td class="dayOfWeek<?php echo $weekend.$endOfMonth.$colorDay; ?>"><?php echo $aDayOfWeek[$dayOfWeek]; ?></td>
						
						<!--// Ajout des classes css predefinis et affichage du numero du jour du mois-->
						<td class="day<?php echo $weekend.$endOfMonth.$colorDay; ?>"><?php echo $d; ?></td>
						
						<!--// Ajout des classes css predefinis et affichage en debut de semaine ou premier jour de l'annee du numero de semaine -->
						<td class="week<?php echo $weekend.$endOfMonth.$colorDay; ?>"><?php echo (($dayOfWeek==0 or ($d==1 and $m==0))?$newDate->format("W"):" ");?></td>
						
						<?php } else { // Si le jour n'est pas compris dans le mois (le 31 n'existe pas en fevrier) ?>
						
						<!--// Ajout des classes css predefinis et ajout d'un espace pour que la cellule soit affichee correctement -->
						<td class="dayOfWeek<?php echo $weekend.$endOfMonth.$colorDay; ?>" colspan="2"> </td>
						<td class="week<?php echo $weekend.$endOfMonth.$colorDay; ?>"> </td>
						
						<?php } } ?>
					</tr>
					<?php } ?>
				</tbody>
			</table>
			<br />
			<!--// Liens vers cette meme page avec le parametre annee pointant vers l'annee precedente et suivante -->
			<a href="<?php echo $_SERVER["PHP_SELF"]?>?year=<?php echo $year-1;?>">Année précédente</a>   
			<a href="<?php echo $_SERVER["PHP_SELF"]?>?year=<?php echo $year+1;?>">Année suivante</a>
			<br />
			<br />
			<!--// Creation d'un formulaire pour la saisie de l'annee qui retourne vers cette meme page -->
			<form action="<?php echo $_SERVER["PHP_SELF"]?>" method="POST">
				Année : 
				<input name="year" value="<?php echo $year;?>" />
				<input type="submit" value="Appliquer" />
			</form>
		</center>
	</body>
</html>


kangouroux
0
kangourouxxx Messages postés 71 Date d'inscription jeudi 31 janvier 2008 Statut Membre Dernière intervention 6 mars 2015 2
Modifié par kangourouxxx le 16/02/2015 à 09:36
0