我想将 jQuery fullcalendar 集成到我的 PHP 网站中,但我不知道如何处理该事件以及如何使用来自 MySQL 的 JSON 数据。
任何意见,将不胜感激。
我想将 jQuery fullcalendar 集成到我的 PHP 网站中,但我不知道如何处理该事件以及如何使用来自 MySQL 的 JSON 数据。
任何意见,将不胜感激。
确保您的 PHP 可以输出以下HTML 代码:
<!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>
这是使用 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/"
)
));
?>
“2010-02-11 11:00:00”格式可以很好地为我指定时间(里面没有“T”),解决方案的关键是将事件的“allDay”属性设置为空字符串。
在 PHP - JSON 中:
$eventsArray['allDay'] = "false"; //doesn't work
$eventsArray['allDay'] = false; //did the trick to have a NON FULL DAY correctly rendered!!
我遇到了同样的问题,只是发现了如何使它工作。这是您应该在 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);
我希望它有所帮助:)。
回显事件的输出应采用以下格式:
$('#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)
}]
});
以这种方式实现它,它工作正常
$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);
我不熟悉jquery。但我认为问题在于您没有考虑到 Ajax 的异步特性。
除非 fullCalendar() 做了一些非常奇怪的事情(触发 Ajax 请求并等待响应),否则您将无法以这种方式在函数中使用外部源,因为 fullCalendar 将在响应时完成运行从服务器返回。
在 Week Calendar 网页上似乎没有明确的示例说明您尝试执行的操作,但我确信您需要创建没有事件的日历,但定义了用于添加事件的回调;然后以某种方式启动外部呼叫。
我想你和我有同样的问题。我在网上搜索试图找出如何设置 DateTime 以便 fullCalendar javascript 正确解释它。(这个页面有一些很好的线索:http: //blog.stevenlevithan.com/archives/date-time-format)。
我在 fullCalendar 问题页面上发布了这个,希望创建者或其他任何人能对这个主题有所了解。
====================问题描述====================
哪些步骤将重现该问题?
[{"id":2, "title":"title of 2","start":"2009-11-17T10:00:00" ,"end":"2009-11-17T11:01:00","url":"?eventID=2"}]
什么是预期的输出?你看到了什么呢?
您使用的是什么版本的产品?在什么操作系统上?
请在下面提供任何附加信息。
我正在使用一个 aspx 页面来获取日历事件。我的猜测是DateTime
我返回的 JavaScript 对象的格式有问题JSON
,这导致fullcalendar
将事件解释为fullDayEvents
. 我发送的格式
JSON
是:2009-11-17T11:01:00
.
嘿,我没有使用你上面的代码,但是在 json_events.php 中默认的,在 php 输出的开头有“[”,最后有“]”。
以防有人使用带有 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 解决方案!
这个例子有效:
$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);