2010-05-18 30 views
6

Greetings,FullCalendar không hiển thị thời gian thực từ các sự kiện JSON

Sử dụng FullCalendar (http://arshaw.com/fullcalendar/) để kéo các sự kiện từ một bảng cơ sở dữ liệu MySQL qua JSON. Các sự kiện đang được hiển thị trong lịch nhưng vì một số lý do nó bỏ qua thời gian (giờ, phút, giây) của sự kiện. Đây là Javascript từ trang lịch -

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

và PHP JSON tôi tập tin (lưu ý rằng tôi đang kể cả thời gian sau ngày, hiện trường được thiết lập như NGÀY chỉ):

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

Các kết quả đầu ra ở trên:

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

Cảm ơn!

Sửa

Đây là PHP được sửa đổi để phản ánh các giải pháp chấp nhận. Cảm ơn!

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

nhờ để chia sẻ những vấn đề đó đã giúp tôi nhờ – Devjosh

+0

Đêm, là có thể cho tôi một bản chụp cơ sở dữ liệu của bạn, để xem chính xác cách tôi nên thiết kế nó dựa trên mã của bạn. –

Trả lời

12

Thử thêm 'allDay': false vào json của bạn. Tôi gặp vấn đề tương tự, xem tài liệu 'allDay' cụ thể:

Không bao gồm dấu ngoặc kép quanh đúng/sai của bạn. Giá trị này không phải là một chuỗi!

Khi chỉ định Đối tượng sự kiện cho sự kiện hoặc eventSources, bỏ thuộc tính này sẽ làm cho nó kế thừa từ allDayDefault, thường là sai.

Tuy nhiên, 'allDayDefault' mặc định là đúng?!?

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

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

+0

Cảm ơn, điều đó đã làm được điều đó! Xin lỗi đã mất quá nhiều thời gian để chấp nhận giải pháp của bạn, bị bỏ qua. Xem chỉnh sửa cho PHP sửa đổi của tôi, nếu bạn quan tâm. :) – NightMICU

+0

@thanks Jared Knipp nó thực sự đã cứu tôi bwoooh !!! – Devjosh

+0

Hai năm rưỡi sau, nhận xét của bạn đã giải quyết được vấn đề của tôi. Cụ thể, thực tế là 'True'' False' không phải là chuỗi. Cảm ơn :) – Garfonzo

-1

Dấu gạch ngang trong ngày là không hợp lệ. Thay vì:

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

nên là:

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

Bạn có thể đặt allDayDefault như false khi tạo lịch:

$('#calendar').fullCalendar({ 
    allDayDefault: false, 
    event: ... 
}); 
Các vấn đề liên quan