2011-08-24 58 views
0

我想爲我的數據庫中的每個事件創建一個動態iCal文件,具體取決於當前正在查看哪個事件,但由於某種原因,它不起作用。有任何想法嗎?在PHP中使用MySQL數據庫創建動態iCal

$current_event = $db->GetRow(false, "SELECT * FROM event WHERE eventid = ".$_GET['eventid']); 

$sql = "SELECT * FROM event WHERE eventid = '". $current_event['eventid'] ."'"; 
$data = $db->Query($sql); 
$regdata = $db->GetRow($data); 

$ical = "BEGIN:VCALENDAR 
VERSION:2.0 
PRODID:-//hacksw/handcal//NONSGML v1.0//EN 
METHOD:REQUEST 
BEGIN:VEVENT 
DTSTART:201T230000 
DTEND:20110101T01000 
SUMMARY:TOO 
LOCATION:Downtown 
DESCRIPTION:".$current_event['eventid']." 
SEQUENCE:0 
DTSTAMP:20101125T112600 
END:VEVENT 
END:VCALENDAR 
"; 

header("Content-Type: text/calendar;"); 
header("Content-Disposition: inline; filename=eventtooutlook.ics"); 
echo $ical; 
exit; 
+0

究竟什麼是行不通的?該文件從不下載?這是一個無效的ics?你有沒有嘗試過不同的日曆應用程序?你還嘗試過什麼? –

+0

目前我點擊這個文件的鏈接,它完全沒有任何內容,它會顯示一個404頁面的頁面,即使它是絕對正確的頁面。 – VACIndustries

+0

你能不能簡單地清空文件並做一個'echo「Hi OhN!!」;'?這將排除問題是代碼。 –

回答

0

還嘗試輸出第一

標題( 「HTTP/1.0 200 OK」);

我做了一個奇怪的問題,在我的代碼是本地服務器上的罰款,但隨後的遠程服務器上要麼有一個404或500取決於我做什麼,直到我從

頭(「OK」,真正的改變, 200)轉換爲上面的代碼。

原因可能是由於PHP的版本 - 無論如何,你沒有一個狀態頭,所以也許是這樣嗎?

(撇開:你的DTEND也缺少一個0)

+0

有趣的是,現在它下載,但是當我試圖用outlook打開它時,它踢回了一個錯誤,指出:無法導入vCalendar文件。如果您嘗試以iCalendar格式保存重複月球約會,可能會出現此錯誤。 爲避免此錯誤,請將約會選項設置爲陽曆,而不是月曆。 我試過尋找解決方案,但我還沒有找到一個工程...我添加了UID,將版本更改爲1.0,並將該零添加到DTEND ....仍不確定我還能做什麼。 – VACIndustries

+0

你有沒有試過把文件通過一個ical驗證工具?例如http://severinghaus.org/projects/icv/ – anmari

相關問題