2013-02-28 61 views
0

我创建一个PHP的事件日历。我有日历工作完美但是我的事件都不会显示(现在我只在2013年2月28日有一个测试事件)活动日程表没有显示事件

我有一种感觉,它与DATE_FORMAT有关,但我可以提供任何帮助得到将不胜感激。

您可以查看http://nitelifeconcepts.com/scrg/calendar.php

日历的一部开拓创新的代码来自http://davidwalsh.name/php-event-calendar。但是通过它看起来像其他人的意见阅读了同样的问题没有自己的解决方案,似乎为我工作

而且我的代码:

<html> 
<head> 
<title>SCRG EVENTS</title> 
<link rel="stylesheet" type="text/css" href="calendar.css"> 
<script type="text/javascript"> 
    var GB_ROOT_DIR = "http://nitelifeconcepts.com/scrg/greybox/"; 
</script> 
<script type="text/javascript" src="greybox/AJS.js"></script> 
<script type="text/javascript" src="greybox/AJS_fx.js"></script> 
<script type="text/javascript" src="greybox/gb_scripts.js"></script> 
<link href="greybox/gb_styles.css" rel="stylesheet" type="text/css" /> 
</head> 
<body> 
<?php 
/* Open up a connection to the mysql database on the same server as website */ 
$db_link = mysql_connect(XXXX, XXX, XXX) 
    or die("Unable to connect to mysql database"); 

/* Select our database (there is more than one in my server) */ 
mysql_select_db("db156115_scrg", $db_link); 
/* draws a calendar */ 
function draw_calendar($month,$year,$events = array()){ 

    /* 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">&nbsp;</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"><div style="position:relative;height:100px;">'; 
     /* add in the day number */ 
     $calendar.= '<div class="day-number">'.$list_day.'</div>'; 

    $event_day = $year.'-'.$month.'-'.$list_day; 
     if(isset($events[$event_day])) { 
     foreach($events[$event_day] as $event) { 
      $calendar.= '<div class="event">'.$event['Title'].'</div>'; 
     } 
     } 
     else { 
     $calendar.= str_repeat('<p>&nbsp;</p>',2); 
     } 
    $calendar.= '</div></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">&nbsp;</td>'; 
    endfor; 
    endif; 

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


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

    /** DEBUG **/ 
    $calendar = str_replace('</td>','</td>'."\n",$calendar); 
    $calendar = str_replace('</tr>','</tr>'."\n",$calendar); 

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

function random_number() { 
    srand(time()); 
    return (rand() % 7); 
} 

/* date settings */ 
$month = ($_GET['month'] ? $_GET['month'] : date('m')); 
$year = ($_GET['year'] ? $_GET['year'] : date('Y')); 
if($month < 10) 
    $month = '0'.$month; 

/* 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 &gt;&gt;</a>'; 

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


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

/* get all events for the given month */ 
$events = array(); 
$query = "SELECT Title, DATE_FORMAT(eventDate,'%y-%m-%d') AS eventDate FROM eventcalendar WHERE eventDate LIKE '$year-$month'"; 
$result = mysql_query($query,$db_link) or die('cannot get results!'); 
while($row = mysql_fetch_assoc($result)) { 
    $events[$row['eventDate']][] = $row; 
} 

echo '<h2 style="float:left; padding- right:30px;">'.date('F',mktime(0,0,0,$month,1,$year)).' '.$year.'</h2>'; 
echo '<div style="float:left;">'.$controls.'</div>'; 
echo '<div style="clear:both;"></div>'; 
echo draw_calendar($month,$year,$events); 
?> 
</body> 
</html> 

再次感谢您的帮助,您可以提供

+0

PHP'日期( 'Y')'返回一个4位数字的年份中,MySQL ['DATE_FORMAT'](http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions .html#function_date-format)的'%y'返回一个2位数的年份。我认为这可能是你的问题。如果不测试所有代码,我无法确定。你可以尝试在'DATE_FORMAT'调用中使用'%Y'吗? – andyb 2013-02-28 13:29:57

+4

您可能不应该在线发布您的数据库密码。 – 2013-02-28 13:30:06

+1

你也不应该使用mysql的家庭,他们将要废弃的函数(即使@andyb编辑它,你应该现在仍然改变这个密码,因为它是在这个职位的修订历史永远。)。请使用mysqli或上级PDO。 http://www.php.net/manual/en/intro.mysql.php – 2013-02-28 13:31:02

回答

0

试着改变你的日期设置位,以这样的:

if(isset($_GET['month'])) { 
$month = $_GET['month']; 
} else { 
$month = date('m'); 
} 
$month = str_pad($month,2,0,STR_PAD_LEFT); 

if(isset($_GET['year'])) { 
$year = $_GET['year']; 
} else { 
$year = date('Y'); 
} 

,摆脱该位的...

if($month < 10) 
$month = '0'.$month; 

我要提醒你,我没有太大的编码器!

+0

不幸的是什么,这似乎没有工作一个更大的问题,谢谢你虽然 – pistone10 2013-02-28 20:51:40

+0

嗯,在这种情况下,也许有一个更好的,更新的事件日历脚本! – Strawberry 2013-02-28 21:22:19