Objective-CでRSS機能を使った『まとめサイトアプリ』の作り方②


こんにちは、iPhoneアプリ開発者の中川です。
前回の記事では、iPhoneアプリ「まとめサイトアプリ」の作り方の流れとMySQLを使ってデータベースを作るところまで解説しました。
Objective-CでRSS機能を使った『まとめサイトアプリ』の作り方①

それでは次にPHPでの作業です。
まずはサンプルコード。

——————————————————————-
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8″> <title>テストページ</title>
</head>

<?php
// ブログ情報を追加。
$host = “mysql:データベース名;host=ホスト名";
$user = 'ユーザー名’;
$pass = 'パスワード’;
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8’,
);

//DB接続処理
$pdo = new PDO($host, $user, $pass, $options);
$pdow = new PDO($host, $user, $pass, $options);

// SQL文発行
$sql = “SELECT link FROM ブログ情報のテーブル名"; // 読込み命令
$sqlw = “INSERT INTO ブログ情報の詳細を格納するテーブル名 VALUES(NULL,?,?,?,?,click+0)"; // 書き込み命令
$sqlw_r = “SELECT COUNT(*) FROM ブログ情報の詳細を格納するテーブル名 WHERE link = ?"; // 一致するURLの個数を調べる命令
// SQL文実行
$st = $pdo->query($sql);
$stw = $pdow->prepare($sqlw_r);

while ($row = $st->fetch()) {

// DBから取得したURLを変数に格納。
$url = htmlspecialchars($row['link’]);

// $urlからXMLを解析して情報を取得する。
$xml = simplexml_load_file($url);

$blog_title = $xml->channel->title;

echo '<h1>’.$blog_title.'</h1>’;

echo “<ul>";

foreach($xml->item as $item){

$title = $item->title;
$link = $item->link;
$date = $item->children(“http://purl.org/dc/elements/1.1/")->date;

$date = date('Y/m/d H:i:s’, strtotime($date));

// 重複チェック
$stw->execute(array($link));
$stww = $stw->fetch();

$result = $stww[0];

if ($result < 1) {
echo “書き込める。";
$pdow = new PDO($host, $user, $pass, $options);
$insert = $pdow->prepare($sqlw);
$insert->execute(array($date,$title,$link,$blog_title));
}else{
echo “書き込めない。";
}

echo “<li>$date <a href=’$item->link’>$item->title</a></li>";

}

echo “</ul>";
}

// DOM作成
$dom = new DomDocument('1.0′,’utf-8’);
$dom->formatOutpute = true;

// タグを作成
$tag_item = $dom->appendChild($dom->createElement('item’));

// DB接続処理
$pdo = new PDO($host, $user, $pass, $options);
// SQL文発行
$sql = “SELECT datetime, title, link, blog_title FROM syufuBlogURLInfo ORDER BY datetime DESC";
// SQL文実行
$st = $pdo->prepare($sql);
$st->execute();

// ループ処理
while ($row = $st->fetch()) {
$datetime = $row[0];
$title = $row[1];
$link = $row[2];
$blog_title = $row[3];
// XMLとして出力
$tag_title = $tag_item->appendChild($dom->createElement('title’, $title));
$tag_link = $tag_item->appendChild($dom->createElement('link’, $link));
$tag_date = $tag_item->appendChild($dom->createElement('date’, $datetime));
$tag_blog_title = $tag_item->appendChild($dom->createElement('blog_title’, $blog_title));

}
$dom->saveXML();
$dom->save('analyzeXML.xml’);
?>

——————————————————————-

詳細に解説するときりがないので簡潔に。
・PDO関数を使ってDB接続処理。
・SQL文を発行して、実行。
・while文、for文を使って繰り返しブログの情報をテーブルに格納。
・データベースに再び接続し、テーブルから情報を読込む。
・DOM関数を使ってXMLを作成。
※コメントじゃないところの日本語は各自設定したものを入れてください。
コピペして日本語の部分を修正して使用してください。

以上で、PHPを使ってデータベースにブログの詳細情報を格納し、PHPファイルと同じディレクトリ内にXML形式で出力できます。
XMLのファイル名はanalyzeXML.xmlです。

次はXcode + Objective-Cですが、続きは次の記事で。