全局长每周重复MySQL活动,以期在固定的时间内进行



编辑:现在,范围是一个数组,日期和时间现在为ISO8601的格式正确。不幸的是,带有Hastime的控制台上的同一错误消息。


我正在尝试使用FullCalendar制作学校时间表,并使用PHP从数据库中加载每个课程以编码为JSON。

我试图仅在学期(2016/09/26-2016/12/16)内的时间表上进行每周的每周一次。

以下是EventListrecurring.php

的输出
   [{
    "id": "1",
    "title": "History",
    "start": "09:00",
    "end": "10:00",
    "dow": "1",
    "ranges": [{
        "start": "2016-09-26",
        "end": "2016-12-16"
    }],
    "allDay": false
}, {
    "id": "2",
    "title": "English",
    "start": "10:00",
    "end": "12:00",
    "dow": "2",
    "ranges": [{
        "start": "2016-09-26",
        "end": "2016-12-16"
    }],
    "allDay": false
}, {
    "id": "3",
    "title": "Geography",
    "start": "14:00",
    "end": "16:00",
    "dow": "3",
    "ranges": [{
        "start": "2016-09-26",
        "end": "2016-12-16"
    }],
    "allDay": false
}]

我尝试使用以下JavaScript使用切片的解决方案,但是日历上没有事件,只获得此错误

calendArtiMetableRecurring

<!DOCTYPE html>
<html lang="en">
<head>
<title></title>
<meta charset="utf-8">
<link rel='stylesheet' href='fullcalendar/fullcalendar.min.css' />
<script src='fullcalendar/lib/jquery.min.js'></script>
<script src='fullcalendar/lib/moment.min.js'></script>
<script src='fullcalendar/fullcalendar.js'></script>
</head>
<body>
<h1>Reapeating Events Example </h1>
<div id='calendar'></div>
<script type="text/javascript">
var repeatingEvents = 
    'EventListRecurring.php'
var getEvents = function( start, end ){
    return repeatingEvents;
}
$('#calendar').fullCalendar({
    defaultDate: moment(),
    header: {
        left: 'prev,next today',
        center: 'title',
        right: 'month,agendaWeek,agendaDay'
    },
    defaultView: 'month',
    eventRender: function(event, element, view){
        console.log(event.start.format());
        return (event.ranges.filter(function(range){
            return (event.start.isBefore(range.end) &&
                    event.end.isAfter(range.start));
        }).length)>0;
    },
    events: function( start, end, timezone, callback ){
        var events = getEvents(start,end);
        callback(events);
    },
});

</script>   
</body>
</html>

EventListrecurring.php

<?php
$record[0]["title"]="History";
$record[1]["title"]="English";
$record[2]["title"]="Geography";
$record[0]["start_time"]="09:00";
$record[1]["start_time"]="10:00";
$record[2]["start_time"]="14:00";
$record[0]["end_time"]="10:00";
$record[1]["end_time"]="12:00";
$record[2]["end_time"]="16:00";
$record[0]["dow"]="1";
$record[1]["dow"]="2";
$record[2]["dow"]="3";
$record[0]["start_date"]="2016-09-26";
$record[1]["start_date"]="2016-09-26";
$record[2]["start_date"]="2016-09-26";
$record[0]["end_date"]="2016-12-16";
$record[1]["end_date"]="2016-12-16";
$record[2]["end_date"]="2016-12-16";
$record[0]["id"]="1";
$record[1]["id"]="2";
$record[2]["id"]="3";
for ($i=0; $i<3; $i++) {
    $event_array[] = array(
            'id' => $record[$i]['id'],
            'title' => $record[$i]['title'],
            'start' => $record[$i]['start_time'],
            'end' => $record[$i]['end_time'],
            'dow' => $record[$i]['dow'],
            'ranges' => array(
                0 => array(
                    'start' => $record[$i]['start_date'],
                    'end' => $record[$i]['end_date'],
                )
            ),
            'allDay' => false
    );

}
echo json_encode($event_array);

exit;
?>

您的"范围"属性的结构与您链接到的解决方案中的结构不同。您要返回一个对象,而不是一个数组:

"ranges": {
    "start": "2016-09-26",
    "end": "2016-12-16"
}

应该是

"ranges": [{
    "start": "2016-09-26",
    "end": "2016-12-16"
}]

修复此操作后,您的代码似乎运行良好并按预期工作。

您可以按以下方式修改PHP以创建此结构:

'ranges' => array(
    0 => array(
        'start' => $record[$i]['start_date'],
        'end' => $record[$i]['end_date'],
    )
)

最后,将您的数据源定义修改为:

events: "EventListRecurring.php"

现在,使用自定义数据源的方式是不必要的一个包含PHP脚本名称的字符串。它实际上不是在调用该脚本。

相关内容

  • 没有找到相关文章