【问题标题】:fullCalendar events post method to MySQLfullCalendar 事件发布方法到 MySQL
【发布时间】:2012-10-31 14:06:15
【问题描述】:

我正在尝试使用 fullCalendar 和 MySQL 创建一个 MySQL 支持的事件接口。我尝试操作 fullCalendar 文档中的示例,并成功地从我的数据库中创建了一个事件源。

我现在正在尝试创建一个eventDrop 调用,它将事件ID、标题和开始时间发送到数据库。我使用之前question 中的代码来创建eventDrop 调用,这是整个callendar 页面的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(Y-m-d T H:i:s , strtotime($start)+900);

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

数据库没有接收到事件数据。

【问题讨论】:

    标签: php jquery mysql fullcalendar


    【解决方案1】:

    这是我得出的结论,在我的测试和公共服务器上运行它没有问题。 我采用了 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);
    ?>
    

    【讨论】:

      【解决方案2】:

      print $query - 最后应该有一个;

      【讨论】:

      • 请把这些单行答案放在评论里
      【解决方案3】:

      一旦删除插入查询中的列名并尝试,如果你没有得到那么让我们考虑一下。做这样的事情

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

      在插入之前打印帖子值,如果看起来很清楚,然后检查您的查询。

      回显查询并退出,你可能会得到这样的结果

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

      运行此查询以查找错误(如果有)

      【讨论】:

      • 感谢您的回答。我想我理解并开始使用直接值测试我的提交文件并检查数据库,但没有运气。我已将 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 events` VALUES ($id, $title, $start, $end, ``)"; mysql_query($query); print $query `直接通过 url 传递变量时出现内部服务器错误?
      猜你喜欢
      • 1970-01-01
      • 2011-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-07
      • 1970-01-01
      • 2021-08-16
      相关资源
      最近更新 更多