【问题标题】:Integrating jQuery fullcalendar into PHP website将 jQuery fullcalendar 集成到 PHP 网站中
【发布时间】:2009-11-03 09:12:18
【问题描述】:

我想将 jQuery fullcalendar 集成到我的 PHP 网站中,但我不知道如何处理该事件以及如何使用来自 MySQL 的 JSON 数据。

任何建议将不胜感激。

【问题讨论】:

  • 你指的是这个日历吗? redredred.com.au/projects/jquery-week-calendar
  • 如果真的很紧急,可以试试IRC频道blog.jquery.com/2007/02/17/the-jquery-irc-channel ...
  • 我们为什么要关心任务是否紧急?对我来说,这通常是回答问题的原因。如果您需要快速完成某项工作,请为自己找一些有偿支持。
  • @elzapp 是的,就是那个插件。
  • @Duroth 是的,你是对的。几天以来我一直在忍受它。我在这里寻求更多的想法和建议。非常感谢您的建议。

标签: php jquery calendar fullcalendar


【解决方案1】:

确保你的 PHP 可以输出 following HTML code:

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

这里是a sample,你可以通过使用 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/" 
      ) 

   ));

?>

【讨论】:

  • 非常感谢您的评论。但我认为你有一些误解,或者我没有描述得很清楚。我想添加 jquery weekcalendar 插件,并且有一个示例。一切都在那里。但我想让它与 mysql 数据库一起使用。非常感谢!!!!!!!
  • 取决于服务器,确保在 date(XXX) 调用之前有 date_default_timezone_set('America/YOUR_TZ');
【解决方案2】:

“2010-02-11 11:00:00”格式可以很好地为我指定时间(里面没有“T”), 解决方案的关键是将事件的“allDay”属性设置为空字符串。

【讨论】:

  • 哦,谢谢老兄,它救了我
【解决方案3】:

我遇到了同样的问题,只是发现了如何让它工作。 以下是您应该在 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);

希望对你有帮助:)。

【讨论】:

    【解决方案4】:

    在 PHP - JSON 中:

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

    【讨论】:

      【解决方案5】:

      回显事件的输出应采用以下格式:

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

      【讨论】:

        【解决方案6】:

        以这种方式实现它,它工作正常

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

        【讨论】:

          【解决方案7】:

          我不熟悉 jquery。但我认为问题在于您没有考虑 Ajax 的异步特性。

          除非 fullCalendar() 做了一些非常奇怪的事情(触发 Ajax 请求并等待响应),否则您将无法以这种方式在函数中使用外部源,因为 fullCalendar 将在服务器返回响应的时间。

          在“周历”网页上似乎没有明确的示例说明您尝试执行的操作,但我确信您需要创建没有事件的日历,但定义了用于添加事件的回调;然后以某种方式启动外部呼叫。

          【讨论】:

          • 感谢您的帖子。你有点表明我的问题。实际上,我无法添加/编辑/删除事件,也无法以json的方式从mysql中抓取数据。我会尽量安排和解决。谢谢。
          【解决方案8】:

          你好,我上面没有用过你的代码,但是在json_events.php中默认的,有 "[" 在 php 输出的开头和 "]" 在结尾.

          【讨论】:

            【解决方案9】:

            这个例子有效:

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

            【讨论】:

              【解决方案10】:

              我想你和我有同样的问题。我在网上搜索试图找出如何设置 DateTime 以便 fullCalendar javascript 正确解释它。 (这个页面有一些很好的线索:http://blog.stevenlevithan.com/archives/date-time-format)。

              我在 fullCalendar 问题页面上发布了这篇文章,希望创建者或其他任何人能对这个主题有所了解。

              ====================问题描述====================

              哪些步骤会重现问题?

              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 将事件解释为fullDayEvents。我发送的格式 JSON 是:2009-11-17T11:01:00

              【讨论】:

                【解决方案11】:

                万一有人使用带有 jbuilder 的 rails 来生成 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 解决方案!

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2011-10-07
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-09-22
                  • 1970-01-01
                  • 2012-05-05
                  相关资源
                  最近更新 更多