Postgresqlのテーブルを使用して、ツリー型のメニューを作成したく考えております。
http://allabout.co.jp/gm/gc/377237/2/
こちらのサイトを参考にして作成しようと思ったのですが、Postgresからデータを取得する点までは出来たのですが、htmlを上手くphpから出力出来ずに困っています。
テーブル項目は3つ
・章名 (第1章、第2章~のような形式)
・番号 (数字5桁、04020のような形)
・付属番号 (数字2桁 00~99)
例として以下の場合だと、(実際は数百件分あります)
章名 | 番号 | 付属番号
第1章 | 01010 | 00
第1章 | 01020 | 00
第1章 | 01020 | 01
第2章 | 02010 | 00
第3章 | 03010 | 00
第3章 | 03010 | 01
第3章 | 03010 | 02
第3章 | 03020 | 00
このようなhtmlを出力したいのです。
<ul>
<li><a href="url">第1章</a>
<ul>
<li><a href="url">01010</a>
<ul>
<li><a href="url">00</a></li>
</ul>
</li>
<li><a href="url">01020</a>
<ul>
<li><a href="url">00</a></li>
<li><a href="url">01</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="url">第2章</a>
<ul>
<li><a href="url">02010</a>
<ul>
<li><a href="url">00</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="url">第3章</a>
<ul>
<li><a href="url">03010</a>
<ul>
<li><a href="url">00</a></li>
<li><a href="url">01</a></li>
<li><a href="url">02</a></li>
</ul>
</li>
<li><a href="url">03020</a>
<ul>
<li><a href="url">00</a></li>
</ul>
</li>
</ul>
</li>
</ul>
どうか知恵をお貸しください。
よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
考え方はいろいろだと思いますが、一度sqlからのデータを表示しやすいよう
別の配列に移し替えて出力するとすこし楽かもしれません。
仮に、SQLからの出力をPDOで処理するとしてこんな感じ?
//初期化
$mydata=array();
$pre=array("章名"=>"","番号"=>"","付属番号"=>"");
$count=array("章名"=>-1,"番号"=>0,"付属番号"=>0);
while($data = $stmt->fetch(PDO::FETCH_ASSOC)){
if($pre["章名"]!=$data["章名"]){
$count["章名"]++;
$count["番号"]=0;
$count["付属番号"]=0;
}elseif($pre["番号"]!=$data["番号"]){
$count["番号"]++;
$count["付属番号"]=0;
}else{
$count["付属番号"]++;
}
$mydata[$count["章名"]]["text"]=$data["章名"];
$mydata[$count["章名"]]["child"][$count["番号"]]["text"]=$data["番号"];
$mydata[$count["章名"]]["child"][$count["番号"]]["child"][$count["付属番号"]]["text"]=$data["付属番号"];
$pre=$data;
}
//とりあえず内容確認
print_r($mydata);
//階層表示
print "<ul>\n";
foreach($mydata as $d1){
print "\t<li>".$d1["text"]."\n";
print "\t<ul>\n";
foreach($d1["child"] as $d2){
print "\t\t<li>".$d2["text"]."\n";
print "\t\t<ul>\n";
foreach($d2["child"] as $d3){
print "\t\t\t<li>".$d3["text"]."</li>\n";
}
print "\t\t</ul>\n";
print "\t\t</li>\n";
}
print "\t</ul>\n";
print "\t</li>\n";
}
print "</ul>\n";
No.2
- 回答日時:
>変数stmtが定義されていないのと、fetchが空?のエラーのようです。
あれ?phpからpostgreにつなぐ方法理解していません?
そのあたりから躓いているのであれば一度入門書から始めた方がよいと思います。
またまだ始めたばかりでPostgreを絶対につかなわなくてはいけないわけではないなら
個人的にはmysqlの方が参考になる書籍やサイトも多いのでよいと思いますが・・・
phpからPostgresqlにpg_connectで繋いでデータ取得等は出来ては居ますが、PDOを使用してうまく接続できていないみたいです。現在は参考書片手に調べつつ、やっております・・・・
私自身1週間程前にphp触り始めたので、あまり分かっていないところもあり、申し訳ありません。
もう少し、試してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- HTML・CSS htmlについて質問です! 写真のように写真の部分が?になってしまいます。 ファイルもしっかり選べて 1 2023/07/09 21:17
- HTML・CSS インラインブロックの中のテキストを上下中央に合わせたい 1 2022/12/24 17:46
- HTML・CSS HTML & CSS 縦ボックス内の文字の左右センタリング 3 2023/03/25 04:23
- その他(IT・Webサービス) html cssについて 3 2023/05/13 12:48
- HTML・CSS cssの display: flex;で横並びにならずに困ってます 1 2022/12/04 13:18
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
reuterの記事をbeautiful.soup....
-
VBSでのhtmlタグ要素名の置換
-
正規表現でタグの置換をしたい...
-
正規表現でHTMLタグの属性まで...
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
エスケープ文字の復帰(¥r)と...
-
JAVA System.out.println の ...
-
文字化け変換方法
-
メッセージボックスで1025文字...
-
texのchapterが改行される
-
Excel関数「COUNTIF」で”文字”...
-
VBAを使ってHTMLソースから特定...
-
COBOLの改行
-
C++で空Enterの入力を判...
-
半角記号、全角記号を含む正規...
-
記号は半角と全角どちらがよい...
-
文字の入力で横バー上段、中断...
-
全角括弧と全角読点の間隔を狭...
-
、"(ダブルクォーテーション)...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
reuterの記事をbeautiful.soup....
-
正規表現で複数行に渡る範囲を...
-
変数にHTMLを代入する場合
-
javascriptの正規表現でhtmlか...
-
タグにはさまれている文字以外...
-
VBSでのhtmlタグ要素名の置換
-
objective-cでのHTMLタグ表示に...
-
phpの正規表現でstyle="●●"を削...
-
Strutsでリンクを動的に生成したい
-
PHPスクレイピングが上手くいき...
-
htmlのソースからテーブルの値...
-
JSFタグのfタグとは
-
ASP.NET(C#)とhtmlの#include
-
あるタグから対応するタグまで...
-
preg_replaceでの正規表現によ...
-
eclipseより、タスク・タグの使...
-
HTMLファイルの書き換え
-
Nvuで作成したhtmlをコピペして...
-
htmlタグ間の特定文字置換
-
[正規表現][入れ子]ネストされ...
おすすめ情報
PHP Notice: Undefined variable: stmt in C:\XXXXX\YYYY\ZZZ.php on line 11
HP Fatal error: Call to a member function fetch() on null in C:\XXXXX\YYYY\ZZZ.php on line 11
実際に実行してみたのですが、
上のようなエラーが出現しました。
変数stmtが定義されていないのと、fetchが空?のエラーのようです。
php.iniでは
extension=php_pdo_pgsql.dll は既にコメントを外してあります。
すいません、データの取得は出来るようになりましたが、
番号 | | 付属番号 | 章名
-----------+---------+---------------+
01010 | 00 | 第1章 |
01040 | 00 | 第1章 |
01040 | 01 | 第1章 |
01040 | 02 | 第1章 |
このデータで確認してみましたが、
第1章
01010--00
01040---00
|__01
第1章
01040---02
のように分割して表示されています。
どうやら、1個前と同じ番号だと、切られてしまうようです・・・