[Dates] Réservation de salles...
Bonjour à toutes et à tous,
Comme d'habitude, je reviens vers vos supers conseils (et compétences) lorsque je chauffe trop sur un probléme...
Voilà ma soucis :
Je devellope un outils de reservation de salles .
J'en suis donc au stade de la requête permettant de savoir si une salle est disponible ou non à une date donnée sur une tranche horaire donnée .
Voici la fonction que j'utilisais :
Code:
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
|
function F_CheckDispo ($BegResa, $EndResa, $EndM, $DateResa, $RoomResa, $Retro, $cnx)
{
$l_BegResa = $BegResa;
$l_EndResa = $EndResa;
$l_EndM = $EndM;
$l_BegResa[4] = 1;
if ($l_EndM == 30)
{
$l_EndM = 29 ;
$l_EndResa = $l_EndResa.":".$l_EndM.":00";
}
else
{
$l_EndM = 59;
if (substr($l_EndResa,0,1)== 0 )
{
$tmp = intval($l_EndResa[1]);
$tmp--;
$l_EndResa[1] = $tmp ;
$l_EndResa = $l_EndResa.":".$l_EndM.":00";
}
else
{
$tmp = intval(substr($l_EndResa,0,2));
$tmp -- ;
if ($tmp < 10)
{
$l_EndResa = "0".$tmp.":".$l_EndM.":00";
}
else
{
$l_EndResa = $tmp.":".$l_EndM.":00";
}
}
}
$qry =
"SELECT COUNT(*) FROM ".RESA." ".
"WHERE NOT(('".$begresa."'< BegRs ".
"AND '".$endresa."'< BegRs ) ".
"OR ('".$begresa."'> EndRs ".
"AND '".$endresa."'> EndRs )) ".
"AND IdRm =".$idroom." ".
"AND DateRs ='".$curyear."-".$curmonth."-".$curday."'";
//echo "<br>".$qry2;
$ret = mysql_query ($qry2, $cnx) or die(mysql_error() );
$col = mysql_fetch_row ($ret) ;
if (isset($col[0]))
{
return false;
}
else
{
return true ;
}
}
if ( $col[0] ) {
Alors la salle n'est pas dispo |
Au départ j'utilisais seulement la requête suivante
Cette requête est presque parfaite, sauf qu'elle ne permet des reservations contigues , exemple :
Code:
1 2 3 4 5 6 7 8
| $qry =
"SELECT COUNT(*) FROM ".RESA." ".
"WHERE NOT(('".$begresa."'< BegRs ".
"AND '".$endresa."'< BegRs ) ".
"OR ('".$begresa."'> EndRs ".
"AND '".$endresa."'> EndRs )) ".
"AND IdRm =".$idroom." ".
"AND DateRs ='".$curyear."-".$curmonth."-".$curday."'"; |
Malheureusment pour le cas d'une réservation commencant à 09h00 et finissant à 10h00 existant déjà avec cette requête impossible de placer une réservation de 08h00 à 09h00 , 09h00 étant déjà réservé ...
J'ai essayé de palier ce soucis en testant les tranches de réservation sur
- HeureDeb + 1 min - HeureFin - 1 min
Exemple : Un rendez vous pris de 08h00 à 09h00 sera tester sur la tranche 08h01 à 08h59...
D'où les tests et le formatage du départ...
Mais du coup le requête est devenu trop permissive...
J'en appelle donc à vos lumiére , à vos expériences ...
Comment gérer ce cas ?
Une requête est elle suffisante, ou faut-il obligatoirement passé par du code ? ( PHP pour ce qui me concerne)
Merci d'avance pour vos réponses.
Amicalement
Jérémy