アプリ版:「スタンプのみでお礼する」機能のリリースについて

ホームページをRSS配信させようとfeedcreator.class.phpを
ダウンロードし、サーバーのルートフォルダーにもアップしました。

http://www.yung.jp/hp/php/rss.php
必要事項は上記見て、書き換えました。

http://prime.jp/×××/hoge/feedcreator.class.php
にアクセスし、実行したところ、エラーはでずまっしろのページが
表示されます。


そのまっしろページのソースを確認したところ、BODY~BODYに
なにも表示されていないので
データベース(MYSQL)から取得できていないと思いました。

そこで、feedcreator.class.php(130行目)
mysql_select_db($dbHost, $dbUser, $dbPass);
$res = mysql_query("SELECT * FROM news ORDER BY newsdate DESC");
が怪しいのですが、データベース接続されていないのですが、
よいのでしょうか?どこでデータベースに接続しているのでしょうか?

私ならデータベースから値をとるときまず下記のようにコードを書きます
$db = @mysql_connect(DIARY_DB_HOST, DIARY_DB_USER, DIARY_DB_PASS);
@mysql_select_db(DIARY_DB_NAME, $db);

そもそも
http://prime.jp/×××/hoge/feedcreator.class.phpに
アクセスすれば、指定フォルダーにfeed.xmlなり、xmlファイルが
動的にできると理解しているのですが、あっているでしょうか?

本業ではないプログラマーのためわかりやすく教えてくれると
ありがたいです。

A 回答 (3件)

>エラーはでずまっしろのページが


エラー出力を抑制しているから真白になるのでしょう。
エラーを表示する設定が必要です。(エラーを表示しないと解決はたぶん無理;)
display_errors = On
error_reporting = E_ALL ( <?php error_reporting(E_ALL); ?> )

>データベース接続されていないのですが、
参考のURLにもありますが、この記述では接続できません。
どうもそれなりに既にコードを書いている人むけな感じです。

>動的にできると理解しているのですが、あっているでしょうか?
動的に出しつつ、ファイルを書き出すようです。

とりあえずそれっぽく動かしたので。

CREATE TABLE news (id integer, created timestamp, title text, url text, description text, source text, author text);
insert into news values (1, NOW(), 'aaa', 'bbb', 'ccc', 'ddd', 'eee');

<?php
include("feedcreator.class.php");

$dbHost = 'localhost';
$dbName = 'db1';
$dbUser = 'root';
$dbPass = '';
$feedSQL = 'SELECT * FROM news';
$feedFile = 'news/feed.xml';
$feedDisplay = true;

$rss = new UniversalFeedCreator();
$rss->cssStyleSheet = '';
$rss->useCached();
$rss->title = "Nnews";
$rss->description = "RSS";
$rss->link = "http://domain.dom/";
$rss->syndicationURL = "http://domain.dom/rss.xml";

//$image = new FeedImage();
//$image->title = "dailyphp.net logo";
//$image->url = "http://www.dailyphp.net/images/logo.gif";
//$image->link = "http://www.dailyphp.net";
//$image->description = "Feed provided by dailyphp.net. Click to visit.";
//$rss->image = $image;

mysql_connect($dbHost, $dbUser, $dbPass);
mysql_select_db($dbName);
mysql_query('set names utf8');

$res = mysql_query($feedSQL);
while ($data = mysql_fetch_object($res)) {
$item = new FeedItem();
$item->title = $data->title;
$item->link = $data->url;
$item->description = $data->description;
$item->date = strtotime($data->created);
$item->source = $data->source;
$item->author = $data->author;
$rss->addItem($item);
}

$rss->saveFeed("RSS1.0", $feedFile, $feedDisplay);
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

まず、

>display_errors = On
>error_reporting = E_ALL ( <?php error_reporting(E_ALL); ?> )
>

という項目がなかったです。errorで検索してみたのですが・・・。

>参考のURLにもありますが、この記述では接続できません。

そんな記述があったとは・・・???探してみます。
接続されていなければ値取れなくて当たり前ですよね。

>とりあえずそれっぽく動かしたので。

う~ん、自分が書いたコードとちがわないのですが・・・。
LOCALHOST上でやったのがよいのでしょうか?

私はレンタルサーバー上でやっています(ろりぽ)。

なんとか使えるようになればよいのですが・・・。

お礼日時:2008/12/05 21:27

エラーについて



標準では php.ini の設定が反映されますが、
ソースコードの最初の方にでも以下のように書けばエラーが表示されます。

// エラー表示のオンオフ // error_reporting より優位
ini_set('display_errors', 1);

// 全ての PHP エラーを表示する
error_reporting(E_ALL);

// 全てのエラー出力をオフにする
error_reporting(0);

error_reporting
http://jp.php.net/manual/ja/function.error-repor …
    • good
    • 0

アドバイスとして。



理由は省略しますがこのソースを使うのはやめた方がいいかと。
ソースに組み込むタイプなら、PEARとかZendFrameworkのFeed/XMLライブラリを
使ったほうがいいと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

PEARとかのほうがよいのですか。
PEARをレンタルサーバーにダウンロードして、ソース上でincludeして
クラスを呼び出して使うんですよね。

PHPの逆引き辞典で似たような表記があるのですが、また研究してみます。

お礼日時:2008/12/05 21:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!