About Me

我的相片
台北市, Taiwan
我是方選,
方白科技(finebind tech.)共同創辦人,
臺大資管所畢,
希望能幫助更多的人!

FB: http://fb.com/function1122
LINE: http://bit.ly/1foeZft (手機開啟點擊網址自動加入)

最新15則讀者回應

最新文章

FUNction's 上課筆記

Label Cloud

Blog Archive

FeedBurner

追蹤者

[教學] 在PHP 中使用Google Calendar API - Part 3 檢視單一事件

FUNction 於 2008年7月17日 晚上9:40 發表
大綱:透過API 取得Google Calendar 的單獨事件
前言
經過前兩天的練習,樣子已經大概出來了,今天來做檢視單一事件的頁面,我想說不定你已經try 出來了!

檢視單獨事件資訊
我們希望在event.php 這頁列出單獨的事件,為了讓成是抓到事件,所以我們用?id=帶參數傳過去。

登入Google 服務&接變數
請開啟event.php 鍵入以下程式碼(跟上一篇一樣),為一要注意的是我在第二行加入$eventId,是從$_GET變數抓出來的值:
<?phpinclude('config.inc.php');
$eventId = $_GET['id'];

$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME; // 提供Calendar 的服務名稱
$client = Zend_Gdata_ClientLogin::getHttpClient($googleAccount, $googlePassword, $service);
$gdataCal = new Zend_Gdata_Calendar($client);?>


取得單一事件
請在上述程式碼尾端?>前加入以下程式碼:
//接下來這邊就是讀取某個事件的方法
$query = $gdataCal->newEventQuery();
$query->setUser($calendarID);
$query->setVisibility('private');
$query->setProjection('full');
$query->setEvent($eventId);

try {
$eventEntry = $gdataCal->getCalendarEventEntry($query);
}catch (Zend_Gdata_App_Exception $e) {
die($e);
}

需要注意的是這裡跟上一個範例不同的是使用getCalendarEventEntry 這個方法來讀取事件。我們使用setEvent()傳入$eventId 參數設定查詢事件,如果不給參數預設會抓最後被修改的事件。此外,我在這邊做一個try-catch,這是比較保險的做法,不過其實這裡不加是不會怎樣的。

建立網頁呈現
請接續程式碼,在?>下面加入以下html 語法
<html>
<head>
<meta http-equiv=" content="text/html; charset=utf-8"
<title>FUNction's Lab 讀取Google 行事曆 :: </title>
</head>
<body>
[<a href="./">上一頁</a>] [<a href="delete.php?id=">刪除</a>]
<hr />
</body>


加入PHP 語法
請在<hr />與</body>中加入以下PHP 程式,這裡其實跟上一篇大同小異,只是多讀取了開始時間(startTime)與結束時間(endTime),值得注意的是這兩個值跟地點(where)一樣是用foreach 讀取的。
<?php
echo "<h2>" . $eventEntry->title->text . "</h2>\n";
echo "<ul>\n";
echo "\t<li><b>內容:</b>".$eventEntry->content->text."</li>\n";
foreach ($eventEntry->where as $where) {
echo "\t<li><b>地點:</b>" . $where->valueString . "</li>\n";//地點
}
foreach ($eventEntry->when as $when) {
echo "\t<li><b>開始時間:</b>" . $when->startTime . "</li>\n";
echo "\t<li><b>結束時間:</b>" . $when->endTime . "</li>\n";
}
echo "\t<li><b>事件ID:</b>".basename($eventEntry->id->text)."</li>\n";
echo "</ul>\n";
?>
此外,如果要讀取修改的時間,我們可以使用$event->updated->text。

編輯網頁title 與刪除連結
幾乎大功告成了,最後為了使網頁標題能列出事件名稱,我們將
<title>FUNction's Lab 讀取Google 行事曆 :: </title>
修改成
<title>FUNction's Lab 讀取Google 行事曆 :: <?=$eventEntry->title->text?></title>


然後將刪除的連結設定傳入ID,原本如下(刪除在最後一天才會實做):
[<a href="delete.php?id=">刪除</a>]

改成
[<a href="delete.php?id=<?=basename($eventEntry->id->text)?>">刪除</a>]


結語
也許你覺得今天沒有學到很多,反正就凡事起頭難,那是因為你已經跟上了吧。接下來就是比較有趣的新增事件囉,敬請期待啦 :-)

範例程式下載:GClab-part-3.zip

上一篇[教學] 在PHP 中使用Google Calendar API - Part 2 取得事件列表
下一篇[教學] 在PHP 中使用Google Calendar API - Part 4 新增事件(含提醒) Tags: , , ,

讀者回應 ( 0 意見 )

張貼留言

如果沒有帳戶,建議使用「名稱/網址」留言喔^^