Fonction en php/mysql

Signaler
Messages postés
23
Date d'inscription
mardi 2 août 2011
Statut
Membre
Dernière intervention
26 juin 2012
-
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
-
Salut tout le monde
je voudrais que vous m aidiez svp à concevoir une fonction en PHP/mysql qui calcule le solde du congé de chaque employé .
voici le cahier de charge:
- chaque employé a 30 jrs de congé durant l année courante.
- si l employé n a pas consommé ses jours de congé de l année precedente , il en a droit dans la condition de ne pas dépasser un total de 60 jours ( 30 jours de l année courante + ce qui reste de l année precedente doit etre < 60)
-si l employé n a pas consommé ses jours de congés de l année qui précède l année précedente ( -2 ans) , il en a plus le droit
- à chaque fois qu'un employé consomme un congé , le solde du nombre de jours se décrémente
PS: -j'ai déja conçu un formulaire qui remplit la date de sortie et de reprise du congé de chaque employé.
-j'ai une base de donnée appelée "ma_base" dont une table est "employe" qui contient parmi ses champs le champ "solde".
Merci de m'aider le plus vite possible ! je suis vraiment perdue!

19 réponses

Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
27
Salut,

Merci de m'aider le plus vite possible ! je suis vraiment perdue!

Merci de nous informer le plus vite des difficultés que tu rencontres, appuyé au besoin du code que tu as déjà réalisé, afin que nous puissions peut être t'aider, parce que là, sans aucune question, ça risque d'être difficile.

Cordialement,


Kohntark -
Messages postés
23
Date d'inscription
mardi 2 août 2011
Statut
Membre
Dernière intervention
26 juin 2012

@kohntark : Merci pour ton interêt mais quels codes voudrais tu que je t envoie pour eclaircir un peu les choses ? :)
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
27
... tu dois le savoir mieux que moi ^^
Si tu postes en ces lieux c'est que tu rencontres des difficultés non ?
Exprime les donc !!

Si il n'y a pas de question comment veux tu que l'on te réponde ?


Cordialement,

PS : ne passe pas le post en "réponse acceptée" alors qu'elle ne l'est pas sinon moins de gens le liront

Kohntark -
Messages postés
23
Date d'inscription
mardi 2 août 2011
Statut
Membre
Dernière intervention
26 juin 2012

ecoute maintenant j'ai trouvé une fonction qui calcule la différence entre 2 dates: qui donne le nombre de jour séparant les deux dates. donc j'ai pensé à ceci:
on instancie une variable $solde qui vaut 30 jours par exemple (mm si c pas totalement correct, puisquon doit ajouté mm les jours de lannée précedente)

puis à chaque fois qu'un employé rentre la date de sortie et de reprise du congès, on a la durée grace à la fonction calculant la différentre entre les 2 dates.


Apres il faut retrancher cette durée du solde initial.
voici le code que j ai trouvé:

<?php
//Définition des date au format jour-mois-année
$date1 = "20-10-2008";
$date2 = "30-11-2008";

//Extraction des données
list($jour1, $mois1, $annee1) = explode('-', $date1);
list($jour2, $mois2, $annee2) = explode('-', $date2);

//Calcul des timestamp
$timestamp1 = mktime(0,0,0,$mois1,$jour1,$annee1);
$timestamp2 = mktime(0,0,0,$mois2,$jour2,$annee2);
echo abs($timestamp2 - $timestamp1)/86400; //Affichage du nombre de jour : 10.0416666667 au lieu de 10
?>
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
Bonjour,

On ne fera pas ton travail à ta place.

Soit tu expliques clairement ce que tu as tenté pour résoudre le problème, et ce sur quoi ça a bloqué, soit je vais devoir clore le sujet.

Cordialement,
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
27
@bmounaj
Merci de ne pas me contacter en privé.
Nous sommes sur un forum d'entraide pour lequel les réponses doivent profiter à tous.
Ce n'est pas parce que tu es débutante et moi un peu moins que je vais te faire ton code, comme l'a rappelé Coucou747.


Au plaisir de t'aider, mais en aucun cas je ne ferai ton travail à ta place.


Kohntark -
Messages postés
23
Date d'inscription
mardi 2 août 2011
Statut
Membre
Dernière intervention
26 juin 2012

re tout le monde! je ne vous demande pas de faire mon travail à ma place! tout simplement de "m'orienter"! mais c'est pas grave! Merci quand même ! BOnne journée
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
16
Alors pour le travail sur les dates, je conseille de passer en PHP 5.3.
Est-ce que c'est ta société qui te demande ce travail ?
S.
Messages postés
23
Date d'inscription
mardi 2 août 2011
Statut
Membre
Dernière intervention
26 juin 2012

Salut syndrael! en fait je suis en stage, j'ai un projet à faire il s'agit de la réalisation d'un site intranet de la société et je bloque sur cette fonction! celle qui calcule le solde.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
Bonjour,

