Pb dans un while

Résolu
ed1982 Messages postés 14 Date d'inscription samedi 20 août 2005 Statut Membre Dernière intervention 30 août 2007 - 23 août 2007 à 16:07
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 - 23 août 2007 à 16:37
Voila,
J ai fait un systeme de reservation de salles. dans un formulaire l utilisateur choisi sa date: $new_jour_reservation, son heure de debut et fin de reservation $new_debut_reservation  $new_fin_reservation. Ensuite les donnees sont recuperees et comparees avec celle de la bddafin d eviter que 2 pers aient reserve la salle le meme jour a la meme heure.
Mais voila,  dans le while, le prog compare chaque ligne de la bdd avec les nouvelles donnees, comment puis je faire pour que ce systeme compare avec toute la bdd et ensuite et seulement ensuite, si la date est libre qu il l ecrive dans la bdd? vous avez compris?

Voici mon code qui meme si la date n est pas libre, il renvoit 'cette date est deja prise' et l inscrit dans la bdd. Grr

$new_jour_reservation = $_POST['new_jour_reservation'];
$new_debut_reservation = $_POST['new_debut_reservation'];
$new_fin_reservation =  $_POST['new_fin_reservation'];
$idprofil = $_SESSION['idprofil'];
mysql_connect($db_host,$db_user,$db_pass) or die("Unable to connect to database");
mysql_select_db($database) or die( "Unable to select database");
$sql5="SELECT debut_reservation, fin_reservation, jour_reservation FROM salles";
$result5= mysql_query($sql5); 

while ($row5 = mysql_fetch_assoc($result5))
{
   $debut_reservation = $row5['debut_reservation'];
   $fin_reservation = $row5['fin_reservation'];
   $jour_reservation = $row5['jour_reservation'];
  
    if($new_jour_reservation==$jour_reservation)
        {
        if($fin_reservation>$new_fin_reservation and $new_fin_reservation>$debut_reservation)
        {header('Location: test.php');}
        elseif($new_debut_reservation<$debut_reservation and $new_fin_reservation>$fin_reservation)
        {header('Location: test.php');}
        elseif($fin_reservation>$new_debut_reservation and $new_debut_reservation>$debut_reservation)
        {header('Location: test.php');}
        elseif($new_debut_reservation>$debut_reservation and $new_fin_reservation<$fin_reservation)
        {header('Location: test.php');}
        elseif($new_debut_reservation==$debut_reservation)
        {header('Location: test.php');}
        elseif($new_fin_reservation==$fin_reservation)
        {header('Location: test.php');}
   
        }
   

}

mysql_query("INSERT INTO salles(salles_id, debut_reservation, fin_reservation, profil_id, jour_reservation) VALUES ('', '$new_debut_reservation', '$new_fin_reservation', '2', '$new_jour_reservation')");   
echo  "Votre demande de reservation a bien ete prise en compte. Vous avez reserve la salle de reunion le $new_jour_reservation de $new_debut_reservation a $new_fin_reservation ";

?>

ce serait tres gentil a vous de m aider parce que la je suis completment bloque!!

5 réponses

Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
23 août 2007 à 16:28
D'après ta base, dans ta requête SELECT, tu devras faire SELECT truc FROM machin WHERE salle = $x and ((fin > $datededébutdetareservation and fin < $datedefindetareservation) or (debut > $datededébutdetareservation and debut < $datedefindetareservation))

voilà :)
3
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
23 août 2007 à 16:23
Hello,

il ne faut pas faire tous ces calculs en php.

ce que tu dois faire, c'est faire un SELECT sur la salle à l'heure précise où tu la veux. Si MySQL te renvoie 0 ligne, tu fais ton INSERT, s'il y en a une, tu dis que c'est pris.

à+
0
ed1982 Messages postés 14 Date d'inscription samedi 20 août 2005 Statut Membre Dernière intervention 30 août 2007
23 août 2007 à 16:25
Oui mais, si une personne veut reserver de 15h30 a 17h30, et que la salle est prise de 15h00 a 17h00. il va me dire ok, et ca ca m ennuie...
0
ed1982 Messages postés 14 Date d'inscription samedi 20 août 2005 Statut Membre Dernière intervention 30 août 2007
23 août 2007 à 16:30
ok je pensais pas pouvoir faire ca comme ca, mais visiblement, ca a l air de coller, je vais essayer ca maintenant. Merci pour ton aide si rapide Evangun
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
23 août 2007 à 16:37
Je t'en prie :)
0
Rejoignez-nous