Alors j'ai mis en titre "problème de boucle" parce que je pense que mon problème vient de là, après je me trompe peut être.

Voila mon but est de faire un tableau qui colorerait une case quand la personne est absente, information qui est dans ma base de données, la première colonne étant les personnes, la première ligne étant les jours du mois.

Pour l'instant, avec mon script, les absences s'affiche bien mais il me répète mon tableau autant de fois qu'il y a d'absence, or forcement moi je ne le voudrait que dans un. J'ai essayé de positionner ma boucle a tout les endroit possible mais soit il ne m'affichait qu'une seule absence, soit les autres absences s'affichaient a la suite de la premiere et donc pas à la bonne place.

Ce n'est pas mon premier post sur un forum pour demander de l'aide, je n'ai pas eu de réponse satisfaisante pour le moment, voir meme parfois pas de reponse du tout... C'est dans le cadre d'un stage en entreprise il faut vraiment que je me sorte de ce probleme

Donc ceci est mon script qui normalement dois afficher et remplir un tableau en fonction de ma base de données, il est appelé dans un autre script HTML par un bouton et une fonction ajax.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
<?php
	session_start();
	include_once('connexion.inc.php');
 
	$sql = "Select * from deplacement";
	$resultat = $dbh->query($sql);
	$row=$resultat->fetch();
 
	$mois = date('n');
	$jourJ = date('d');
	$libMois = ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Aout', 'Septembre', 'Octobre', 'Novembre', 'Decembre'];
	$moisEnCours = $libMois[date('n')-1];
	$jourParMois = [31,28,31,30,31,30,31,31,30,31,30,31];
	$listeEmployer = ['LARTIGUE', 'TEXEIRA', 'FLEURY', 'GREGORY', 'JOUY', 'PANON', 'HUSSON', 'RAUNER', 'DEGUGLIELMO', 'BEAUCOTE'];
	$nbEmpl = count($listeEmployer);
	$anneeEnCours = date ('y');
	$nbJourDuMois = $jourParMois[date('n')-1];
	$semEnCours = date('W');
 
	echo ("<table id='tableau'>
		<thead id='thead'>
			<caption>Nous sommes le $jourJ $moisEnCours</caption>
			<tr><th>Technicien</th>
			");
			for ($i=1; $i<=$nbJourDuMois; $i++) {
				$semDate = date('W',mktime(0,0,0, $mois, $i, $anneeEnCours));
				echo ("<th>$semDate</th>");
			}
			echo ('</tr>
			<tr><th></th>');
			for ($i=1; $i<=$nbJourDuMois; $i++) {
				echo ("<th id='jour' class='jour'>$i</th>");
			}
			echo('</tr>
		</thead>
		<tbody id="tbody">
			');
			$ligne=1;
			while($row){
				foreach ($listeEmployer as $element) {
					echo ("<tr id='$element' class='ligne'><td>$element</td>");
						for ($jourP=1; $jourP<=$nbJourDuMois; $jourP++) {
							$tech = $row['technicien'];
							$jourD = $row['jour'];
							if ($element == $tech) {
								if ($jourD == $jourP) { 				
									$tech = $row['technicien'];
									$jourD = $row['jour'];
									$mois = $row['mois'];
									$annee = $row['annee'];
									$nbJ = $row['nbJour'];
									$type = $row['type'];
									switch ($nbJ) {
										case 1 : 
											$taille = '25px';
										break;
										case 2 : 
											$taille = '53px';
										break;
										case 3 : 
											$taille = '81px';
										break;
										case 4 : 
											$taille = '109px';
										break;
										case 5 : 
											$taille = '137px';
										break;
										case 6 : 
											$taille = '193px';
										break;
										case 7 : 
											$taille = '221px';
										break;
										case 8 : 
											$taille = '249px';
										break;
										case 9 : 
											$taille = '276px';
										break;
										case 10 : 
											$taille = '304px';
										break;
										case 11 : 
											$taille = '332px';
										break;
										case 12 : 
											$taille = '360px';
										break;
										case 13 : 
											$taille = '388px';
										break;
										case 14 : 
											$taille = '416px';
										break;
										case 15 : 
											$taille = '444px';
										break;
										case 16 : 
											$taille = '472px';
										break;
										case 17 : 
											$taille = '500px';
										break;
										case 18 : 
											$taille = '528px';
										break;
										case 19 : 
											$taille = '556px';
										break;
										case 20 : 
											$taille = '584px';
										break;
										case 21 : 
											$taille = '612px';
										break;
										case 22 : 
											$taille = '640px';
										break;
										case 23 : 
											$taille = '668px';
										break;
										case 24 : 
											$taille = '696px';
										break;
										case 25 : 
											$taille = '724px';
										break;
										case 26 : 
											$taille = '752px';
										break;
										case 27 : 
											$taille = '780px';
										break;
										case 28 : 
											$taille = '808px';
										break;
										case 29 : 
											$taille = '836px';
										break;
									}	
									echo("<td id='$jourP' class='jour'><div id ='$type' class='drag' style='width:$taille;'></div></td>");
								}else{
									echo("<td id='$jourP' class='jour'></td>");
								}
							}else{
								echo("<td id='$jourP' class='jour'></td>");
							}
						}
				}
				echo("</tr>");
				$ligne = $ligne+1;
				$jourP = 1;
				$row=$resultat->fetch();
			}
		echo("</tbody>
	</table>");
?>