Hej hopp,
Detta är väl lite av en fortsättning på det problem jag ställde för några dagar sedan.
Jag har två datum som användaren har fyllt i i ett formulär, dessa ska sedan jämföras med databasen för att se att dem inte krockar med några datum som redan är inlagda.
Såhär ser dem aktuella kodraderna ut just nu:
$checkInDate = date('Ymd', mktime(0, 0, 0, $_POST['checkInMonth'], $_POST['checkInDay'], $_POST['checkInYear']));
$checkOutDate = date('Ymd', mktime(0, 0, 0, $_POST['checkOutMonth'], $_POST['checkOutDay'], $_POST['checkOutYear']));
$result = mysql_query("SELECT DISTINCT room_PK FROM rooms WHERE room_PK NOT IN (SELECT room_FK FROM bookings WHERE ('$checkInDate' BETWEEN checkInDate AND checkOutDate) OR ('$checkOutDate' BETWEEN checkInDate AND checkOutDate))");
while($row = mysql_fetch_array($result))
{
echo "" . $row['room_PK'] . "<br />";
}
Det är ett hotellbokningssystem, och datumen som användaren fyller i är dem dagar han/hon vill bo på hotellet. Dessa skall sedan jämföras mot existerande bokningar så att en lista över lediga rum kan visas. Denna lista skapas genom att visa alla dem rum där dem existerande in- och utcheckningsdatumen inte krockar med de datum användaren fyllt i.
Jag tänkte då att det vore enkelt att bara jämföra med between, först med det angivna incheckningsdatumet och ta fram dem rum där det inte ligger inuti den existerande bokningen, och sen en till between men för det angivna utcheckningsdatumet.
Jag är mycket osäker på SQL-satsen, det kanske inte går att köra två stycken between-jämförelser på detta sätt?
Finns det kanske något enklare sätt?