FullCalendar と PHP との連携
FullCalendar とは、JavaScript で書かれたカレンダーライブラリ。 jQuery のプラグインとして利用する。
http://arshaw.com/fullcalendar/
FullCalendar を描画する際に、PHP からイベントデータを取得してみる。FullCalendar 側は、データの取得元の URL を events に記述するだけ。今回は、付属のサンプルと同じ json-events.php とした。
index.html:
<html> <head> <link rel='stylesheet' type='text/css' href='fullcalendar.css' /> <script type='text/javascript' src='jquery.js'></script> <script type='text/javascript' src='jquery-ui-custom.js'></script> <script type='text/javascript' src='fullcalendar.min.js'></script> <script type='text/javascript'> $(document).ready(function() { $('#calendar').fullCalendar({ header: { left: 'prev,next today', center: 'title', right: 'month,basicWeek,basicDay' }, events: 'json-events.php' }); }); </script> </head> <body> <div id='calendar'></div> </body> </html>
PHP 側は、 カレンダーの表示期間を "start" と "end" パラメータで受け取り、その期間にあるイベントデータを JSON 形式で返す。
<?php // カレンダー開始日時 $start = date('Y-m-d H:i:s', $_GET['start']); // カレンダー終了日時の1秒前 $end = date('Y-m-d H:i:s', $_GET['end'] - 1); // イベントデータを出力 echo json_encode(array( array( 'title' => "start:" . $start, 'start' => $start ), array( 'title' => "end:" . $end, 'start' => $end, ) ));
気づいた点:
FullCalendar が PHP からイベントデータを取得するタイミングは、元々取得した期間と異なる場合のみ。はじめに1ヶ月分表示して、週表示に切り替えただけでは、PHP へのアクセスは発生しない。