MySQLで利用可能な日のリストを生成するのはかなり難しいことがわかります。代わりに、希望する月内の予約日の順序付きリストを選択し、MySQLクエリから次の予約日と一致する場合はその日をスキップしてPHPでその月のすべての日をループすることをお勧めします。 この質問への回答 PHPでループする日付を作成するのに役立ちます。擬似コードの場合:
$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);
}
新しい予約が可能かどうかを確認するには、非常によく似た質問 今日の初め。