feedcreator.class.php導入の方法とデータベース接続について

このQ&Aのポイント
  • feedcreator.class.phpを使用してホームページをRSS配信するために、正しくダウンロードと設定を行いましたが、エラーが発生し、空白のページが表示されます。原因はデータベース接続にある可能性があります。
  • feedcreator.class.phpのソースコードを確認したところ、データベースからのデータ取得が行われていることがわかりました。しかし、データベース接続が正しく行われていないため、データを取得できていない可能性があります。
  • 通常、feedcreator.class.phpを使用すると、指定したフォルダに動的にXMLファイルが生成されるという理解で正しいです。しかし、正しく設定されていない場合、ファイルが生成されず、空白のページが表示されることがあります。
回答を見る
  • ベストアンサー

feedcreator.class.phpを導入したいのですが

ホームページを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ファイルが 動的にできると理解しているのですが、あっているでしょうか? 本業ではないプログラマーのためわかりやすく教えてくれると ありがたいです。

  • PHP
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.1

>エラーはでずまっしろのページが エラー出力を抑制しているから真白になるのでしょう。 エラーを表示する設定が必要です。(エラーを表示しないと解決はたぶん無理;) 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);

Scotty_99
質問者

お礼

回答ありがとうございました。 まず、 >display_errors = On >error_reporting = E_ALL ( <?php error_reporting(E_ALL); ?> ) > という項目がなかったです。errorで検索してみたのですが・・・。 >参考のURLにもありますが、この記述では接続できません。 そんな記述があったとは・・・???探してみます。 接続されていなければ値取れなくて当たり前ですよね。 >とりあえずそれっぽく動かしたので。 う~ん、自分が書いたコードとちがわないのですが・・・。 LOCALHOST上でやったのがよいのでしょうか? 私はレンタルサーバー上でやっています(ろりぽ)。 なんとか使えるようになればよいのですが・・・。

その他の回答 (2)

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.3

エラーについて 標準では 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-reporting.php

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.2

アドバイスとして。 理由は省略しますがこのソースを使うのはやめた方がいいかと。 ソースに組み込むタイプなら、PEARとかZendFrameworkのFeed/XMLライブラリを 使ったほうがいいと思います。

Scotty_99
質問者

お礼

回答ありがとうございました。 PEARとかのほうがよいのですか。 PEARをレンタルサーバーにダウンロードして、ソース上でincludeして クラスを呼び出して使うんですよね。 PHPの逆引き辞典で似たような表記があるのですが、また研究してみます。

