Bonjour,
Je concois actuellement un calendrier hebdomadaire simple de congé pour ma boite.
Une simple base Mysql alimente le tableau
table planning : id, employé, date_debut_conge, date_fin_conge
Le script ci-dessous fonctionne trés bien seulement : si un employé a 2 jours de congés dans la semaine, la requete et le script renvoie 2 lignes pour ce même employé, ce qui fait pas pro.
Et là franchement ça fait 2 jours que je cherche car je ne suis pas un codeur professionel, et je commence à fatiguer sur le problème. Il doit y avoir une boucle à faire quelque part...mais ou ?
PS : le script est sans aucun doute trés mal codé...soyez indulgent merci
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Document sans nom</title>
</head>
<body>
<table width="80%" border="1" cellspacing="1" cellpadding="0" bordercolor="#000000">
<?php
include ("include/connect.inc.php");
function PendantPeriode($debut, $fin, $joura) {
$tDebut = explode("/", $debut);
$tFin = explode("/", $fin);
return( $joura >= mktime(0, 0, 0, $tDebut[1], $tDebut[0], $tDebut[2]) &&
$joura < mktime(0, 0, 0, $tFin[1], $tFin[0]+1, $tFin[2]) );
}
$joursem = array('dimanche ','lundi ', 'mardi ', 'mercredi ', 'jeudi ', 'vendredi ','samedi ');
$annee=date('Y');
$jour=date('d');
$mois = date('m');
$numSemaine =date('W',mktime(0,0,0,$mois,$jour-6,$annee));
echo '<tr><td></td>';
echo 'Semaine : '.$numSemaine.' Année :'.$annee.'<br>';
$premierJanvier = mktime(1,0,0,1,1,$annee);
$jourPremierJanvier = date('w',$premierJanvier);
$timestamp1 = $premierJanvier+$numSemaine*7*24*3660;
$jour = date('w',$timestamp1);
for ($i=1;$i<=5;$i++) {
$timestamp = $timestamp1+($i-$jour)*24*3600;
$jour1 = date('w',$timestamp);
echo '<td>'.$joursem[$jour1].'';
echo date('d/m/y',$timestamp).'</td>';};
echo '</tr>';
$query1="SELECT * FROM plan ORDER BY employe";
$res1=mysql_query($query1);
while ($requet1=mysql_fetch_object($res1))
{
echo '<tr><td>'.$requet1->employe.'</td>'; //affichage du nom dans la première colonne
$timestamp = $timestamp1+(1-$jour)*24*3600;
$jour1 = date('d/m/y',$timestamp);
$timestamp2 = $timestamp1+(2-$jour)*24*3600;
$jour2 = date('d/m/y',$timestamp2);
$timestamp3 = $timestamp1+(3-$jour)*24*3600;
$jour3 = date('d/m/y',$timestamp3);
$timestamp4 = $timestamp1+(4-$jour)*24*3600;
$jour4 = date('d/m/y',$timestamp4);
$timestamp5 = $timestamp1+(5-$jour)*24*3600;
$jour5 = date('d/m/y',$timestamp5);
$query2="SELECT employe,date_debut_conge,date_fin_conge FROM plan WHERE employe='$requet1->employe' GROUP BY employe,date_debut ";
$res2=mysql_query($query2);
while ($requet2=mysql_fetch_object($res2));
{
echo PendantPeriode($requet1->date_debut_conge, $requet1->date_fin, $timestamp)? '<td>congé</td>' : '<td></td>';
echo PendantPeriode($requet1->date_debut_conge, $requet1->date_fin, $timestamp2)? '<td>congé</td>' : '<td></td>';
echo PendantPeriode($requet1->date_debut_conge, $requet1->date_fin, $timestamp3)? '<td>congé</td>' : '<td></td>';
echo PendantPeriode($requet1->date_debut_conge, $requet1->date_fin, $timestamp4)? '<td>congé</td>' : '<td></td>';
echo PendantPeriode($requet1->date_debut, $requet1->date_fin, $timestamp5)? '<td>congé</td>' : '<td></td>';
}
echo '</tr>'; //fin de la ligne de l'utilisateur
}
?>
</td>
</tr>
</table>
</body>
</html>