[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сравнить массив дат с датами текущего месяца
Batyabest
Здравствуйте.
Подскажите вот такой вопрос.
Есть код календаря, самый обыкновенный. Код прилагаю:

/* Функция генерации календаря */
function draw_calendar($month,$year){
/* Начало таблицы */
$calendar = '<table cellpadding="0" cellspacing="0" class="calendar">';
/* Заглавия в таблице */
$headings = array('ПН','ВТ','СР','ЧТ','ПТ','СБ','ВС');
$calendar.= '<tr class="calendar-row"><td class="calendar-day-head">'.implode('</td><td class="calendar-day-head">',$headings).'</td></tr>';
/* необходимые переменные дней и недель... */
$running_day = date('w',mktime(0,0,0,$month,1,$year));
$running_day = $running_day - 1;
$days_in_month = date('t',mktime(0,0,0,$month,1,$year));
$days_in_this_week = 1;
$day_counter = 0;
$dates_array = array();
/* первая строка календаря */
$calendar.= '<tr class="calendar-row">';
/* вывод пустых ячеек в сетке календаря */
for($x = 0; $x < $running_day; $x++):
$calendar.= '<td class="calendar-day-np"> </td>';
$days_in_this_week++;
endfor;
/* дошли до чисел, будем их писать в первую строку */
for($list_day = 1; $list_day <= $days_in_month; $list_day++):
$calendar.= '<td class="calendar-day">';
/* Пишем номер в ячейку */
$calendar.= '<div class="day-number">'.$list_day.'</div>';
/** ЗДЕСЬ МОЖНО СДЕЛАТЬ MySQL ЗАПРОС К БАЗЕ ДАННЫХ! ЕСЛИ НАЙДЕНО СОВПАДЕНИЕ ДАТЫ СОБЫТИЯ С ТЕКУЩЕЙ - ВЫВОДИМ! **/
$running_date = $year.'-'.$month.'-'.$running_day;
$query = mysql_query("select * from table where uid = 17");
while($result = mysql_fetch_assoc($query))
{
echo $result['date'];
}
/** ЗДЕСЬ МОЖНО СДЕЛАТЬ MySQL ЗАПРОС К БАЗЕ ДАННЫХ! ЕСЛИ НАЙДЕНО СОВПАДЕНИЕ ДАТЫ СОБЫТИЯ С ТЕКУЩЕЙ - ВЫВОДИМ! **/
$calendar.= str_repeat('<p> </p>',2);

$calendar.= '</td>';
if($running_day == 6):
$calendar.= '</tr>';
if(($day_counter+1) != $days_in_month):
$calendar.= '<tr class="calendar-row">';
endif;
$running_day = -1;
$days_in_this_week = 0;
endif;
$days_in_this_week++; $running_day++; $day_counter++;
endfor;
/* Выводим пустые ячейки в конце последней недели */
if($days_in_this_week < 8):
for($x = 1; $x <= (8 - $days_in_this_week); $x++):
$calendar.= '<td class="calendar-day-np"> </td>';
endfor;
endif;
/* Закрываем последнюю строку */
$calendar.= '</tr>';
/* Закрываем таблицу */
$calendar.= '</table>';

/* Все сделано, возвращаем результат */
return $calendar;
}


В середине кода я выполняю запрос к БД, в котором вытаскиваю все записи текущего пользователя.
Так вот вопросов несколько:
1. Почему он в результате echo выводит список полученных дат столько раз, сколько дней в месяце? То есть результаты он выводит все в каждой ячейке календаря.
2. Как мне сравнить дату из $result['date']; с датами текущего месяца.
3. и соответственно, если дата совпала, прописать какой-либо стиль этой ячейке.

P.S. Даты в БД в формате yyyy-mm-dd
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.