2009-07-03 14:16 RSS訂閱功能....

被要求替教育局的公告系統加入RSS訂閱功能也有一段時間了,

一來懶、二來學期末較忙,

所以遲遲未動手。

直到今天早上終於著手進行,

先到PEAR網站看一下,發現PEAR真是太強了,

裡面就有一個自動產生XML格式的套件,

只要安裝以下兩個套件:

pear install xml_util

pear install xml_serializer-0.2.0

那就先完成90%了。

接著在網站目錄下新增一個php檔案,並加入下以程式碼:

require_once ("XML/Serializer.php");

$options = array("indent" => "   ",
                 "linebreak" => "\n",
                 "addDecl" => true,
                 "encoding" => "big5",
                 "rootName" => "rss",
                 "rootAttributes" => array("version" => 2.0),
                 "defaultTagName" => "item"
                 );


$query = "select * from board where bo_time >='{$day}' or bo_rtime >='{$day}' order by bo_time DESC ";

$result = $connection->query($query);
while ($result->fetchInto($rows)) {
    $days = date(DATE_RSS, strtotime($rows[10]));
    $news[] = array('title'=>$rows[4],
                    'link' => "http://www.phc.edu.tw/boardsign/show.php?id=".$rows[0],'description' =>$rows[7],'pubDate'=>$days
                    );
    }

$connection->disconnect();
$head = array("title" => "澎湖縣教育局最近兩天公告",
              "link" => "http://www.phc.edu.tw/boardsign/"
              );


$data['channel'] = array_merge($head, $news);
$serializer = new XML_Serializer($options);

if($serializer->serialize($data)){
    header('Content-type: text/xml');
    echo $serializer->getSerializedData();
}

 

不到50行的程式,就擁有rss訂閱功能,投資報酬率超高,

不過,其中較有趣的是" $days = date(DATE_RSS, strtotime($rows[10]));"這行,

一開始,在RSS文件中,公告的時間都會跑掉,覺得奇怪,後來查了一下資料,

發現:RSS 文件中出現的日期格式都必須以 RFC822: Standard for ARPA Internet Text Messages 中定義的日期時間規範呈現

也就是資料庫DATETIME欄位的格式不符RSS的格式,

再查了一下PHP DATE函數的資料,

發現:PHP的DATE函數己有RSS格式轉換的參數,方式如下:

date(DATE_RSS, strtotime(資料庫日期欄位))

於是,在PEAR與PHP DATE函數的庇蔭下,

RSS訂閱功能就上線服務囉,

不過,令人好奇的是,

雖說有需要加此功能,但會用的到底有幾個人呢???

平均分數:0 顆星    投票人數:0
我要評分:
回應
幫火狐「3」熱...
火狐鬥陣拼紀錄,有你一份!
關鍵字
    沒有新回應!
累積 | 今日
loading......