问候,
使用FullCalendar(http://arshaw.com/fullcalendar/)通过JSON从MySQL数据库表中提取事件。事件正在日历中显示,但由于某种原因,它忽略了事件的时间(小时,分钟,秒)。这是日历页面中的Javascript -
<script type='text/javascript'>
$(document).ready(function() {
$('#calendar').fullCalendar({
editable: false,
events: "json-events.php",
eventDrop: function(event, delta) {
alert(event.title + ' was moved ' + delta + ' days\n' +
'(should probably update your database)');
},
loading: function(bool) {
if (bool) $('#loading').show();
else $('#loading').hide();
}
});
});
</script>
和我的JSON PHP文件(注意我包括日期之后的时间,目前该字段仅设置为DATE):
<?php
include $_SERVER['DOCUMENT_ROOT'] . '/includes/pdo_conn.inc.php';
$getEventsSQL = $db->query("SELECT id, title, date_start AS start, date_end AS end FROM training");
$events = array();
while ($row = $getEventsSQL->fetch()) {
$start = $row['start'];
$end = $row['end'];
$title = $row['title'];
$eventsArray['id'] = $row['id'];
$eventsArray['title'] = $title;
$eventsArray['start'] = $start . " 13:00:00";
$eventsArray['end'] = $end . " 14:00:00";
$eventsArray['url'] = "http://somewhere.org";
$events[] = $eventsArray;
}
echo json_encode($events);
?>
以上输出:
[{"id":"13","title":"Test 1","start":"2010-05-18 13:00:00","end":"0000-00-00 14:00:00","url":"http:\/\/tapp-essexvfd.org"},{"id":"14","title":"Test 2","start":"2010-06-18 13:00:00","end":"2010-06-19 14:00:00","url":"http:\/\/tapp-essexvfd.org"},{"id":"15","title":"Test 3","start":"2010-06-18 13:00:00","end":"0000-00-00 14:00:00","url":"http:\/\/somewhere.org"},{"id":"16","title":"test4","start":"2010-05-03 13:00:00","end":"0000-00-00 14:00:00","url":"http:\/\/somewhere.org"}]
谢谢!
修改
这是修改后的PHP,以反映已接受的解决方案。谢谢!
<?php
include $_SERVER['DOCUMENT_ROOT'] . '/includes/pdo_conn.inc.php';
$getEventsSQL = $db->query("SELECT id, title, date_start AS start, time FROM events WHERE date_start >= NOW() AND status = 1");
$events = array();
while ($row = $getEventsSQL->fetch()) {
$start = $row['start'];
$title = $row['title'];
$eventsArray['id'] = $row['id'];
$eventsArray['title'] = $title;
$eventsArray['start'] = $start . " " . $row['time'];
$eventsArray['end'] = $end;
$eventsArray['url'] = "#";
$eventsArray['allDay'] = false;
$events[] = $eventsArray;
}
echo json_encode($events);
?>
答案 0 :(得分:12)
尝试将“allDay”:false添加到您的json中。我遇到了同样的问题,具体请参阅'allDay'文档:
请勿在true / false附近加上引号。这个值不是字符串!
为事件或eventSources指定事件对象时,省略此属性将使其继承自allDayDefault,通常为false。
但是,'allDayDefault'默认为true?!?
http://arshaw.com/fullcalendar/docs/event_data/Event_Object/
http://arshaw.com/fullcalendar/docs/event_data/allDayDefault/
答案 1 :(得分:1)
您可以在创建日历时将allDayDefault
设置为false
:
$('#calendar').fullCalendar({
allDayDefault: false,
event: ...
});
答案 2 :(得分:-1)
日期中的破折号无效。而不是:
[{"id":"10", "title":"Urlaub", "start":"2010-11-24T07:30:00+01:00",
"end":"2010-11-24T16:15:00+01:00", "allDay":false}]
应该是:
[{"id":"10", "title":"Urlaub", "start":"2010 11 24 07:30:00+01:00",
"end":"2010 11 24 16:15:00+01:00", "allDay":false}]