
今日からつかえるPHP5サンプル集を使ってphpの練習をしています。
この中にDBを使った掲示板のサンプルがあり、DBの出入力をクラスファイルで行っています。
そのphp5の__constract()を使っている部分を、php4に対応した形にしようとして躓いています。
以下、コードです。一部編集しています。
【Article.class.php】
class Article {
//*この部分を追加
function Article()
{
$this->__construct();
}//
function __construct(){ /* コンストラクタ */ }
var $_id;
…中略
function getId(){return $this->_id;}
…中略
function setId($id){$this->_id=$id;}
…中略
function getArticleInfo($cnt,$num){
$aryArt=array();
$db=DB::connect("mysql~");
$rs=$db->query("SELECT * FROM bbs_master WHERE parent=0 ORDER BY sdat DESC LIMIT ".$cnt.",".$num);
while($row=$rs->fetchRow(DB_FETCHMODE_ASSOC)){
$objArt=new Article();
$objArt->setId($row['id']);
…中略
//*これ以下を実行するとieで"ページを表示できません。"が出る
$aryTmp=Article::getChildArticleInfo($objArt->getId());
$objArt->setChild($aryTmp);
$aryArt[]=$objArt;
}
return $aryArt;
}
function getChildArticleInfo($id){
…各記事の子記事を抽出するプログラム
}
return $aryArt;
}
}
PEARの読み込みやDB接続は成功しているのは確認済みです。
上記コード中の再帰的にArticle::getChildArticleInfo($objArt->getId());を呼び出しているところで実行できなくなるようです。
これをphp4でも動作するように変更できないでしょうか?
よろしくお願いします。
No.3
- 回答日時:
流し読みのアドバイスですが、
getChildArticleInfoの中のgetChildArticleInfoで
無限ループされてたりはしませんか?
あと関係ないですが、DBが同じなら
DBのコネクションは使いまわした方がいいような。
この回答への補足
書籍に掲載されているものなので、無限ループはないかと思っていました…
getChildArticleInfoは子記事のさらに孫記事を取りにいくというループなので無限ではないと思われます。
ですが、そこをコメントアウトしたら(出力は正しくないが)実行できましたので、孫記事を探しにいくループの部分が怪しいようです。
ロジック的には間違いないように思うんですが、文法ミスでしょうか??
DBのコネクションはこれができたら修正したいと思います。
No.2
- 回答日時:
$aryTmp=Article::getChildArticleInfo($objArt->getId());
の次が動かないなら
Article::getChildArticleInfo()
の中が気になります。
この回答への補足
お返事ありがとうございます。
確かに中略が多くてわかりづらいですね、すみませんでした。
getChildArticleInfo()は、さらに子記事を抽出する処理を行っています。
function getChildArticleInfo($id){
$aryArt=array();
$db=DB::connect("mysql~");
$stt=$db->prepare("SELECT * FROM bbs_master WHERE parent=? ORDER BY sdat ASC");
$rs=$db->execute($stt,$id);
while($row=$rs->fetchRow(DB_FETCHMODE_ASSOC)){
$objArt=new Article();
$objArt->setId($row['id']);
$objArt->setTitle($row['title']);
$objArt->setSdat($row['sdat']);
$objArt->setDeleted($row['deleted']);
$objArt->setLevel($row['level']);
$aryTmp=Article::getChildArticleInfo($objArt->getId());
$objArt->setChild($aryTmp);
$aryArt[]=$objArt;
}
return $aryArt;
}
http://proxy.f3.ymdb.yahoofs.jp/bc/4577c199_1767 …
こちらにファイルをアップしました。
お手数ですがよろしくお願いいたします。
No.1
- 回答日時:
PHP5の知識はないのですが・・
Article::getChildArticleInfo($objArt->getId());
ここの呼び出しは、
$objArt->getChildArticleInfo(....
としなければいけないのではないでしょうか?
インスタンス化されていないClassのメソッドだけ呼び出すというのはできないとおもいますが・・・
Static宣言するとできそうな感じもしますが、再帰的な呼び出しをしたいということのようなので、Function内で生成したインスタンスから呼び出すのが正しいのではないでしょうか?
この回答への補足
回答いただき有難うございます。
::で呼び出しはできないんですね。
おそらく引っかかっているのは再帰的に呼び出すところではあると思うのですが。。。
また別のクラスを作って、そのインスタンスを生成させるということでしょうか?
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- PHP PHP MySql ページング 2 2022/09/20 06:38
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- PHP PHP ページング データベース 1 2022/06/16 10:30
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
php ログインID別 ページ表示
-
[PHP+MySQL] データをランダム...
-
PHPのプルダウンメニューにDBの...
-
ヒアドキュメントについて
-
会員ページ SESSIONについて
-
アラートでyes noを作りたいです。
-
PHP 10件表示 "前へ" "次へ"
-
MySQLでデータベースにデータin...
-
重複データをカウントするのに...
-
Accessのテーブルへ複数の主キ...
-
insert1つの処理でもトランザ...
-
データベースに存在するデータ...
-
PEAR でprepareメソッドがエラーに
-
PHPでPostgreSQLのテーブルを表...
-
VBAをつかってクエリの情報を抽...
-
Resource id #3 をフィールドの...
-
XAMPPで画面が真っ白になります。
-
ODBC接続でデータ件数を求...
-
チェックボックスからの複数検...
-
JAVA SQLServerException 列名 ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アラートでyes noを作りたいです。
-
phpでmysqlを使ってデータベー...
-
sortable ギブアップです…助け...
-
文字化けが解決できません。お...
-
PHP+MySQLでの配列のinsert文に...
-
チェックボックスによる複数の...
-
phpからdocument.writeで出力し...
-
PHP と MySQL でテーブルの行数...
-
mysqlから取得した配列をカンマ...
-
dbに登録したデータをphpのプル...
-
PEAR MDB2 のsetFetchModeが設...
-
PHPとMysqlによる正規表現について
-
PHPでMySQLデータを呼び出し、w...
-
日付範囲で検索した後に降順に...
-
DBで検索結果に該当するデータ...
-
PHPで[]の使い方について
-
checkboxで複数選択して,OR...
-
SELECT結果から動的にコンボボ...
-
データベースのページング出力...
-
PHP 10件表示 "前へ" "次へ"
おすすめ情報