kuzmit42
Мастер
- Регистрация
- 9 Янв 2013
- Сообщения
- 132
- Реакции
- 31
- Автор темы
- #1
Помогите пожалуйста выловить глюк, с добавлением лишней строки в календаре.
Скрин, сам скрипт, и пример кода прилепил.
Уже запарился не могу понять в чем причина, не могу поправить.
Подскажите пожалуйста кому не сложно.
Скрин, сам скрипт, и пример кода прилепил.
Уже запарился не могу понять в чем причина, не могу поправить.
Подскажите пожалуйста кому не сложно.
PHP:
<?php
/* Функция генерации календаря */
function draw_calendar($month,$year){
/* Начало таблицы */
$month_names=array("Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"); // Месяц буквами
$month_number=array("01","02","03","04","05","06","07","08","09","10","11","12"); // Месяц числом
$date = date("Y.m.d"); // Сегодняшняя дата
$god = "2015";
$tarif_s = $GLOBALS["tarif_s"];
//echo $date;
$calendar = '<section class="container">
<div class="cal">
<table class="cal-table">
<caption class="cal-caption">
<!--a href="index.html" class="prev">«</a>
<a href="index.html" class="next">»</a-->
'.$month_names[$month-1].'
</caption>
<tbody class="cal-body">';
/* Заглавия в таблице */
$headings = array('Пн','Вт','Ср','Чт','Пт','Сб','Вс');
// $calendar.= '<tr class=""><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;
if ($running_day == 0){
$running_day = 6;
}
else {
$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"><span> </span></td>';
$days_in_this_week++;
endfor;
/* дошли до чисел, будем их писать в первую строку */
for($list_day = 1; $list_day <= $days_in_month; $list_day++):
$calendar.= '<td>'; //$calendar.= '<td class="calendar-day">';
// Формируем нужную дату (добавляем ноль к дню)
if ($list_day <= 9) {
$day = "0".$list_day;
} else {
$day = $list_day;
}
$date_total = $year.".".$month_number[$month-1].".".$day;
$date_total_virus = "d".$year.$month_number[$month-1].$day;
if (($date_total >= $tarif_s) && ($date_total <= $date)) {
$calendar.= '<a href="#" class="day-a">'.$list_day.'</a>';
} else {
$calendar.= '<span class="day">'.$list_day.'</span>';
}
/* Пишем номер в ячейку */
// $calendar.= '<div class="day-number"><a href="#" title="'.$date_total.'">'.$list_day.'</a></div>';
/** ЗДЕСЬ МОЖНО СДЕЛАТЬ MySQL ЗАПРОС К БАЗЕ ДАННЫХ! ЕСЛИ НАЙДЕНО СОВПАДЕНИЕ ДАТЫ СОБЫТИЯ С ТЕКУЩЕЙ - ВЫВОДИМ! **/
$calendar.= str_repeat('',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"><span> </span></td>';
endfor;
endif;
/* Закрываем последнюю строку */
$calendar.= '</tr>';
/* Закрываем таблицу */
$calendar.= '</tbody></table></div></section>';
/* Все сделано, возвращаем результат */
return $calendar;
}
/* Вывод календаря по месяцам */
$god = "2015";
echo draw_calendar(1,$god);
echo draw_calendar(2,$god);
echo draw_calendar(3,$god);
echo "<br class=\"clr\" />";
echo draw_calendar(4,$god);
echo draw_calendar(5,$god);
echo draw_calendar(6,$god);
echo "<br class=\"clr\" />";
echo draw_calendar(7,$god);
echo draw_calendar(8,$god);
echo draw_calendar(9,$god);
echo "<br class=\"clr\" />";
echo draw_calendar(10,$god);
echo draw_calendar(11,$god);
echo draw_calendar(12,$god);
echo "<br class=\"clr\" />";
?>
Вложения
Последнее редактирование: