Mon appli permet d'ajouter un employé, de lui ajouter des jours de congés acquis, des heures de repos acquis, de lui en déduire aussi, et enfin de modifier une date de départ ou de retour.
Quand une mofidication de date de départ ou de retour doit se faire, tout un calcul (ajout ou déduction de jour ou d'heure à faire) se fait et c'est là que mon calcul ne se fait pas parfaitement !
Par exemple:
$dmd1 = '$query5[conges_pr]' - '$conge_dmd';
$new_solde = '$query3[solde_conge]' + '$dmd1';
et lors de l'activation il se passe ceci:
1 = 3 -2
1 = 1 + 1
<?php
include('connect.php');
if ((isset($_POST['nom'])) AND (isset($_POST['prenom'])) AND (isset($_POST['conge_dmd'])) AND (isset($_POST['date_dep'])) AND (isset($_POST['date_ret'])) AND (isset($_POST['new_date_dep']))) //si zone de texte rempli
{
$nom = $_POST['nom']; // variable <- zone de texte
$prenom = $_POST['prenom'];
$conge_dmd = $_POST['conge_dmd'];
$date_dep = $_POST['date_dep'];
$date_ret = $_POST['date_ret'];
$new_date_dep = $_POST['new_date_dep'];
}
else
{
$nom = ""; // sinon variable <- vide
$prenom = "";
$conge_dmd = "";
$date_dep = "";
$date_ret = "";
$new_date_dep = "";
}
// récupère le id_agent
$query = mysql_query("SELECT id_agent
FROM agent
WHERE nom = '$nom'
AND prenom = '$prenom'") or die ("Erreur de requête 1 : ".mysql_error());
$query1 = mysql_fetch_array($query);
// récupère le solde_congé actuel
$query2 = mysql_query("SELECT solde_conge
FROM agent
WHERE id_agent = '$query1[id_agent]'") or die ("Erreur de requête 2 : ".mysql_error());
$query3 = mysql_fetch_array($query2);
// récupère le nbrs de congés pris
$query4 = mysql_query("SELECT conges_pr
FROM conges_pris
WHERE id_agent = '$query1[id_agent]'
AND deb_per_pr = '$date_dep'
AND fin_per_pr = '$date_ret'") or die ("Erreur de requête 3 : ".mysql_error());
$query5 = mysql_fetch_array($query4);
if ($new_date_dep > $date_dep) // si nouvelle date > date de départ prévu
{
$dmd1 = '$query5[conges_pr]' - '$conge_dmd';
$new_solde = '$query3[solde_conge]' + '$dmd1';
// met a jour le solde congé de AGENT
mysql_query("UPDATE agent
SET solde_conge = '$new_solde'
WHERE id_agent = '$query1[id_agent]'") or die ("Erreur de requête 4 : ".mysql_error());
// met a jour la nouvelle date de départ
mysql_query("UPDATE conges_pris
SET deb_per_pr = '$new_date_dep', conges_pr = '$dmd1', solde_conge = '$new_solde'
WHERE id_agent = '$query1[id_agent]'
AND deb_per_pr = '$date_dep'
AND fin_per_pr = '$date_ret'") or die ("Erreur de requête 5 : ".mysql_error());
}
else
{
$dmd2 = '$conge_dmd' - '$query5[conges_pr]';
$new_solde = '$query3[solde_conge]' - '$dmd2';
// met a jour le solde congé
mysql_query("UPDATE agent
SET solde_conge = '$new_solde'
WHERE id_agent = '$query1[id_agent]'") or die ("Erreur de requête 7 : ".mysql_error());
// met a jour la nouvelle date de départ
mysql_query("UPDATE conges_pris
SET deb_per_pr = '$new_date_dep', conges_pr = '$dmd2', solde_conge = '$new_solde'
WHERE id_agent = '$query1[id_agent]'
AND deb_per_pr = '$date_dep'
AND fin_per_pr = '$date_ret'") or die ("Erreur de requête 6 : ".mysql_error());
}
mysql_close($conn); //ferme la connection a la BDD
if ($nom != NULL AND $prenom != NULL AND $new_date_dep != NULL AND $date_dep != NULL AND $date_ret) // si les variables diff de vide
{
// on affiche la page cachée
?>