steelhomework
Новичок
Усовершенствование календаря
Доброго времени суток друзья!
У меня есть календарь и мне его нужно слегка усовершенствовать. Но я не сильно силён в программирование.
И вот запутался в некоторых местах. Календарь напоминает iPhone Calendar. Я сделал что бы показывались дни в начале недели предыдущего месяца. Но никак не могу сделать дни в конце недели следующего месяца.
Доброго времени суток друзья!
У меня есть календарь и мне его нужно слегка усовершенствовать. Но я не сильно силён в программирование.
И вот запутался в некоторых местах. Календарь напоминает iPhone Calendar. Я сделал что бы показывались дни в начале недели предыдущего месяца. Но никак не могу сделать дни в конце недели следующего месяца.
PHP:
/* draws a calendar */
function draw_calendar ($month, $year) {
/* draw table */
$calendar = "<table cellspacing='0'>\n\n";
/* table headings */
$headings = array ('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun');
$calendar .= "<thead>\n";
$calendar .= "<tr>\n";
$calendar .= "<th>";
$calendar .= "".implode ("</th>\n<th>", $headings)."";
$calendar .= "</th>\n";
$calendar .= "</tr>\n";
$calendar .= "</thead>\n\n";
/* days and weeks vars now ... */
$running_day = date ('w', mktime (0, 0, 0, $month, 1, $year)) - 1;
$days_in_month = date ('t', mktime (0, 0, 0, $month, 1, $year));
$days_in_prev_month = date ('t', mktime (0, 0, 0, $month - 1, 1, $year));
$days_in_next_month = date ('t', mktime (0, 0, 0, $month + 1, 1, $year));
$days_in_this_week = 1;
$day_counter = 0;
$dates_array = array ();
/* row for week one */
$calendar .= "<tbody>\n";
$calendar .= "<tr>\n";
/* print 'blank' days until the first of the current week */
for ($x = 0; $x < $running_day; $x++) :
//$calendar .= "<td class='padding'> </td>\n";
$calendar .= "<td class='padding'>".(($days_in_prev_month - ($running_day - 1)) + $x)."</td>\n";
$days_in_this_week++;
endfor;
$birthdays_file = "dat/birthdays.dat";
$reading = file ($birthdays_file);
$counting = count ($reading);
$i = 0;
do {
$events[] = explode ("|", $reading[$i]);
$i++;
} while ($i < $counting);
/* keep going with days.... */
for ($list_day = 1; $list_day <= $days_in_month; $list_day++) :
/* add in the day number */
if ($list_day == date('j')) :
if ($events) :
$calendar .= "<td class='date_has_event'>$list_day\n";
$calendar .= "<div class='events'>\n";
$calendar .= "<ul>\n";
$calendar .= "<li>\n";
$calendar .= "<span class='title'>".$events[0][0] . "." . $events[0][1] . "." . $events[0][2]."</span>\n";
$calendar .= "<span class='desc'>".$events[0][3]."</span>\n";
$calendar .= "</li>\n";
$calendar .= "</ul>\n";
$calendar .= "</div>\n";
$calendar .= "</td>\n";
else :
$calendar .= "<td class='today'>$list_day</td>\n";
endif;
else :
if ($events == 100) :
$calendar .= "<td class='date_has_event'>$list_day\n";
$calendar .= "<div class='events'>\n";
$calendar .= "<ul>\n";
$calendar .= "<li>\n";
$calendar .= "<span class='title'>".$events[0][2]."</span>\n";
$calendar .= "<span class='desc'>".$events[0][3]."</span>\n";
$calendar .= "</li>\n";
$calendar .= "</ul>\n";
$calendar .= "</div>\n";
$calendar .= "</td>\n";
else :
$calendar .= "<td>$list_day</td>\n";
endif;
endif;
if ($running_day == 6) :
$calendar .= "</tr>\n";
if (($day_counter+1) != $days_in_month):
$calendar .= "<tr>\n";
endif;
$running_day = -1;
$days_in_this_week = 0;
endif;
$days_in_this_week++; $running_day++; $day_counter++;
endfor;
/* finish the rest of the days in the week */
if ($days_in_this_week < 8 && $days_in_this_week != 1):
for ($x = 1; $x <= (8 - $days_in_this_week); $x++):
//$calendar .= "<td class='padding'> </td>\n";
$calendar .= "<td class='padding'>".(($days_in_next_month - $days_in_this_week) + $x)."</td>\n"; // Вот никак не могу справиться в этом месте. Не знаю с какого конца подойти...
endfor;
endif;
/* final row */
$calendar .= "</tr>\n";
$calendar .= "</tbody>\n\n";
/* table footings */
$calendar .= "<tfoot>\n";
$calendar .= "<tr>\n";
$calendar .= "<th>";
$calendar .= "".implode ("</th>\n<th>", $headings)."";
$calendar .= "</th>\n";
$calendar .= "</tr>\n";
$calendar .= "</tfoot>\n";
/* end the table */
$calendar .= "\n</table>\n";
/* all done, return result */
return $calendar;
}