6

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>

そして私のJSONPHPファイル(日付の後の時間を含めていることに注意してください。現在、そのフィールドは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);
?>
4

3 に答える 3

12

'allDay':falseをjsonに追加してみてください。同じ問題が発生しました。具体的には「allDay」のドキュメントを参照してください。

真/偽の前後に引用符を含めないでください。この値は文字列ではありません!

イベントまたはeventSourcesにイベントオブジェクトを指定する場合、このプロパティを省略すると、allDayDefaultから継承されます。これは通常falseです。

ただし、「allDayDefault」のデフォルトはtrue?!?

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

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

于 2010-06-10T19:47:54.453 に答える
1

カレンダーを作成するときにallDayDefaultとして設定できます。false

$('#calendar').fullCalendar({
   allDayDefault: false,
   event: ...
});
于 2013-06-10T13:46:48.643 に答える
-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}]
于 2011-12-22T04:57:06.370 に答える