Bonjour,

Voilà je vous soumet un petit soucis vraiment très bizarre... je ne sais pas du tout d’où cela peut provenir.

J'ai créé un petit script me permettant de gérer le pointage des salariés avec un calcul des différences entre chaque horaires.

Voici ma requête :

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
$voirdate = "SELECT * FROM pointage WHERE jour='".$_POST['jour']."' AND nom = '".$_POST['nom']."' ORDER BY service ASC";
$req1 = "SELECT TIME_FORMAT(CAST(TIMEDIFF(arrive,depart_dejeuner) + TIMEDIFF(retour_dejeuner,sortie) AS TIME), '%Hh%imin') AS diff FROM pointage WHERE jour = '".$_POST['jour']."' AND nom = '".$_POST['nom']."'";
$req2 = "SELECT TIME_FORMAT(CAST(TIMEDIFF(entree_t,depart_dej_t) + TIMEDIFF(retour_dej_t,sortie_t) AS TIME), '%Hh%imin') AS diff2 FROM pointage WHERE jour = '".$_POST['jour']."' AND nom = '".$_POST['nom']."'";
 
if(isset($_POST['submit'])&&($_POST['jour'])&&($_POST['nom'])){
    $voirdate = $db->query($voirdate);
    $diff = $db->query($req1);
    $diff2 = $db->query($req2);
 
    while(($rows = $voirdate->fetch(PDO::FETCH_ASSOC))&&($row = $diff->fetch(PDO::FETCH_ASSOC))&&($row2 = $diff2->fetch(PDO::FETCH_ASSOC))){
        echo 
            "<tr><td>".date("d/m/Y", strtotime($rows['jour']))."</td>".
            "<td style=\"background-color:#FFF;color:BLUE;font-weight:bold;\">".date("H:i", strtotime($rows['entree_t']))."</td>".
            "<td style=\"background-color:#FFF;color:#FF0000;font-weight:bold;\">".date("H:i", strtotime($rows['arrive']))."</td>".
            "<td style=\"background-color:#FFF;color:BLUE;font-weight:bold;\">".date("H:i", strtotime($rows['depart_dej_t']))."</td>".
            "<td style=\"background-color:#FFF;color:#FF0000;font-weight:bold;\">".date("H:i", strtotime($rows['depart_dejeuner']))."</td>".
            "<td style=\"background-color:#FFF;color:BLUE;font-weight:bold;\">".date("H:i", strtotime($rows['retour_dej_t']))."</td>".
            "<td style=\"background-color:#FFF;color:#FF0000;font-weight:bold;\">".date("H:i", strtotime($rows['retour_dejeuner']))."</td>".
            "<td style=\"background-color:#FFF;color:BLUE;font-weight:bold;\">".date("H:i", strtotime($rows['sortie_t']))."</td>".
            "<td style=\"background-color:#FFF;color:#FF0000;font-weight:bold;\">".date("H:i", strtotime($rows['sortie']))."</td>".
            "<td>".$rows['id']."</td>".
            "<td>".$rows['nom']."</td>".
            "<td>".$rows['prenom']."</td>".
            "<td>".$rows['service']."</td>".
            "<td style=\"background-color:#FFF;color:BLUE;font-weight:bold;\">".$row2['diff2']."</td>".
            "<td style=\"background-color:#FFF;color:#FF0000;font-weight:bold;\">".$row['diff']."</td></tr>";
    }
}
Exemple :
entree_t est un champ de type DATETIME avec pour valeur : 16:30:00
depart_dej_t est un champ de type DATETIME avec pour valeur : 20:00:00
retour_dej_t est un champ de type DATETIME avec pour valeur : 20:30:00
sortie_t est un champ de type DATETIME avec pour valeur : 01:00:00

Lorsque que le résultat de la différence est une heure ronde (exemple 8h00min) rien ne s'affiche, par contre s'il n'est pas rond et que je modifie directement dans la base de donnée 16:30:00 par 16:31:00 (exemple 7h59min) ça s'affiche correctement.

Le problème ne vient pas de la base de donnée, qu'est-ce qui peut jouer la dessus ???

Si vous avez besoin de plus d'informations n'hésitez pas.

Merci à vous.