2014-02-20 23 views
0

即時嘗試從http://davidwalsh.name/php-calendar-controls設置日曆。他提供了一些很棒的代碼,並在紙上看起來很適合我需要的東西。但我有點生疏與我的PHP和即時通訊得到一些錯誤。它的一種舊博客文章,所以我想我可能會在這裏得到更快的響應。繼承人的代碼:如何在當前的月份查看器上啓動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 \戴維·沃爾什日曆\上線70和一年draw_calendar.php線71

我試圖做這樣的事情:

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

} 

,但沒有工作,它加載正確的,但隨後的日曆按鈕,停止工作,進入下一個或前一個月。無論如何,要在當前的月份和年份加載日曆,並仍然允許下個月和上個月的按鈕運行?

在此先感謝任何可以點亮的人!

回答

0

行更改和到:

/* 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); 
+0

感謝您的工作很棒! – Nick

0

添加到您的代碼的末尾:

echo $controls; echo draw_calendar($month,$year); 
相關問題