nagrom_om
Messages postés163Date d'inscriptionlundi 20 décembre 2004StatutMembreDernière intervention 1 novembre 2006
-
11 juil. 2005 à 10:05
nagrom_om
Messages postés163Date d'inscriptionlundi 20 décembre 2004StatutMembreDernière intervention 1 novembre 2006
-
11 juil. 2005 à 15:57
Voila je dois tester si les dates d une demande de congé pour une periode donnée (TsDepart, TsRetour) n'empiètent pas sur un depôt préalablement posé et enregistré dans une table congé. Je récupère les valeurs de depart et de retour enregistrée dans la table dans $LigneTable['Date_depart'] $LigneTable['Date_retour']. Pour moi le test en pseudolanguage serait :
Si (((TsDepart>=$LigneTable['Date_depart']) && (TsRetour)<=$LigneTable['Date_retour']))
|| Si (TsDepart<=$LigneTable['Date_depart']) && ((TsRetour>=$LigneTable['Date_depart'])&&(TsRetour<=$LigneTable['Date_retour'])))
je sais que ce n'est pas évident a voir mais cela fait plusieurs jour que je bug dessus ... si qq 1 a une idée je le remercie d'avance
Je suis capable du pire comme du meilleur, mais dans le pire c'est moi le meilleur !!!
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 11 juil. 2005 à 10:24
Pourquoi tu ne fais pas ca directement dans ta requete sql ? Tu testes
s'il existe un empietement directement. Puisqu'apparemment tu utilises
des timestamp, ca ne va pas etre complique.
SELECT COUNT(*) FROM table WHERE TsDepart >= $timestamp_depart_heure AND...
nagrom_om
Messages postés163Date d'inscriptionlundi 20 décembre 2004StatutMembreDernière intervention 1 novembre 2006 11 juil. 2005 à 10:30
Imagine qu un utilisateur veuille déposer un congé pour une periode donnée, je dois juste tester si ce congé est possible cad si il n existe pas deja un congé (ou portion de congé) pendant cette période
Je suis capable du pire comme du meilleur, mais dans le pire c'est moi le meilleur !!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 11 juil. 2005 à 11:00
Ok.
donc...
c'est complexe pour un lundi matin lol.
Tu dois tester si une date de depart OU une date de retour est comprise entre 2 dates d'arrivee et de retour.
Puis si une date d'arrivee est < a une autre mais >a une date de retour...
Ou si une date de depart est > a une autre mais < a une date de retour...
hmm...
lol desole mais pour un lundi matin, c'est difficile, j'ai du mal.
nagrom_om
Messages postés163Date d'inscriptionlundi 20 décembre 2004StatutMembreDernière intervention 1 novembre 2006 11 juil. 2005 à 12:22
en fait c'est surtt que je ne suis pas sur de mes syntax. Si je veux dire un truc du genre
DateDepart <= TsDepart <= DateRetour c'est bien cela qu'il faut que je code
if (TsDepart => DateDepart) &&(TsDepart <= DateRetour)
C'est surtt au niveau des parenthèses que je ne suis pas sûr.
En y repensant je crois que si je dis :
( SI le depart ou le retour est situé dans un congé deposé enregistré dans la base)
* Si DateDepart <= TsDepart <= DateRetour
* Si DateDepart <= TsRetour <= DateRetour
(Si le congé deposé englobe un congé préalablement déposé) * Si TsDepart <DateDepart et TsRetour> DateRetour
Avec DateDepart et DateRetour qui correspondent au congés préalablement déposés.
Je suis capable du pire comme du meilleur, mais dans le pire c'est moi le meilleur !!!
nagrom_om
Messages postés163Date d'inscriptionlundi 20 décembre 2004StatutMembreDernière intervention 1 novembre 2006 11 juil. 2005 à 15:41
Alors apparemment si mes dates de demandes sont à l'interieure d'un congé déja posé il ne bloque pas ( ca fonctionne pas ) quand ma date de depart est à l'interieur d'un congé posé mais que la date de retour est en dehors il bloque (ca marche) quand ma date de depart est inferieur a un congé mais que le retour se situe pendant ce congé ca bloque pas ( ca marche pas ) et enfin si la date de depart est inferieur a un congé et que la date de retour est aussi superieur il bloque donc ca marche ...
En essayant d'être plus clair :
Soit dateDepart et dateRetour les dates des congés déposés ( différents tuples de la base ) et TsDepart, TsRetour les dates de demande.
si dateDepart<=TsDepart<=dateRetour && dateDepart<=TsRetour<=dateRetour ne fonctionne pas.
si dateDepart<=TsDepart<=dateRetour && TsRetour=>dateRetour ca fonctionne
si TsDepart<=dateDepart && dateDepart<=TsRetour<=dateRetour ne fonctionne pas
si TsDepart<=dateDepart && TsRetour=>dateRetour ca fonctionne
je remarque également que dans le cas ou je pose un congé deja posé donc TsDepart=dateDepart && TsReour=dateRetour cela ne fonctionne pas. Evidemment si je pose des dates qui n'ont rien a voir avec celles de la base (aucun chevauchement) cela fonctionne correctement ;)
Quoi que tu repondes encore merci !!!!
Je suis capable du pire comme du meilleur, mais dans le pire c'est moi le meilleur !!!
nagrom_om
Messages postés163Date d'inscriptionlundi 20 décembre 2004StatutMembreDernière intervention 1 novembre 2006 11 juil. 2005 à 15:53
je te fait un copier coller de ma partie de prog :
//si je met $boolAjout = true ici il ne passe jamais a false ?????!!!!!!!
if (isset($btnValider) && ($btnValider != ""))
{
$pt = new dev_SQL;
$Query = "SELECT numero_conge, date_depart, date_retour
FROM conges
WHERE numero_util = {$HTTP_SESSION_VARS['IdUtil']}";
// Il s agit du traitement donc le pb ne sera pas la !!!!
if ($boolAjout == true)
{ ?>
<script>alert('Votre demande à été transmise à : '); </script> <?
// Ajout dans la table conge via l'objet oConge
$oConge->CreerConge($HTTP_SESSION_VARS['IdUtil'], date("d/m/Y"),
date ("d/m/Y H:i:s",$timestamp_depart_heure),
date ("d/m/Y H:i:s",$timestamp_retour_heure),
$CommentUtil,"t","t",$CommentDirection);
// Initialisation du message à envoyer
$oMesgUtil = new CMesgUtil ($IdUtil);
$Urgent='t';
$Texte="Demande de congés du ". date ("d/m/Y H:i:s",$timestamp_depart_heure) .
" au " . date ("d/m/Y H:i:s",$timestamp_retour_heure).".";
// Envoi d'un message au superieur pour annoncer le depot d'un conge
//$oMesgUtil->Envoyer ($Urgent, $Texte, getNumChef($idCnx,$HTTP_SESSION_VARS['IdUtil']));
}
else
{
?>
<script language="JavaScript">
alert("Il existe déja un congé pendant cette date. Veuillez vérifier.");
</script>
<?