2012-11-12 12 views
5

fullCalendarとMySQLを使用して、MySQLバックアップイベントインターフェイスを作成しようとしています。私はfullCalendarのドキュメントの例を操作しようとし、データベースからイベントフィードを正常に作成しました。fullCalendarイベントをMySQLに送信する

私は現在、イベントID、タイトル、および開始時刻をデータベースに送信するeventDropコールを作成しようとしています。私はここで全体callendarページ用のJavaScriptで、eventDropコールを作成するために、以前のquestionからのコードを使用:

$(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); 
    } 
    });  
}); 

私はPOSTデータを受信し、最後にデータベースに挿入して望んだPHPファイル開始時間+ 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(Y-m-d T H:i:s , strtotime($start)+900); 

$query = "INSERT INTO `events` VALUES (`$id`, `$title`, `$start`, `$end`, ``)"; 
mysql_query($query); 
print $query; 
?> 

データベースにイベントデータが受信されていません。

答えて

7

これで;があるはずです私が思いついた結論であり、私はテストとパブリックサーバからこれを実行しても問題ありません。 私はFullCalendarを撮影しました。これは私が使用するフォーマットです。

データベースは本当に簡単です。

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

これはindex.phpindex.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); 
?> 
0

一度挿入クエリで列名を削除してからtryしないと、それについて考えましょう。このようなことをしてください

投稿する前に投稿値を印刷してください。明らかであれば、クエリを確認してください。

は、あなたがこの

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

のようなものを実行にどんな

+0

回答ありがとうございます。私は理解し、直接値で私の提出ファイルをテストし、運がないとデータベースをチェックし始めたと思います。私はPHPファイルを次のように変更しました: '$ id = $ _POST [" id "]; $ title = $ _POST ["title"]; $ start = $ _POST ["start"]; $ end = date(Y-m-d T H:i:s、strtotime($ start)+900); $ query = "INSERT INTO'イベント 'VALUE(' $ id'、 '$ title'、' $ start'、 '$ end'、' '); mysql_query($ query); print $ query 'URLを介して変数を直接渡すと内部サーバーエラーが発生しますか? – SlartyBartfast

0

print $query場合は、エラーを見つけるために、このクエリを得ることができ、クエリおよび終了をエコー - エンド

+3

コメントにこのような一行の答えを入れてください –

関連する問題