Bonjour,
Dans le cadre d'un projet "Calcul Heures de retard et d'heures supplémentaires" lors du pointage.
J'ai créé une table horaires qui stocke l'heure d'arrivée et l'heure de sortie.
En supposant que l'employé pointe des entrées/sorties au maximum 8 fois, j'ai pu calculer les heures de retard et les heures supplémentaires suivant les règles de l'organisation.
Je souhaiterais maintenant insérer toutes les données que j'affiche dans une table à la base de données. Voici mon code :

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
<?php
//---- DATABASE
define('DB_HOST', '127.0.0.1');
define('DB_NAME', 'tests');
define('DB_USER', 'root');
define('DB_PWD' , '');$bdd = new PDO('mysql:host='.DB_HOST.'; dbname='.DB_NAME,DB_USER,DB_PWD, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
$query = "SELECT nom, prenom, `date`, heure from horaires order by nom, prenom, `date`, heure";
$prepared = $bdd->prepare($query);
$prepared->execute();
//------ Initialisation des variables pour test de changement de personne/date
$savNom = "";
$savPrenom = "";
$savDate = "";
$savHeure = "";
$row = $prepared->fetch(PDO::FETCH_ASSOC);
while ($row)
{
$nom = $row['nom'];
$prenom = $row['prenom'];
$date = $row['date'];
$heure = $row['heure']; 
 
// détecte le changement de personne et de jour
if ($savNom != $nom || $savPrenom != $prenom || $savDate != $date)
{
$savNom = $nom;
$savPrenom = $prenom;
$savDate = $date;
// init des champs heures
$heures = array();
}
// sauvegarde de l'heure pour chaque enregistrement
$heures[] = $heure;
 
$row = $prepared->fetch(PDO::FETCH_ASSOC);
 
// détecte le changement de personne ou de jour ou la fin des données
$nom2 = $row['nom'];
$prenom2 = $row['prenom'];
$date2 = $row['date'];
$heure2 = $row['heure'];
if ($savNom != $nom2 || $savPrenom != $prenom2 || $savDate != $date2 || !$row)
{
//---- Insertion des données dans la table
$nomPourTable = $savNom;
$prenomPourTable = $savPrenom;
$datePourTable = $savDate;
$heureInPourTable1 = isset($heures[0]) ? $heures[0] : '00:00:00';
$heureOutPourTable1 = isset($heures[1]) ? $heures[1] : '00:00:00';
 
$heureInPourTable2 = isset($heures[2]) ? $heures[2] : '00:00:00';
$heureOutPourTable2 = isset($heures[3]) ? $heures[3] : '00:00:00';
 
$heureInPourTable3 = isset($heures[4]) ? $heures[4] : '00:00:00';
$heureOutPourTable3 = isset($heures[5]) ? $heures[5] : '00:00:00';
$heureInPourTable4 = isset($heures[6]) ? $heures[6] : '00:00:00';
$heureOutPourTable4 = isset($heures[7]) ? $heures[7] : '00:00:00'; 
$retard = "00:00:0"; // J'ai mis 00:00:00 car le code pour calculer les retards est trop long
$supp = "00:00:00"; // J'ai mis 00:00:00 car le code pour calculer les heures supplémentaires est trop long
 
$requete1 = ("insert into horairesFinal ( nom, prenom, `date`, heureIn1, heureOut1, heureIn2, heureOut2, heureIn3, heureOut3, heureIn4, heureOut4, retard, supp ) VALUES ( '$nomPourTable','$prenomPourTable', '$datePourTable', '$heureInPourTable1', '$heureOutPourTable1','$heureInPourTable2', $heureOutPourTable2,$heureInPourTable3, $heureOutPourTable3, '$heureInPourTable4', '$heureOutPourTable4', '$retard', '$supp' "); 
$prepared2 = $bdd->prepare($requete1 );
$prepared2->execute();
 
 
 
print "$nomPourTable | $prenomPourTable | $datePourTable | $heureInPourTable1 | $heureOutPourTable1 | $heureInPourTable2 | $heureOutPourTable2 | $heureInPourTable3 | $heureOutPourTable3 | $heureInPourTable4 | $heureOutPourTable4| $retard| $supp<br/>";
}
 
}

Le but est d'insérer les données dans la table horairesFinal, mais quand j'exécute la page les données s'affichent mais la table horairesFinal est vide.

Merci de votre aide