データベースの選択に失敗しました。";
exit;
}
mysql_set_charset('utf8', $mysql_connect);
*/
function h($s)
{
return htmlspecialchars($s, ENT_QUOTES, "UTF-8");
}
try {
//
$pdo = new PDO('mysql;host=' . $database_server . ';dbname=' . $database_name . ';charset=utf8', $database_user,
$database_password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
} catch (PDOException $e) {
echo $e->getMessage();
exit;
}
//--------------------------------------------------------------//
// 新たにデータベースを作成する場合の処理 //
//--------------------------------------------------------------//
if (filter_input(INPUT_GET, 'create') && filter_input(INPUT_GET, 'create') == "database") {
$create = "CREATE TABLE rss_chienote (
id INT NOT NULL AUTO_INCREMENT,
keyword TEXT NOT NULL,
PRIMARY KEY (id)) ENGINE = MYISAM";
$pdo->exec($create);
// $sql = mysql_query($create, $mysql_connect);
}
//--------------------------------------------------------------//
// テーブルの有無を確認する //
//--------------------------------------------------------------//
$select = "select * from rss_chienote";
$result = $pdo->query($sql)->fetchAll(PDO::FETCH_LAZY);
//$sql = mysql_query($select, $mysql_connect);
if (!$result) {
echo '新たにテーブルを作成する';
exit;
}
//--------------------------------------------------------------//
// RSSのキーワードを追加設定する //
//--------------------------------------------------------------//
if (filter_input(INPUT_POST, 'keyword')) {
$keyword = mb_convert_encoding($_POST['keyword'], "UTF-8", "UTF-8,EUC-JP,SJIS,Shift_JIS,ASCII");
//キーワードの重複がないか確認する
$select = "select * from rss_chienote where keyword = :keyword";
$stmt = $pdo->prepare($select);
$stmt->bindValue(":keyword", filter_input(INPUT_POST, 'keyword'));
$result = $stmt->fetchAll(PDO::FETCH_LAZY);
if ($result['keyword'] != $keyword) {
$insert = "INSERT INTO rss_chienote (keyword) VALUES (:keyword)";
$stmt = $pdo->prepare($insert);
$stmt->bindValue(':keyword', filter_input(INPUT_POST, 'keyword'));
// $sql = mysql_query($insert, $mysql_connect);
if (!$sql) {
echo 'データベースへの保存に失敗しました。';
}
} else {
echo 'そのキーワードは既に登録されています。';
}
}
//--------------------------------------------------------------//
// RSSのキーワードを削除する //
//--------------------------------------------------------------//
if ($get = filter_input(INPUT_GET, 'delete')) {
$delete = "delete from rss_chienote where keyword = :keyword";
$stmt = $pdo->prepare($delete);
// $sql = mysql_query($delete, $mysql_connect);
$sql = $stmt->execute();
if (!$sql) {
echo 'データの削除に失敗しました。';
}
}
//--------------------------------------------------------------//
// データベースからキーワード一覧を取得する //
//--------------------------------------------------------------//
$keywords = [];
$select = "select * from rss_chienote";
//$sql = mysql_query($select, $mysql_connect);
$result = [];
foreach ($pdo->query($select) as $row) {
array_push($result, $row);
}
//while ($result = mysql_fetch_array($sql)) {
// $keywords[] = mb_convert_encoding($result['keyword'], "UTF-8", "UTF-8,EUC-JP,SJIS,Shift_JIS,ASCII");
//}
//--------------------------------------------------------------//
// HTML、キーワードの設定フォーム //
//--------------------------------------------------------------//
?>
body {
line-height: 25px;
}
.top {
text-align: center;
}
.keyword_list {
float: left;
margin-top: 50px;
width: 20%;
}
.table {
margin-top: 20px;
font-size: 90%;
border: 1px #000000 solid;
}
.list {
margin: 0px;
text-align: center;
border-top: 1px #000000 solid;
background-color: #CCCC66;
}
.rss_data {
margin-top: 30px;
float: right;
width: 79%;
}
.rss_keyword {
border-bottom: 1px #000000 solid;
border-left: 10px #000000 solid;
padding: 5px;
}
.rss_keyword a {
text-decoration: none;
color: #000000;
}
.rss_keyword a:hover {
text-decoration: underline;
color: #00F;
}
RSSで知恵ノートのデータを取得するツールのサンプル――Lifelong Learning Web
RSSで知恵ノートのデータを取得するツール(サンプル)
キーワード:
';
echo '';
echo 'キーワード一覧';
echo '';
if (count($keywords) != 0) {
foreach ($keywords as $one) {
if ($one != filter_input(INPUT_GET, 'keyword_list') && $one != filter_input(INPUT_POST, 'keyword')) {
echo '' . $one . '';
} else {
echo '';
echo '' . h($one) . '';
echo '(削除する)';
echo '';
}
}
} else {
echo 'キーワードなし';
}
echo '';
echo '';
echo '';
//--------------------------------------------------------------//
// RSSデータを取得する //
//--------------------------------------------------------------//
echo '';
if (count($keywords) > 0) {
if (filter_input(INPUT_GET, 'keyword_list') || filter_input(INPUT_POST, 'keyword')) {
if (filter_input(INPUT_GET, 'keyword_list')) {
$this_keyword = filter_input(INPUT_GET, 'keyword_list');
}
if (isset($_POST['keyword'])) {
$this_keyword = filter_input(INPUT_POST, 'keyword');
}
} else {
$this_keyword = $keywords[0];
}
$url = "http://chiebukuro.search.yahoo.co.jp/rss?p=" . urlencode($this_keyword) . "&fr=common-navi&class=2&dnum=0&ei=UTF-8";
$xml = simplexml_load_file($url);
$count = 0;
foreach ($xml->channel->item as $entry) {
$entrydate = date("Y.m.d", strtotime($entry->pubDate));
echo 'link) . '" target="_blank">' . h($entry->title) . '';
$strong_keyword = "" . h($this_keyword) . "";
$description = str_replace($this_keyword, $strong_keyword, $entry->description);
echo '' . h($description) . '';
echo '';
echo 'categoryUrl) . '" target="_blank">' . h($entry->category) . '';
echo ' 投稿日:' . h($entrydate);
echo ' link) . '" target="_blank">本文を読む >>';
echo '';
$count++;
if ($count > 4) {
break;
}
}
} else {
echo 'キーワードを設定してください。';
echo ' キーワードが一つも設定されていません。上記のフォームよりキーワードを入力してください。';
}
echo '';
//----------------------------------------------------- //
// データベース切断処理 //
//----------------------------------------------------- //
/*$mysql_close = mysql_close($mysql_connect);
if (!$mysql_close) {
echo "データベースとの切断に失敗しました。";
exit;
}
*/
$pdo = null;
?>
PDOで置き換えてみた
PDOで置き換えてみた
http://note.chiebukuro.yahoo.co.jp/detail/n13873]ahoo!知恵袋と知恵ノートのRSSデータを取得するツール(PHP+MySQL) - Yahoo!知恵袋にあるPHPのプログラムをすべてPDOに置き換えてみました。
コメントはまだありません。