網頁

2013年6月27日 星期四

PHP Calendar

寫一個月曆系統是有些難度的。稍微 Google 一下,也有不少 open sources code 可以使用,不過有些做的過於複雜,有些則是呈現上不符合自己的喜好。

找著找著,這位作者所做的 Build a Calendar Using PHP, XHTML, and CSS,就做的很棒,基本上可以拿這個當作基礎往上再自行發揮。作者從最為基本的操作、增加控制器到如何使用事件寫的很清楚。

我在實作這篇 Add Events to the PHP Calendar 時是有碰到一些問題 (作者並沒有將 SQL與Connection to MySQL With PHP Function 一同放上去,自訂的 SQL 與相關註記如下),在此稍微記錄一下:
  • 新增 MySQL Schema:
CREATE TABLE IF NOT EXISTS `events` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `title` varchar(100) COLLATE utf8_bin NOT NULL,
  `event_date` date NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
  • 新增與修改以下 PHP Script
$db_link = mysql_connect('127.0.0.1', 'root', 'password');
mysql_select_db('calendar', $db_link) or die('Could not select database.');
$month=sprintf("%02d",$month);//1 tobe 01

$query = "SELECT title, DATE_FORMAT(event_date,'%Y-%m-%d') AS event_date FROM events WHERE event_date LIKE '$year-$month%';";
PS,(1) 新增MySQL Connection function ;(2) 因為(int)宣告與 mysql 檢索條件的緣故,所以改為將 $month 變數內的數字自動補 0;(3) DATE_FORMAT(event_date,'%Y-%m-%D')改為DATE_FORMAT(event_date,'%Y-%m-%d'),後來發現改成 %d後也是有問題,使用%d的條件,在1-9的日期不會呈現在月曆上,需改成 %e 才可以,DATE_FORMAT(event_date,'%Y-%m-%e'),這樣才運作正常。

沒有留言:

張貼留言