1) Вам нужно как-то указать, что событие охватывает более 1 даты.
например: span: int
2) измените свой поиск таким образом, чтобы вы включали дату диапазона (т. Е. Где день между началом дня и началом дня + диапазон-1) Вы можете выполнить итерацию запроса и поместить каждую строку в массив массивов, по одному на каждый день месяца; дублируя те, которые охватывают более одного дня.
3) еще один способ создания календаря - поиск по всему месяцу за один раз и использование PHP для его нарезки вместо SQL:
(обратите внимание, я очистил ваш PHP / SQL. Вам не нужно выпадать из строк, и если столбцы день, месяц и год являются целыми числами, вам не нужно их заключать в кавычки)
$sql = "SELECT * FROM events WHERE month=$cMonth AND year=$cYear ORDER BY day";
$query = mysql_query($sql);
$cday = 90;
while ($row = mysql_fetch_assoc($query))
{
$day = $row['day'];
if ($day != $cday)
{
// I'll leave as an exercise how figure out how to output day in particular slot
$day = $cday;
}
}
4) в приведенном выше примере, если вы хотите рассмотреть диапазон, вы можете, например:
$prev_month = ???; $prev_year= ???; $prev_month_days= ???;
$sql = "SELECT * FROM events
WHERE (month=$cMonth AND year=$cYear)
OR ( month= $prev_month and year=$prev_year and day>($prev_month_days - span) )
ORDER BY day";
веселись.