- 締切済み
PHPとjQueryでツリー
はじめまして。プログラムを独学で学んでいる者です。 今回初めて開発をしてみたのですが、どうしてもうまくいかないため こちらに投稿した次第です。 やりたいことは以下の通りです。 PHPとJQueryツリー構造 (完成図) 親 ■ツリー(1) | ■親データ(2) | | | ∟■子データ(3) | | | ∟■孫データ(4) | | | ∟■孫2データ(5) | ■親データ | | | ∟■子1データ | ■親データ | | | ∟■子1データ | | | | | ∟■孫1データ | | | ∟■子2データ | ■親データ | | | ∟■子1データ | | | ∟■孫1データ | | | ∟■孫2データ | ■親データ 表示部分で親データの表示をだしつつ、子データのSQLをとばして子データの表示をだしつつ、孫データのSQLをとばす。 これを繰り返したい。 (1)まず親データのSQLをとばす。 (2)親データを一件取得したら、表示する。その親SQLで得られた結果をもとに子SQLをとばす。 (3)子データがあれば表示。(なければ2件目の親データを取得。) 子SQLで得られた結果をもとに、さらに子SQLを飛ばす。 (4)そこに結果があれば孫データとして表示。(なければ2件目の親データを取得) 得られた結果をもとに子SQLを飛ばす。 (5)結果があれば次の孫データとして表示。 結果が存在しなければ、親データに戻り・・・・繰り返し上記のように処理する。 自分で試行錯誤し、phpとjQueryでなんとか上図のように親--子--孫と出せるようになりました。 しかし、1件ごとに子・孫データが無いかSQLを飛ばして調べるので、非常に時間がかかります。 データが30件ほどあると表示するのに10分はかかります。 処理しきれずに途中で終わってしますこともシバシバ・・・・。 他の方法として考えたのが、親データがクリックされたら子SQLを飛ばして展開部分を表示するという方法です。 しかしクリックしたらメソッドを呼び出すという、phpの処理を分割することはできないとネットに乗っていました。 (私の調べ方に問題があったのかもしれませんが・・・) <ul> <li id=id>親データ <ul> <li id=id2>子データ <ul> <li id=id3>孫データ </ul> </ul> <li id=id>親データ2 ・ ・ ・ ↑のような構造で「<li id=id>親データ」がクリックされたときに、phpの子SQLをなげる仕組みなどは 可能なのでしょうか? それとも地道にSQLを投げて1件ずつ確認する方法しかないのでしょうか? プロの方の意見等、知恵をお借りしたいです。 ご教授よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- hogehoge78
- ベストアンサー率80% (433/539)
- muuming2001
- ベストアンサー率23% (202/847)
- LancerVII
- ベストアンサー率51% (1060/2054)
- kamikami30
- ベストアンサー率24% (812/3335)
お礼
muuming2001様 回答ありがとうございます。 そうですね・・・「*」は使っていません。 ただ「RIGHT JOIN」がSQL中に8回使っているので、もしかしたらJOIN句が遅くしている原因なのか・・?とは考えましたが・・・ コマンド上でSQLを投げると44件抽出する場合の応答時間は0.7秒ほどですので、やはりプログラムの構造が悪いのかな?と思いました