2010-05-18 5 views
6

Grüße AnzeigenFullCalendar nicht Zeit von JSON Ereignisse

Mit FullCalendar (http://arshaw.com/fullcalendar/) über JSON Ereignisse aus einer MySQL-Datenbank-Tabelle zu ziehen. Die Ereignisse werden im Kalender angezeigt, ignorieren jedoch aus irgendeinem Grund die Zeit (Stunden, Minuten, Sekunden) des Ereignisses. Hier ist die Javascript von der Kalenderseite -

<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> 

und meine JSON PHP-Datei (beachten Sie, dass ich die Zeit nach dem Zeitpunkt bin auch, derzeit das Feld als Datum festgelegt only):

<?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); 
?> 

Die obigen Ausgänge:

[{"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"}] 

Vielen Dank!

bearbeiten

Hier ist die modifizierte PHP die akzeptierte Lösung zu reflektieren. Vielen Dank!

<?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

Dank für die Probleme, teilen sie mir geholfen, dank – Devjosh

+0

Nacht, ist es möglich, mir eine Momentaufnahme Ihrer Datenbank zu geben, um genau zu sehen, wie ich es basierend auf Ihrem Code entwerfen sollte. –

Antwort

12

Versuchen Sie, "allDay": false zu Ihrem JSON hinzuzufügen. Ich hatte das gleiche Problem, siehe 'AllDay' Dokumentation speziell:

Fügen Sie keine Anführungszeichen rund um Ihre wahren/falschen. Dieser Wert ist keine Zeichenfolge!

Wenn Sie Event Objects für Ereignisse oder eventSources angeben, wird diese Eigenschaft durch das Auslassen dieser Eigenschaft von allDayDefault erben, was normalerweise falsch ist.

jedoch 'allDayDefault' standardmäßig true?!?

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

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

+0

Danke, das hat den Trick gemacht! Es hat so lange gedauert, bis du deine Lösung akzeptiert hast. Siehe Bearbeiten für meine überarbeitete PHP, wenn Sie interessiert sind. :) – NightMICU

+0

@thanks Jared Knipp es rettete mich wirklich bwoooh !!! – Devjosh

+0

Zweieinhalb Jahre später hat Ihr Kommentar mein Problem gelöst. Nämlich die Tatsache, dass die 'True'' False' keine Strings sind. Vielen Dank :) – Garfonzo

-1

Dashes Reisedaten sind nicht gültig. Statt:

[{"id":"10", "title":"Urlaub", "start":"2010-11-24T07:30:00+01:00", 
    "end":"2010-11-24T16:15:00+01:00", "allDay":false}] 

Sollte sein:

[{"id":"10", "title":"Urlaub", "start":"2010 11 24 07:30:00+01:00", 
    "end":"2010 11 24 16:15:00+01:00", "allDay":false}] 
1

Sie die allDayDefault als false einstellen, wenn Sie den Kalender zu erstellen:

$('#calendar').fullCalendar({ 
    allDayDefault: false, 
    event: ... 
});