FullCalendar не отображает время из событий JSON - PullRequest
6 голосов
/ 18 мая 2010

Привет,

Использование FullCalendar (http://arshaw.com/fullcalendar/)) для извлечения событий из таблицы базы данных MySQL через JSON. События отображаются в календаре, но по какой-то причине он игнорирует время (часы, минуты, секунды) события Вот 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);
?>

Ответы [ 3 ]

12 голосов
/ 10 июня 2010

Попробуйте добавить 'allDay': false к вашему json. У меня была та же проблема, см. Документацию 'allDay' специально:

Не включайте кавычки вокруг вашего истинного / ложного. Это значение не является строкой!

При указании объектов событий для событий или источников событий, если пропустить это свойство, оно наследуется от allDayDefault, что обычно ложно.

Однако для параметра allDayDefault по умолчанию установлено значение true?!?

http://arshaw.com/fullcalendar/docs/event_data/Event_Object/

http://arshaw.com/fullcalendar/docs/event_data/allDayDefault/

1 голос
/ 10 июня 2013

Вы можете установить allDayDefault как false при создании календаря:

$('#calendar').fullCalendar({
   allDayDefault: false,
   event: ...
});
0 голосов
/ 22 декабря 2011

Тире в датах не действительны.Вместо:

[{"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}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...