今日からつかえる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ランキング
-
dbに登録したデータをphpのプル...
-
MySQLからのデータを「Pager」...
-
DBで検索結果に該当するデータ...
-
実行時エラー3131 FROM 句の構...
-
MySQLでデータベースにデータin...
-
JAVA SQLServerException 列名 ...
-
phpでテーブルを作る際変数によ...
-
in 'where clause'のエラーの理由
-
MySQLのデータを使ってプルダウ...
-
Yomi-search(PHP)を設置する...
-
INSERT,DELETEを同時に
-
<VB.NET>INSERT文でDBにデータ...
-
VBAをつかってクエリの情報を抽...
-
PHP初心者です。syntax error, ...
-
出勤表の作り方
-
PEAR でprepareメソッドがエラーに
-
プライベート機能の作成
-
PHPのIF文で条件の記述の仕方に...
-
テキストボックスに入れた内容...
-
ResultSetインターフェイスでの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAについて
-
PHPで[]の使い方について
-
DBで検索結果に該当するデータ...
-
アラートでyes noを作りたいです。
-
dbに登録したデータをphpのプル...
-
phpでmysqlを使ってデータベー...
-
sortable ギブアップです…助け...
-
checkboxクリック時、SQLを実行...
-
PHPでMY SQLの連想配列をリンク...
-
チェックボックスによる複数の...
-
PHPでMySQLデータを呼び出し、w...
-
mysql_fetch_objectの書き方を...
-
SELECT結果から動的にコンボボ...
-
チェックボックスでチェックし...
-
VBA初心者です。
-
PHPについてなのですが未定義の...
-
文字化けが解決できません。お...
-
htmlとphpの分離
-
php テーブルが作成できない
-
検索結果をgoogleのように数件...
おすすめ情報