Jusque là, tu n'as pas vraiment prouvé que tu voulais faire ce travail : tu n'as fait que demander ici comment le faire, mais on dirait vraiment que t'attends le code source
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
16
Moi j'ai eu à traiter ce cas et hélas la législation française fait que j'ai été presque obligé de créer 30 déclarations de jour avec leur année respective dans une base de données. Cela permet de gérer les années n, n-1 et n-2.
Ensuite à chaque prise de congés, on prend sur l'année n-1 de préférence sinon année n.
A chaque changement d'année (calendaire) on vire les n-1 (qui deviennent les n-2), et on transforme les n en n-1 pour rajouter 30 jours à l'année n (ou alors le ratio mensuel sur la base annuelle).
Avant de taper ton code, prends une feuille et fais l'algorithme..je pense que tu te focalises trop sur le but. Va étape par étape:
1. comment gérér les jours par année
2. comment gérer la prise de congés
3. comment gérer le passage d'une année à l'autre
4. etc..
S.
Messages postés
23
Date d'inscription
mardi 2 août 2011
Statut
Membre
Dernière intervention
26 juin 2012

Merci syndrael! C'est très gentil à toi!
Coucou747 !! je n'attends pas le CODE SOURCE ;) ! j'attendais juste quelqu'un comme syndrael qui m'oriente c'est tout! Merci :)
Messages postés
23
Date d'inscription
mardi 2 août 2011
Statut
Membre
Dernière intervention
26 juin 2012

j'ai commencé à faire ceci, mais je pense que cfaux parcequ' à chaque fois qu'on entre dans la fonction il va initialiser sold(n-1) à 0 et rest à 30, alors que moi je veux ceci que pour la premiere iteration:
<?php
function sold($n){
//Définition des date au format jour-mois-année
$date1 = "2008-10-20";
$date2 = "2008-11-30";


//Extraction des données
list($jour1, $mois1, $anne1) = explode('-', $date1);
list($jour2, $mois2, $annee2) = explode('-', $date2);

//Calcul des timestamp
$timestamp1 = mktime(0,0,0,$annee1,$jour1,$mois1);
$timestamp2 = mktime(0,0,0,$annee2,$jour2,$mois2);
$duree= abs($timestamp2 - $timestamp1)/86400; //Affichage du nombre de jour : 10.0416666667 au lieu de 10

$rest=30;
$sold(n-1)=0;

$rest=$rest-duree
$rest=sold(n-1)+sold(n);
return $rest;
}
?>
Messages postés
10
Date d'inscription
mardi 16 août 2011
Statut
Membre
Dernière intervention
29 août 2011

C'est déja un bon début . on va t'aider à l'ameliorer sur le forum . continue comme ça ;) et c'est dans la poche
Messages postés
23
Date d'inscription
mardi 2 août 2011
Statut
Membre
Dernière intervention
26 juin 2012

Merci pr tes encouragements "namoun" :D si tu pouvais me detecter l'erreur ça serait mieux ;)
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
16
A mon sens tu ne pars pas dans la bonne direction.
Tes 30 jours de congés sont du 1er janvier au 31 décembre.
Algorithmiquement tu te compliques la tache sans savoir ou tu vas arriver..
Mais bon..
1.
//Définition des date au format jour-mois-année 
$date1 = "2008-10-20"; 
$date2 = "2008-11-30"; 

//Extraction des données 
list($jour1, $mois1, $anne1) = explode('-', $date1); 
list($jour2, $mois2, $annee2) = explode('-', $date2); 

- il y a une erreur c'est $annee1 et non $anne1.
- ton list() n'est pas à l'envers ?
- faire du récursif là dessus c'est un marteau piquer pour écraser une mouche.

Persévère..
S.
Messages postés
23
Date d'inscription
mardi 2 août 2011
Statut
Membre
Dernière intervention
26 juin 2012

merci pr ta remarque pertinente! enfait c'est l'écriture des variables $date1 et $date2 qui est à l'envers. Mais à part ça! je pense qu'il est primordial d'utiliser la récursivité! pour manipuler tjrs l'année courante et précedente, non??
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
27
Coucou747 !! je n'attends pas le CODE SOURCE ;)

... je ne vais pas polémiquer hein, mais tout démontre (démontrait) le contraire : exposition du cahier des charges, aucune question, demande d'exposer la question, aucune question, intervention d'un admin, du coup tu m'envoies un message privé, etc ...
Bref, n'en parlons plus.

Syndrael l'a très justement dit :
Avant de taper ton code, prends une feuille et fais l'algorithme..je pense que tu te focalises trop sur le but.

Je ne veux pas faire mon rabat joie mais si tu ne réalises pas cette étape, qui est la plus importante, tu vas te planter, c'est certain.

Ne pense pas que ce type de projet soit le plus simple à réaliser. Il te faudra bien plus qu'une simple fonction pour parvenir à un truc pas trop bancal.

une fonction qui calcule la différence entre 2 dates: qui donne le nombre de jour séparant les deux dates

J'en déduis que tu vas travailler avec des périodes, du style "2 semaines de vacances"
Très bien, mais comment vas tu gérer les week end ? les jours fériés légaux ? les potentiels congés propres à l'entreprise ? les ponts ? les demis CP ? etc ...

Qu'en est il de la structure de ta DB ?

Bref, si j'étais toi je suivrai les conseils que tu as toi même demandés.

Pour ton calcul entre 2 dates jette un oeil sur les classes DateTime et DateInterval de PHP.


Cordialement,

Kohntark -
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
16
Surtout que le droit marocain doit aussi avoir d'autres dispositions légales.
Pour ton calcul entre 2 dates jette un oeil sur les classes DateTime et DateInterval de PHP.

D'ou justement mon premier post, je te conseille PHP5.3
Sinon on ne fait pas du recursif uniquement pour un nombre d''itérations' connu, à savoir dans ton cas: 2.
Prends ton temps, pose bien toutes les problématiques..
S.