как запустить php-календарь в текущем месяце просмотра

я пытаюсь настроить календарь из http://davidwalsh.name/php-calendar-controls . Он предоставил отличный код, и на бумаге он кажется идеальным для того, что мне нужно. но я немного ржавый с моим php, и я получаю некоторые ошибки. это своего рода старая запись в блоге, поэтому я подумал, что могу получить более быстрый ответ здесь. вот код:

<?php

/* draws a calendar */
function draw_calendar($month,$year){

/* draw table */
$calendar = '<table cellpadding="0" cellspacing="0" class="calendar">';

/* table headings */
$headings = array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
$calendar.= '<tr class="calendar-row"><td class="calendar-day-head">'.implode('</td><td class="calendar-day-head">',$headings).'</td></tr>';

/* days and weeks vars now ... */
$running_day = date('w',mktime(0,0,0,$month,1,$year));
$days_in_month = date('t',mktime(0,0,0,$month,1,$year));
$days_in_this_week = 1;
$day_counter = 0;
$dates_array = array();

/* row for week one */
$calendar.= '<tr class="calendar-row">';

/* print "blank" days until the first of the current week */
for($x = 0; $x < $running_day; $x++):
    $calendar.= '<td class="calendar-day-np"> </td>';
    $days_in_this_week++;
endfor;

/* keep going with days.... */
for($list_day = 1; $list_day <= $days_in_month; $list_day++):
    $calendar.= '<td class="calendar-day">';
        /* add in the day number */
        $calendar.= '<div class="day-number">'.$list_day.'</div>';

        /** QUERY THE DATABASE FOR AN ENTRY FOR THIS DAY !!  IF MATCHES FOUND, PRINT THEM !! **/
        $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;

/* finish the rest of the days in the week */
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;

/* final row */
$calendar.= '</tr>';

/* end the table */
$calendar.= '</table>';

/* all done, return result */
return $calendar;
}



/* date settings */
$month = (int) ($_GET['month'] ? $_GET['month'] : date('m'));
$year = (int)  ($_GET['year'] ? $_GET['year'] : date('Y'));

/* select month control */
$select_month_control = '<select name="month" id="month">';
for($x = 1; $x <= 12; $x++) {
$select_month_control.= '<option value="'.$x.'"'.($x != $month ? '' : ' selected="selected"').'>'.date('F',mktime(0,0,0,$x,1,$year)).'</option>';
}
$select_month_control.= '</select>';

/* select year control */
$year_range = 7;
$select_year_control = '<select name="year" id="year">';
for($x = ($year-floor($year_range/2)); $x <= ($year+floor($year_range/2)); $x++) {
$select_year_control.= '<option value="'.$x.'"'.($x != $year ? '' : ' selected="selected"').'>'.$x.'</option>';
}
$select_year_control.= '</select>';

/* "next month" control */
$next_month_link = '<a href="?month='.($month != 12 ? $month + 1 : 1).'&year='.($month != 12 ? $year : $year + 1).'" class="control">Next Month >></a>';

/* "previous month" control */
$previous_month_link = '<a href="?month='.($month != 1 ? $month - 1 : 12).'&year='.    ($month != 1 ? $year : $year - 1).'" class="control"><<  Previous Month</a>';

/* bringing the controls together */
$controls = '<form method="get">'.$select_month_control.$select_year_control.' <input type="submit" name="submit" value="Go" />      '.$previous_month_link.'     '.$next_month_link.' </form>';


?>

я получаю сообщение об ошибке при первой загрузке календаря: Примечание: Неопределенный индекс: месяц в C:\wamp\www\david walsh calendar\draw_calendar.php в строке 70 и год в строке 71.

я пытался сделать что-то вроде:

if(!isset($month)){
$month = date(‘n’);
} else{
$month = (int) ($_GET['month'] ? $_GET['month'] : date(‘m’));

}

но это не сработало, он загружается правильно, но затем кнопки календаря перестают работать, чтобы перейти к следующему или предыдущему месяцу. Есть ли способ загрузить календарь в текущий месяц и год и при этом разрешить работу кнопок следующего и предыдущего месяца?

заранее спасибо всем, кто может пролить свет!


person Nick    schedule 20.02.2014    source источник


Ответы (3)


Измените строки 70 и 71 на:

/* date settings */
$month = (int) (isset($_GET['month']) ? $_GET['month'] : date('m'));
$year = (int)  (isset($_GET['year']) ? $_GET['year'] : date('Y'));

И добавьте в конец вашего файла:

echo $controls;
echo draw_calendar($month,$year);
person ncrocfer    schedule 20.02.2014

Добавьте это в конец кода:

echo $controls; echo draw_calendar($month,$year);
person Oladapo Omonayajo    schedule 20.02.2014

<?php
echo $mth[$mo]." ".$yr;
?>

Если это не сработает, обратитесь к этому для получения дополнительной помощи: http://www.epctutorials.com/

person AnOldSoul    schedule 20.02.2014