関連するQ&A

  • phpとデータベース

    書籍のサンプルを実行しても表示されません pearのインストールが怪しいですが、どこを直せばいいかわかりません。 ご教授お願いいたします。 <HTML> <HEAD> <TITLE>PHPのテスト</TITLE> </HEAD> <BODY> <?php require_once("DB.php"); $dbUser = "sample"; // ユーザー名 $dbPass = "password"; // パスワード $dbHost = "localhost"; // ホスト名 $dbName = "sampledb"; // データベース名 $dbType = "mysql"; // データベースの種類 // MySQL="mysql", PostgreSQL="pgsql", MS SQL-Server="mssql", ODBC="odbc" などを設定 // 接続文字列の作成 $dsn = "$dbType://$dbUser:$dbPass@$dbHost/$dbName"; // データベースに接続 $conn = DB::connect($dsn); // 接続に失敗したらメッセージを表示して終了します。 if (DB::isError($conn)){ die($conn->getMessage()); } print('接続に成功しました。'); // データベースから切断します。 $conn->disconnect(); ?> </BODY> </HTML>

  • classについて

    $server = "localhost"; $database = "hoge"; $user = "user"; $pass = "pass"; $con = mysql_connect ($server, $user, $pass); mysql_select_db ($database, $con); $sql = "SELECT * "; $sql.= "FROM `table` "; while ($result = mysql_fetch_array ($rs, MYSQL_ASSOC)) { echo $result[hoge]; } 上記と同じことを下記のようなクラスにして db.php class db { $server = "localhost"; $database = "hoge"; $user = "user"; $pass = "pass"; function __construct() { $this->con = mysql_connect ($this->server, $this->user, $this->pass); mysql_select_db ($this->db, $this->con); } function query($sql){ $rs = mysql_query ($sql); return mysql_fetch_array ($rs, MYSQL_ASSOC); } hoge.php $db = new db(); $sql = "SELECT * "; $sql.= "FROM `table` "; while ($db->query($sql)) { echo $result[hoge]; } のようにしたのですが、うまくいきません。 function query($sql){ $rs = mysql_query ($sql); $result = mysql_fetch_array ($rs, MYSQL_ASSOC); } とすると一行はとれるのですが、複数行とるにはどうしたらいいのでしょうか・・・ どうかよろしくお願いします。

    • 締切済み
    • PHP
  • 接続しているデータベース名を得る

    PHP4とMySQLを使用しています。 現在接続しているデータベースの名前を取得することはできますか? <?php mysql_connect('dbhost', 'username', 'password'); mysql_select_db("my_database") ・・・・・・・・・・ ?> としたときに、「my_database」を抜き出したいと思います。 よろしくお願いします。

    • 締切済み
    • PHP
  • php ログインフォーム作成

    サーバーはさくらインターネットのプレミアムプラン phpのバージョンは 5.2.12 データベースのバージョンはMySQL 5.1 です。 <?php //DB設定 $dbhost = 'mysql***.db.sakura.ne.jp'; $dbuser = 'test'; $dbpass = 'test'; $dbname = 'members'; $ok_flg = 0; $msg = ""; //DB接続 $link = mysql_connect($dbhost,$dbuser,$dbpass); //使用するDBを選択 $conn = mysql_select_db($dbname,$link); if (!$conn) { die('Connect Error (' . mysql_connect_errno() . ') ' . mysql_connect_error()); } if (count($_POST) != 0) { $sql = sprintf("SELECT * FROM member WHERE id=? AND password=?"); $result = mysql_query($sql); ---- この先がわかりません ---- ***************************************** ***************************************** ***************************************** ---- ここまでがわかりません ---- if ($count == 1) { $ok_flg = 1; } else { $msg = '<span style="color:#ff0000;">ユーザーIDまたはパスワードが違います。</span>'; } } if ($ok_flg == 0) { echo <<< EOL $msg <form method="post" action=""> ユーザーID: <input name="id" /> パスワード: <input name="password" type="password" /> <input type="submit" value="ログイン" /> </form> EOL; } else { session_start(); $_SESSION["login_flg"] = 1; header ("location: ./"); } // MySQLへの接続を閉じる mysql_close($link); ?> ********の場所で困っています。 この先はどのように記述したらよろしいでしょうか? お分かりの方がいらっしゃいましたらご教授いただければと思います。

    • ベストアンサー
    • PHP
  • XserverでpearのDBでMySQLに接続

    xserver(レンタルサーバー)でPHPでpearのDBクラスを使ってMySQL(データベース)に接続ができません。 Xserver(レンタルサーバー)環境 MySQL5 バージョン:5.0.77 MySQL5 ホスト名:xxx.xserver.jp(仮名) PHP Version 5.3.3 include_path .:/usr/share/php53/pear :/usr/share/php Xserver PHP関連の仕様一覧 PEARインストール済み <インストール済みライブラリ> ・Archive_Tar ・Auth ・Console_Getopt ・DB ・HTML_Common ・HTML_QuickForm ・HTTP ・HTTP_Header ・HTTP_Download ・Mail ・Net_SMTP ・Net_Socket ・Pager ・PEAR ・XML_Parser ・XML_RPC ・Structures_Grap データベースは同じくXserverに設置されているphpmyadmin(MySQL5)で作成しました。 /xxx.xsrv.jp/public_html/php_sample/Section63 の中に(dbtest2.php) でおいています。 ★以下のコードで接続ができません。 どこが間違っているのか教えて下さい。 ↓ <?php require_once("DB.php"); $dbUser = "sample"; // ユーザー名(仮名) $dbPass = "password"; // パスワード(仮名) $dbHost = "xxx.xserver.jp"; // ホスト名(仮名) $dbName = "sampledb"; // データベース名(仮名) $dbType = "mysql"; // データベースの種類 $dsn = "$dbType://$dbUser:$dbPass@$dbHost/$dbName"; $conn = DB::connect($dsn); // 接続に失敗したらメッセージを表示して終了します。 if (DB::isError($conn)) { die($conn->getMessage()); } print('接続に成功しました。'); // データベースから切断します。 $conn->disconnect(); ?> ★ちなみにPHPのmysql_connect関数からは接続成功しました。 ↓ <?php $con = mysql_connect("xxx.xserver.jp", "sample", "password") or die("接続できません。"); print "接続に成功しました。"; mysql_close($con); ?>

    • ベストアンサー
    • PHP
  • PHPでMySQLのDBに接続

    PHP,MySQLが使えるレンタルサーバーを借りているのですが, PHPでMySQLに接続し、php_dbを選択をするようにしたいのですが、 この時DBファイルはどこに置けばいいのでしょうか? 現在はMySQLの管理コマンド(?)とは別にpublic_htmlの中に PHPフォルダを作り、そこにDBファイルを入れています。 PHPのスクリプトは <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>練習</title> <meta http-equiv="content-language" content="ja"> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> </head><body> <?php $con = mysql_connect(); if (!$con) { echo ("Error:MySQLに接続できませんでした。<br />"); } else { echo ("接続ID=$con<br>\n"); } $selectdb = mysql_select_db("php_db" ,$con); if (!$selectdb) { echo ("Error:データベースを選択できませんでした"); } else { echo ("データベースphp_dbを選択しました。"); } ?> </body></html> としています。 MySQLには接続ができるのですが、php_dbには接続ができません。 php_dbのおき場所を変えるのか、ファイルの指定が間違っているのか その他、どの要に変更をしたらよいのでしょうか? お願いします。 環境はレンタルサーバーがLINUXでPHPのバージョンなどはわからないんです・・・!! 開発がOSがW2kでFTPで転送してます。

    • ベストアンサー
    • PHP
  • FC4でmysqlを使用して PEAR DB への接続ができない

    FC4に、yumでPHP5.0.4、php-pear-5.0.4、php-mysql-5.0.4、(mysql-4.1.20,mysql-server-4.1.20)をインストールしました。 <?php $con = mysql_connect("localhost","taro","password") or die("接続出来ません"); print "接続しました"; mysql_close($con); ?> を実行すると、「接続しました」と出ます。ところが、 <HTML> <HEAD><TITLE>PHP test</TITLE></HEAD> <BODY> <?php require_once("DB.php"); $dbUser="taro"; $dbPass="password"; $dbHost="localhost"; $dbName="testdb"; $dbType="mysql"; $dsn="$dbType://$dbUser:$dbPass:@$dbHost/$dbName"; $conn = DB::connect($dsn); if(DB::isError($conn)){ die($conn->getMessage()); } print ('DBに接続しました'); $conn->disconnect(); ?> </BODY></HTML> を実行すると、DB Error: connect failed と出て、接続できません。 php.iniは、 include_path = ".:/usr/share/pear:/php/includes" としてあり、 [root@FC4 ~]# ls -l /usr/share/pear/ で調べても drwxr-xr-x 2 root root 4096 5月 27 18:06 DB -rw-r--r-- 1 root root 38937 11月 8 2005 DB.php となっています。 パスの切り方が間違っているでしょうか? どのようにすれば接続できるでしょうか?よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • SQL Server 2008とPHPの連携

    $DBHost = '\SQLEXPRESS'; $DBUser = 'sa'; $DBPass = 'password'; $DB = 'database'; $r = mssql_connect($DBHost, $DBUser, $DBPass); として接続しようとしているのですがうまくいきません Management Studioでは サーバー名 OWNER-PC\SQLEXPRESS 認証 SQL Server認証 ユーザー sa パスワード password でちゃんと接続出来ます 環境は Windows 7 32bit XAMPP(apache2.2 + PHP5.3) でやっています 上記のソースで実行すると Fatal error: Call to undefined function mssql_connect() in C:\public_html\conf\config.php on line 7 というエラーが出て7行目は $r = mssql_connect($DBHost, $DBUser, $DBPass); これになっています $DBHostをlocalhost\SQLEXPRESSなどにしてもうまくいきません php.iniのextension=php_mssql.dllもちゃんとセミコロンははずしてあります 何か間違っているでしょうか? アドバイスよろしくお願いします

    • 締切済み
    • PHP
  • PHP初心者です。

    PHP・Mysql超初心者です。掲示板を自分で考えて作っているのですが、 わからないところがあり困っています。 管理登録画面で管理noと品名を入力し、登録をクリックするとMysqlに データを保存します。 管理表の画面で、品名(上記のMysqlから品名をセレクトボックスで 表示)と注文数を入力し、Mysqlに保存したいのですが、その命令の 所でエラーが出ます。 書き方やセキュリティ等は無視して下さい。 どなたかご教授下さい。 //管理登録画面 *kanri.html <html> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> <body> <form method="post" action="touroku.php"> <h3>管理登録</h3><br> NO:<input type="text" name="no"><br><br> 品名:<input type="text" name="hinmei"><br><br> <input type="submit" value="登録"> </form> </body> </html> *touroku.php <html> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> <body> <? $no=$_POST["no"]; $hinmei=$_POST["hinmei"]; $db=mysql_connect("***","***","***") or die("接続失敗"); print("デ―タベースサーバーに接続できました<br>"); mysql_select_db("***")or die("データベースが見つかりません".mysql_error()); print("データベースに接続しました<br>"); $a="insert into kanri_list(no,hinmei)values('$no','$hinmei');"; mysql_query($a)or die("命令が違います"); $a="select * from kanri_list;"; $kekka=mysql_query($a)or die("命令が違います"); mysql_close($db); ?> 登録しました!<br><br> </body> </html> //管理表 *kanri.php <html> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> <body> <form method="post" action="kanri1_1.php"> <h2>管理表</h2><br> 品名:<select name="kanri"> <? $kanri=$_POST["kanri"]; $db=mysql_connect("***","***","***") or die("接続失敗"); mysql_select_db("***")or die("データベースが見つかりません".mysql_error()); $a="select * from kanri_list;"; $kekka=mysql_query($a)or die("命令が違います"); while($b=mysql_fetch_array($kekka)){ print("<option value='".$b[1]."'>".$b[1]."</option>\n"); } mysql_close($db); ?> </select> <br> 注文数:<input type="text" name="kazu"><br> <input type="submit" value="登録"> </form> </body> </html> 上記の登録ボタンを押すと「命令が違います」とエラーが出ます。 *kanri1_1.php <html> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> <body> <? $kanri=$_POST["kanri"]; $kazu=$_POST["kazu"]; $db=mysql_connect("***","***","***") or die("接続失敗"); mysql_select_db("***")or die("データベースが見つかりません".mysql_error()); $a="insert into kanri1_list(kanri,kazu)values('$kanri',$kazu');"; mysql_query($a)or die("命令が違います"); $a="select * from kanri1_list;"; $kekka=mysql_query($a)or die("命令が違います"); mysql_close($db); ?> 登録しました!<br> </body> </html>

    • ベストアンサー
    • PHP
  • PHPからのRSS出力について

    お世話になります。PHP初級です。 MySQLからデータを取得し、RSS(xml)出力したいと思い、何とか形になってきましたが、表示で問題が発生してしまいました。 データは30件程度入力してあります。 ・IE7 そのまま開くと一応正常(?)に表示。ただしブックマークすると     最初の1件しか記事が表示されない ・Firefox ブックマークは出来るが、記事の各タイトルが表示されない ・goo RSSリーダー 最初の1件しか記事が表示されない 以下ソースです。 <?php header ("Content-Type: application/xml; charset=euc-jp"); echo "<?xml version=\"1.0\" encoding=\"EUC-JP\"?>" . "\n"; echo "<rss version=\"2.0\">" . "\n"; echo "<channel>" . "\n"; echo "<title >タイトル RSS</title>" . "\n"; echo "<link>http://www.yahoo.co.jp</link>" . "\n"; echo "<description>RSS</description>" . "\n"; echo "<language>ja</language>" . "\n"; echo "<copyright>C</copyright>" . "\n"; echo "<managingEditor></managingEditor>" . "\n"; echo "<webMaster>000@0000.com</webMaster>" . "\n"; echo "<pubDate>" . "2009-02-26T00:00:00+0900" . "</pubDate>" . "\n"; echo "<lastBuildDate></lastBuildDate>" . "\n"; // ファイルインクルード include("設定ファイル"); // データベースへ接続 $conn = mysql_connect($host, $user, $pw) or die("データベース接続エラー"); mysql_select_db($db, $conn); // SQLを組み立て $sql = "SELECT * FROM テーブル LIMIT 0, 15"; // 結果セットを取得 $res = mysql_query($sql); // 取り出したデータを表示する while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { echo "<item>" . "\n"; echo "<title>" . $row["dtitlej"] . "</title>" . "\n"; echo "<link>" . "xxx.xml" . "</link>" . "\n"; echo "<description></description>" . "\n"; echo "<pubDate></pubDate>" . "\n"; echo "</item>" . "\n"; } echo "</channel>" . "\n"; echo "</rss>"; // 結果セットを破棄 mysql_free_result($res); // 接続解除 mysql_close($conn); ?> どこがどう悪いのか、どうしても分からず投稿しました。 何分RSS(xml)も初めてですので、どうかお助けください。

    • 締切済み
    • PHP

専門家に質問してみよう