2010-05-18 19 views
6

Saludos,FullCalendar no se muestra el tiempo de los eventos JSON

Uso FullCalendar (http://arshaw.com/fullcalendar/) para tirar de eventos desde una tabla de base de datos MySQL a través de JSON. Los eventos se muestran en el calendario, pero por alguna razón ignora el tiempo (horas, minutos, segundos) del evento. Aquí está el código JavaScript de la página del calendario -

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

y mi PHP JSON archivo (en cuenta que yo estoy incluyendo el tiempo después de la fecha, actualmente ese campo se establece como la fecha solamente):

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

Las salidas anteriores:

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

¡Gracias!

Editar

Aquí es el PHP modificado para reflejar la solución aceptada. ¡Gracias!

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

gracias por compartir los temas que me gracias – Devjosh

+0

ayudaron noche, ¿Es posible darme una instantánea de su base de datos, para ver exactamente cómo debería diseñarla en función de su código? –

Respuesta

12

Prueba agregar 'allDay': false a su json. Tuve el mismo problema, consulte específicamente la documentación de 'allDay':

No incluya comillas alrededor de su verdadero/falso. ¡Este valor no es una cadena!

Al especificar Event Objects para eventos o eventSources, omitir esta propiedad hará que herede de allDayDefault, que normalmente es falso.

Sin embargo, por defecto 'allDayDefault' a cierto?!?

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

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

+0

¡Gracias, eso funcionó! Lamento que haya tardado tanto en aceptar su solución, se desvió. Ver edición para mi PHP revisado, si está interesado. :) – NightMICU

+0

@gracias Jared Knipp realmente me salvó bwoooh !!! – Devjosh

+0

Dos años y medio después, tu comentario resolvió mi problema. A saber, el hecho de que 'True'' False' no son cadenas. Gracias :) – Garfonzo

-1

Los guiones en fechas no son válidos. En lugar de:

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

debe ser:

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

puede establecer el allDayDefault como false al crear el calendario:

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