Интеграция jQuery fullcalendar в PHP-сайт

Я хотел бы интегрировать полный календар jQuery в свой PHP-сайт, но я не знаю, как обрабатывать событие и как использовать данные JSON из MySQL.

Любой совет будет принят во внимание.

Related of "Интеграция jQuery fullcalendar в PHP-сайт"

Убедитесь, что ваш PHP может выводить HTML-код :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> <script> $(document).ready(function(){ $('#example').calendar(); }); </script> </head> <body> <link rel="stylesheet" href="http://dev.jquery.com/view/trunk/themes/flora/flora.all.css" type="text/css" media="screen" title="Flora (Default)"> <script src="http://dev.jquery.com/view/trunk/plugins/calendar/jquery-calendar.js"></script> <input type="text" id="example" value="Click inside me to see a calendar" style="width:300px;"/> </body> </html> 

Вот пример того, как вы можете это сделать, используя json_encode:

 $(document).ready(function() { $('#calendar').fullCalendar({ draggable: true, 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(); } }); }); 

И вот код PHP:

 <?php $year = date('Y'); $month = date('m'); echo json_encode(array( array( 'id' => 1, 'title' => "Event1", 'start' => "$year-$month-10", 'url' => "http://yahoo.com/" ), array( 'id' => 2, 'title' => "Event2", 'start' => "$year-$month-20", 'end' => "$year-$month-22", 'url' => "http://yahoo.com/" ) )); ?> 

Формат «2010-02-11 11:00:00» отлично подходит для указания времени для меня (без «Т» внутри) ключом решения является установка атрибута «allDay» события на пустую строку.

У меня была такая же проблема, и я узнал, как заставить ее работать. Вот код, который вы должны использовать в своем php-файле:

 $query = "select * from events where accountNo = '$accountNo'"; $res = mysql_query($query) or die(mysql_error()); $events = array(); while ($row = mysql_fetch_assoc($res)) { $start = "2010-01-08T08:30"";//Here you have to format data from DB like this. $end = "2010-01-08T08:30";//This format works fine $title = $row['firstName']." ".$row['lastName']; $eventsArray['id'] = $row['id']; $eventsArray['title'] = $title; $eventsArray['start'] = $start; $eventsArray['end'] = $end; $eventsArray['allDay'] = ""; $events[] = $eventsArray; } echo json_encode($events); 

Я надеюсь, что это помогает :).

В PHP – JSON:

 $eventsArray['allDay'] = "false"; //doesn't work $eventsArray['allDay'] = false; //did the trick to have a NON FULL DAY correctly rendered!! 

вывод для эха события должен быть в таком формате:

 $('#calendar').fullCalendar({ events: [{ title: 'Awesome Event Title', start: new Date($start_year, $start_month, $start_day), or end: new Date(y, m, d), end: new Date($end_year, $end_month, $end_day) or end: new Date(y, m, d) }] }); 

реализуйте его таким образом, и он отлично работает

 $result = mysql_query("SELECT * FROM eventoform",$conexion); $array = array(); $i = 0; while ($row = mysql_fetch_array($result)) { $array[$i]=array("id"=>$row["id_evento"],"title"=>$row["NombreEvento"],"start"=>$row["FechaInicio"]." ".$row["HoraInicio"],"allDay"=>false,"description"=>$row["description"],"editable"=>true); $i++; } echo json_encode($array); 

Я не знаком с jquery. Но я думаю, проблема заключается в том, что вы не учитываете асинхронный характер Ajax.

Если fullCalendar () не делает что-то очень странное (срабатывает запрос Ajax и ждет ответа), тогда вы не сможете использовать внешний источник в функции таким образом, потому что fullCalendar будет завершен к моменту ответа возвращается с сервера.

Не кажется явным примером того, что вы пытаетесь сделать на веб-странице календаря недели, но я уверен, что вам нужно создать календарь без событий, но с обратным вызовом, определенным для добавления событий; а затем каким-то образом погасить внешний вызов.

Эй, я не использовал ваш код выше, но в json_events.php по умолчанию, есть «[» в начале вывода php и «]» в конце .

Этот пример работает:

 $sql= "SELECT id, title, start, DATE_FORMAT(start, '%Y-%m-%dT%H:%i' ) AS startDate FROM kalender ORDER BY startDate DESC"; $res = mysql_db_query($db, $sql, $conn) or die(mysql_error()); $events = array(); //important ! $start = "2010-05-10T08:30"; iso8601 format !! while ($row = mysql_fetch_assoc($res)) { $eventArray['id'] = $row['id']; $eventArray['title'] = $row['title']; $eventArray['start'] = $row['startDate']; $events[] = $eventArray; } echo json_encode($events); 

Я думаю, что у тебя такая же проблема, как у меня. Я ищу в Интернете, пытаясь выяснить, как настроить DateTime так, чтобы jQuery fullCalendar правильно интерпретировал его. (На этой странице были некоторые подсказки: http://blog.stevenlevithan.com/archives/date-time-format ).

Я разместил это на странице проблем с полным календарем, надеясь, что создатель или кто-то еще прольет свет на эту тему.

==================== ОПИСАНИЕ ВЫПУСКА ====================

Какие шаги воспроизведут проблему?

  1. Выбор событий с использованием JSON
  2. используйте эту строку JSON:
 [{"id":2, "title":"title of 2","start":"2009-11-17T10:00:00" ,"end":"2009-11-17T11:01:00","url":"?eventID=2"}] 

Каков ожидаемый результат? Что ты видишь вместо этого?

  • Я ожидаю, что событие появится в календаре со временем начала 10:00 и временем окончания 11:01.
  • Он появляется как событие на весь день.

Какую версию продукта вы используете? В какой операционной системе?

  • FullCalendar v1.4.1
  • Windows XP

Пожалуйста, укажите дополнительную информацию здесь.

Я использую страницу aspx для извлечения событий календаря. Я предполагаю, что что-то не так с форматом объекта JavaScript DateTime который я возвращаю в JSON и что это приводит к fullcalendar что fullcalendar интерпретирует события как fullDayEvents . Формат, который я отправляю в JSON : 2009-11-17T11:01:00 .

на всякий случай, если кто-то использует рельсы с jbuilder для генерации json-фида … вам нужно добавить атрибут allDay

 json.array!(@resubmissions) do |object| json.id object.id json.title "WVL - #{object.to_s}" json.start object.resubmission_at.to_i json.allDay false end 

Однако, спасибо за решение PHP!