метод post-событий fullCalendar для MySQL

Я пытаюсь создать интерфейс поддерживаемых MySQL MySQL, используя fullCalendar и MySQL. Я попытался манипулировать примерами в документации fullCalendar и успешно создал фид событий из моей базы данных.

Теперь я пытаюсь создать вызов eventDrop который отправляет идентификатор события, заголовок и время запуска в базу данных. Я использовал код из предыдущего вопроса для создания вызова eventDrop , вот JavaScript для всей страницы календаря:

 $(document).ready(function() { /* initialize the external events -----------------------------------------------------------------*/ $('#external-events div.external-event').each(function() { // create an Event Object (http://arshaw.com/fullcalendar/docs/event_data/Event_Object/) // it doesn't need to have a start or end var eventObject = { title: $.trim($(this).text()) // use the element's text as the event title }; // store the Event Object in the DOM element so we can get to it later $(this).data('eventObject', eventObject); // make the event draggable using jQuery UI $(this).draggable({ zIndex: 999, revert: true, // will cause the event to go back to its revertDuration: 0 // original position after the drag }); }); /* initialize the calendar -----------------------------------------------------------------*/ $('#calendar').fullCalendar({ header: { left: 'prev,next today', center: 'title', right: 'month,agendaWeek,agendaDay' }, editable: true, droppable: true, // this allows things to be dropped onto the calendar !!! drop: function(date, allDay) { // this function is called when something is dropped // retrieve the dropped element's stored Event Object var originalEventObject = $(this).data('eventObject'); // we need to copy it, so that multiple events don't have a reference to the same object var copiedEventObject = $.extend({}, originalEventObject); // assign it the date that was reported copiedEventObject.start = date; copiedEventObject.allDay = allDay; // render the event on the calendar // the last `true` argument determines if the event "sticks" (http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/) $('#calendar').fullCalendar('renderEvent', copiedEventObject, true); // if so, remove the element from the "Draggable Events" list $(this).remove(); }, // events from mysql database events: "/json-events.php", // submit to database eventDrop: function(calEvent, jsEvent, view) { var method = 'POST'; var path = 'submit.php'; var params = new Array(); params['id'] = calEvent.id; params['start'] = calEvent.start; params['end'] = calEvent.end; params['title'] = calEvent.title; post_to_url( path, params, method); } }); }); 

Я надеюсь, что файл PHP получит данные POST и введет их в базу данных с конечным временем, равным времени начала плюс 15 минут (отредактировано после ответа ниже):

 <?php mysql_connect("") or die(mysql_error()); mysql_select_db("") or die(mysql_error()); $id = $_POST["id"]; $title = $_POST["title"]; $start = $_POST["start"]; $end = date(Ymd TH:i:s , strtotime($start)+900); $query = "INSERT INTO `events` VALUES (`$id`, `$title`, `$start`, `$end`, ``)"; mysql_query($query); print $query; ?> 

База данных не принимает данные события.

Это тот вывод, который я придумал, и у меня нет проблем с этим с моего тестового и общедоступного сервера. Я взял FullCalendar, и это формат, который я использую.

База данных очень проста.

 id integer 11 chars primary key auto-increment, title varchar 50, start varchar 50, end varchar 50, url varchar 50. 

Это файл index.php или index.html .

 <!DOCTYPE html> <html> <head> <link href='css/fullcalendar.css' rel='stylesheet' /> <link href='css/fullcalendar.print.css' rel='stylesheet' media='print' /> <script src='js/jquery-1.9.1.min.js'></script> <script src='js/jquery-ui-1.10.2.custom.min.js'></script> <script src='js/fullcalendar.min.js'></script> <script> $(document).ready(function() { $('#calendar').fullCalendar({ header: { left: 'prev,next today', center: 'title', right: 'month,agendaWeek,agendaDay' }, editable: true, events: "json.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> <style> body { margin-top: 40px; text-align: center; font-size: 14px; font-family: "Lucida Grande",Helvetica,Arial,Verdana,sans-serif; } #loading { position: absolute; top: 5px; right: 5px; } #calendar { width: 900px; margin: 0 auto; } </style> </head> <body> <div id='loading' style='display:none'>loading...</div> <div id='calendar'></div> <p>json.php needs to be running in the same directory.</p> </body> </html> 

Это файл json.php .

 <?php mysql_pconnect("localhost", "root", "") or die("Could not connect"); mysql_select_db("calendar") or die("Could not select database"); $rs = mysql_query("SELECT * FROM events ORDER BY start ASC"); $arr = array(); while($obj = mysql_fetch_object($rs)) { $arr[] = $obj; } echo json_encode($arr); ?> 

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

 mysql_query(INSERT INTO `events` VALUES ('$id', '$title', '$start', '$end', '')); 

Просто распечатайте значения сообщений перед вставкой, если это кажется ясным, а затем проверьте ваш запрос.

эхо запроса и выхода, вы можете получить что-то вроде этого

 mysql_query(INSERT INTO `events` VALUES ('23', 'event title', 'start date', 'end date', '')); 

Запустите этот запрос, чтобы найти ошибки, если они есть.

print $query – должен быть ; в конце