Bonjour a tous Je suis débutant en php et j'esssaie de faire un planning d'absences mais je galère. le problème est dans la présentation : j'ai un tableau d'absences ($abs) qui contient l'id de la personne, la date de début et la date de fin d'absence. 1 personne peut avoir plusieurs absences donc je rajoute un élément dans le tableau a chaque fois. Le code fonctionne s'il y a une absence par personne , mais s'il y en a plus rien ne va je n'arrive pas à afficher sur une meme ligne les différentes absences. Voici le code, oui il est pourri c'est pour cela que je vous sollicite :-)
//parcours des salaries présents et absents foreach($salarie as $cle => $leSalarie){ $multiAbs=false; //parcours des absences foreach($abs as $cle => $labsence){ for($a=sprintf('%02d',8);$a<=sprintf('%02d',8);$a++){ for($m=date('m');$m<=date('m');$m++){ for($j=1;$j<32;$j++){ if(checkdate($m, $j, $a)==true){ $timestamp=mktime(0,0,0,$m,$j,$a); //division des dates list($an, $mois, $jour)=split('-',$labsence[1]); list($an2, $mois2, $jour2)=split('-',$labsence[2]); $debutAbs=mktime(0,0,0,$mois, $jour, $an); $finAbs=mktime(0,0,0,$mois2, $jour2, $an2);
Marsh Posté le 21-11-2008 à 10:42:43
Bonjour a tous
Je suis débutant en php et j'esssaie de faire un planning d'absences mais je galère. le problème est dans la présentation : j'ai un tableau d'absences ($abs) qui contient l'id de la personne, la date de début et la date de fin d'absence. 1 personne peut avoir plusieurs absences donc je rajoute un élément dans le tableau a chaque fois. Le code fonctionne s'il y a une absence par personne , mais s'il y en a plus rien ne va je n'arrive pas à afficher sur une meme ligne les différentes absences.
Voici le code, oui il est pourri c'est pour cela que je vous sollicite :-)
//parcours des salaries présents et absents
foreach($salarie as $cle => $leSalarie){
$multiAbs=false;
//parcours des absences
foreach($abs as $cle => $labsence){
for($a=sprintf('%02d',8);$a<=sprintf('%02d',8);$a++){
for($m=date('m');$m<=date('m');$m++){
for($j=1;$j<32;$j++){
if(checkdate($m, $j, $a)==true){
$timestamp=mktime(0,0,0,$m,$j,$a);
//division des dates
list($an, $mois, $jour)=split('-',$labsence[1]);
list($an2, $mois2, $jour2)=split('-',$labsence[2]);
$debutAbs=mktime(0,0,0,$mois, $jour, $an);
$finAbs=mktime(0,0,0,$mois2, $jour2, $an2);
if($leSalarie[0]==$abs[$cle+1][0] && $leSalarie[0]!=$abs[$cle+2][0]){
$multiAbs=true;
//Ecriture de la 1ere colonne : noms
if($j==1){
echo '</tr><tr><th>'.$leSalarie[1].'</th>';
}
if($timestamp>=$debutAbs && $timestamp<=$finAbs){
echo '<td class="rouge">X</td>';
}
}elseif($leSalarie[0]==$abs[$cle][0]){
//Ecriture de la 1ere colonne : noms
if($j==1 && $multiAbs==false){
echo '</tr><tr><th>'.$leSalarie[1].'</th>';
}
//Si absence...
if($timestamp>=$debutAbs && $timestamp<=$finAbs){
echo '<td class="rouge">X</td>';
}elseif($timestamp<$debutAbs){
echo '<td>'.strftime('%d',$timestamp).'</td>';
}
//Le salarié fini, on le supprime
if(checkdate($m, $j+1, $a)==false) echo '</tr><tr>';
}
}
}
}
}
}