2012-11-12 18 views
5

FullCalendar ve MySQL kullanarak bir MySQL destekli olay arayüzü oluşturmaya çalışıyorum. Örnekleri fullCalendar belgelerinde manipüle etmeye çalıştım ve veritabanımdan bir etkinlik feed'ini başarıyla oluşturdum.fullCalendar olayları MySQL yöntemine yöntem gönder

Şimdi veritabanı için bir olay kimliği, başlık ve başlangıç ​​saati gönderen bir eventDrop çağrısı oluşturmaya çalışıyorum. Ben burada bütün Callendar sayfası için JavaScript'tir, eventDrop çağrıyı oluşturmak için bir önceki question kodunu kullandı:

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

Ben POST verilerini almak ve sonu olan veritabanına ekleyin ümit PHP dosyası (aşağıdaki yanıt sonra düzenlenmiş) başlangıç ​​zamanına ve 15 dakika eşit süresi:

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

veritabanı olayı verilerin alınması değildir.

cevap

7

Bu bir ; olmalı Buraya geldiğim sonuç ve test ve kamu sunucumdan bunu çalıştırırken sorunum yok. FullCalendar’u aldım ve bu benim kullandığım format.

Veritabanı gerçekten basit.

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

Bu index.php veya index.html dosyasıdır.

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

Bu, json.php dosyasıdır.

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

Ekleme sorgusunda sütun adlarını bir kez kaldırın ve deneyin, eğer elde edemiyorsanız, üzerine düşünelim. açık görünüyorsa Tam o Sorgunuzla kontrol, takmadan önce yazılan değerleri yazdırmak bu

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

gibi bir şey vermeyin.

, bu

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

Run gibi bir şey hataları bulmak için bu sorgu alabilirsiniz sorgu ve çıkış yankı varsa

+0

Cevabınız için teşekkürler. Gönderdiğim dosyayı doğrudan değerlerle test etmeye başladım ve şansa gerek kalmadan veritabanını kontrol etmeye başladım. Php dosyasını şu şekilde değiştirdim: '$ id = $ _POST ['id']; $ title = $ _POST ["title"]; $ başlangıç ​​= $ _POST ["başlangıç"]; $ end = tarih (Y-m-d T H: i: s, strtotime ($ başlangıç) +900); $ query = "INSERT INTO' olaylar "VALUES (' $ id', '$ title',' $ start', '$ end',' '); mysql_query ($ query); print $ sorgu 'Değişkenleri doğrudan URL aracılığıyla iletirken bir iç sunucu hatası alıyorum? – SlartyBartfast

0

print $query - uca

+3

lütfen yorumda bu tür bir cevap verin –

İlgili konular