Przekonasz się, że wygenerowanie listy dostępnych dni w MySQL jest dość trudne. Zamiast tego zalecam wybranie uporządkowanej listy zarezerwowanych dni w żądanym miesiącu, a następnie zapętlenie wszystkich dni tego miesiąca w PHP, pomijając dzień, jeśli pasuje do następnego zarezerwowanego dnia z zapytania MySQL. Odpowiedź na to pytanie pomoże Ci zbudować daty, po których chcesz zapętlić się w PHP. W pseudokodzie:
$booked_days = sql(select all booked days in month order by day);
for each $day in month {
if $day != current($booked_days) {
// $day is not booked
} else advance_next($booked_days);
}
Aby sprawdzić, czy możliwa jest nowa rezerwacja, możesz zapoznać się z moją odpowiedzią na bardzo podobne pytanie wcześniej dzisiaj.