fullcalendar php,日历插件fullcalendar+php的使用教程 — 读取json数据

根据FullCalendar日历插件说明文档中的介绍,日历主体事件数据的来源有三,一是直接以javascript数组的形式显示日历事件,二是获取JSON数据形式显示日历事件,三是函数回调的形式显示日历数据,三种调用数据的方式各有所用之处,通常我们在实际项目中会结合数据库,通过PHP等后台语言来读取数据库的数据,并以json格式返回给前端,FullCalendar再处理接收的json数据显示在日历中。

HTML

一切像前面文章:日程安排FullCalendar介绍的一样,在页面中载入必要的javascript和css文件。

然后,在页面的body里加入div#calendar,用来放置日历主体。

jQuery

我们用以下代码调用FullCalendar,保存后浏览,我们可以看到页面中呈现一个漂亮的日历表,但是日历中没有具体的事件内容,我们使用FullCalendar最主要的是要在FullCalendar中展示日程安排中的事件,给用户直观的展示过去或未来时间内安排的事情。FullCalendar中的事件数据来源在events选项控制,当然如果是有多个数据来源可以使用eventSources选项。

$(function() {

$('#calendar').fullCalendar({

header: {//设置日历头部信息

left: 'prev,next today',

center: 'title',

right: 'month,agendaWeek,agendaDay'

},

firstDay:1,//每行第一天为周一

editable: true,//可以拖动

events: 'json.php'    //事件数据

});

});

PHP

从jQuery代码中我们可以看出,FullCalendar所有事件数据来自于json.php。json.php通过连接后台MySQL数据库,读取符合条件的事件数据,并最终以JSON数据格式的形式返回,请看代码:

include_once('connect.php');//连接数据库

$sql = "select * from calendar";

$query = mysql_query($sql);

while($row=mysql_fetch_array($query)){

$allday = $row['allday'];

$is_allday = $allday==1?true:false;

$data[] = array(

'id' => $row['id'],//事件id

'title' => $row['title'],//事件标题

'start' => date('Y-m-d H:i',$row['starttime']),//事件开始时间

'end' => date('Y-m-d H:i',$row['endtime']),//结束时间

'allDay' => $is_allday, //是否为全天事件

'color' => $row['color'] //事件的背景色

);

}

echo json_encode($data);

值得一提的是,在返回的json数据中,每个字段如id,title..对应着FullCalendar的Event Object事件对象中的属性id,title..。

我们将最终数据以json_encode()输出,然后,前端FullCalendar会解析json数据并显示在日历中,这些FullCalendar都替我们做好了,只管刷新前端页面看下效果吧。

FullCalendar的读取数据操作很简单,接下来我们会讲述如何在FullCalendar日历中新增、修改和删除事件,敬请关注。

最后附上demo中的MySQL数据表calendar的表结构:

CREATE TABLE IF NOT EXISTS `calendar` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`title` varchar(100) NOT NULL,

`starttime` int(11) NOT NULL,

`endtime` int(11) DEFAULT NULL,

`allday` tinyint(1) NOT NULL DEFAULT '0',

`color` varchar(20) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM  DEFAULT CHARSET=utf8

在使用PHP和MySQL以及FullCalendar插件实现日历拖动与数据保存时,首先需要确保已经正确安装了PHP和MySQL,并成功引入了FullCalendar插件。 为了让日历具备拖动功能,需要在FullCalendar的配置中设置"editable"属性为true。例如: ``` $('#calendar').fullCalendar({ editable: true, // 其他配置项 }); ``` 接着,在服务器端通过PHP来处理日历事件的拖动操作。当拖动日历事件后,FullCalendar会向服务器发送一个包含被拖动事件新的日期和时间的POST请求,我们需要在PHP中接收并处理这个请求。 首先,我们创建一个PHP脚本来处理这个请求。例如,我们假设这个脚本叫做"update_event.php": ```php <?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { $event_id = $_POST['event_id']; $new_start_date = $_POST['new_start_date']; $new_end_date = $_POST['new_end_date']; // 在这里更新数据库中对应的事件的起止日期 // ... echo json_encode(['status' => 'success']); } else { echo json_encode(['status' => 'error']); } ?> ``` 然后,在FullCalendar的配置中,我们需要设置一个事件回调函数来处理事件的更新。例如: ```javascript $('#calendar').fullCalendar({ // 其他配置项 eventDrop: function(event, delta, revertFunc) { $.ajax({ url: 'update_event.php', type: 'POST', data: { event_id: event.id, new_start_date: event.start.format(), new_end_date: event.end.format() }, success: function(response) { console.log('Event updated successfully.'); }, error: function() { revertFunc(); // 如果更新失败,则恢复事件的原始位置 console.log('Error updating event.'); } }); } }); ``` 这样,当用户拖动日历中的事件时,FullCalendar会自动发送一个AJAX请求到"update_event.php"脚本,该脚本会接收并处理这个请求,然后更新数据库中对应事件的起止日期。 以上就是使用PHP、MySQL和FullCalendar实现日历拖动与数据保存的基本步骤。根据具体需求,你可能还需要在数据库中创建对应的表格来存储日历事件,并在PHP脚本中实现事件的查询、插入和删除等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值