Bonjour,
Donc avec l'aide d'une personne j'ai écrit ce script.
Il a pour but de mettre a jour les absences et retards dans une base de données mysql.
Je l'ai remodifier plusieurs fois de différentes manières concernant la ligne des retards car celle-ci ne fonctionne pas comme elle devrait.
Il est fort possible que je me sois trompé dans la synthaxe mais je n'arrive pas à trouver, si quelqu'un a une solution a mon problème merci de me la communiquer.
L'heure a partir de laquelle le prochain scan sera compté comme en retard se situe sur une autre table de ma database.

Ma database: IDBT
La table des utilisateurs: Students
La table des horaires: Horaire6Qinf
La colonne ID_Horaire est présente dans les 2 tables.
Last_Scan: heure du dernier scan

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
#!/bin/bash
 
 
ID=""
LASTSCAN=""
NOM=""
PRENOM=""
 
mapfile result < <(mysql --user="dev" --password="123456" --database="IDBT" -se  "select Nom,Prenom ,IDStudent,TIME(Last_Scan) from Students ")
 
for row in "${result[@]}";do
 
IFS='	' read -r -a array <<< "$row"
 
    echo "Calcul de : "${array[0]}" "${array[1]}"" 
 
	NOM=${array[0]}
	PRENOM=${array[1]} 
	ID=${array[2]}
	LASTSCAN=${array[3]}
 
    #!récupérer les horaires
 
    mapfile ho < <(mysql --user="dev" --password="123456" --database="IDBT" -se  "select Horaire6Qinf.ID_Horaire from Horaire6Qinf,Students where Students.ID_Horaire = Horaire6Qinf.ID_Horaire")
 
    IFS='	' read -r -a tbho <<< "$ho"
 
    NUM_JOUR=1 
 
    HEURE_HORAIRE=${tbho[$NUM_JOUR]}
 
    #!"$(date +%u)"
 
	echo " Heure d'arrivée : "$LASTSCAN
 
	if [ "$LASTSCAN" == 'NULL' ]
	then
 
 
 
		mysql --user="dev" --password="123456" --database="IDBT" --execute="UPDATE Students  set Absence = Absence+1 where IDStudent ="$ID" ; "
	 #!echo "---> Absent"
	fi
	if [ TIME"$LASTSCAN" > '$HEURE_HORAIRE' ] 
	then
 
		mysql --user="dev" --password="123456" --database="IDBT" --execute="UPDATE Students  set Retard = Retard+1" where [ TIME"$LASTSCAN" >= '$HEURE_HORAIRE' ]
	fi
 
 
done