- 締切済み
DB参照して結果を出力する。
DB参照して、そのまま結果を出力するということを、 htmlファイル1枚で作成することはできたのですが、 incファイルを用いてincludeしてやるやり方がよくわかりません。 phpとhtmlは別ファイルで管理したほうがいいと思ったので、、、。 html内でテーブルを組んで、その中にDB参照してきた結果を 入れていきたいような仕様です。 どういうやり方がいいのか教えてください。 宜しく御願します。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- hrm_mmm
- ベストアンサー率63% (292/459)
html(表示)と処理(php)の分離法としては テンプレートhtmlを使うというのはいかがでしょうか? perlの配布掲示板などでスキンという方法でよくもちいられている手法です。 表示の大枠概略をテンプレートhtmlとして作って、データ表示部分には他と区別の可能な決まった文字列(置換用文字列)を入れておくことにする。 それを index.php でファイル読み込みをして、置換用文字列部分をデータベースの結果から作成した文字列により置換してページ出力にする。 具体的には ーーtemplate.htmlーー <html><head> いろいろ指定 </head> <body> 表題 他いろいろ <!-- data replace --> フッター いろいろ </body></html> ーーindex.phpーー $page_lines = File("template.html"); $all_lines=''; foreach( $page_lines as $line ){ $all_lines .= $line; } // 全部繋いで一つの文字列にするかどうかは一長一短なので適宜 // データベース処理 & 出力文字列作成(ここにそれなりのhtml表記指定はもちろん必要) $str = "<div>出力用データいろいろ</div>"; print preg_replace(/<!-- data replace -->/,$str, $all_lines); 関数名とか引数の順序は、ちょっとうろ覚えにて、マニュアルなどで確認して使ってください。 考え方としてご参考になれば。
- papillon68
- ベストアンサー率61% (42/68)
はい、HTMLとPHP部分を完全に切り分けることは難しいように思います。 検索結果など動的となる部分はどうしてもPHPの処理で動的にHTMLを生成しる必要があります。 ----------------------------------------------- <table border="1"> <tr><td><?=$data[0]?></td></tr> <tr><td><?=$data[1]?></td></tr> <tr><td><?=$data[2]?></td></tr> <tr><td><?=$data[3]?></td></tr> <tr><td><?=$data[4]?></td></tr> </table> ----------------------------------------------- こういった方法でもNGということになるとデータベースのデータを 表示することは困難だと思います。 各タグにIDを持たせ、JavaScriptを用いて値を代入するという方法もありますが、 JavaScriptが無効である場合やブラウザによってスクリプトをかえる必要があるなど 色々と問題がでてきますし、不確実な処理となりそうです。 もしかすると、私がイメージしているものとokoba23さんがイメージしているものに 違いがあるのかもしれません^^;
- papillon68
- ベストアンサー率61% (42/68)
> ■index.php > <table> > <tr><td> > <?php > require=include.inc > // DBから取得した値> > </td></tr> > </table> > > ■include.inc > <?php > // DBからデータ抽出 > ?> > > というイメージなんですが、 > いいんでしょうか? すみません、どういったことなのかがよく分かりません^^; index.phpでは表示をメインで行い、 include.incでデータベースとのやり取りなどの処理をする といった風に役割を分担させるということでしょうか。 ◆index.php <?php include 'include.inc'; ?> <table border="1"> <tr><td><?=$data[0]?></td></tr> <tr><td><?=$data[1]?></td></tr> <tr><td><?=$data[2]?></td></tr> <tr><td><?=$data[3]?></td></tr> <tr><td><?=$data[4]?></td></tr> </table> ◆include.inc <?php // 実際にはデータベースよりデータを抽出するが // 今回は配列にデータを入れた状態にする $data = array('data1', 'data2', 'data3', 'data4', 'data5'); ?> としてみてはいかがでしょうか。 単に先ほどの index.php と include.inc の内容を入替えたようなものですが^^;
補足
説明有難う御座います。 >ndex.phpでは表示をメインで行い、 >include.incでデータベースとのやり取りなどの処理をする >といった風に役割を分担させるということでしょうか。 それをイメージしていました。 でも実際はhtmlだけってのは難しいですよねぇ。 少しは混合になってしましますよね。
- papillon68
- ベストアンサー率61% (42/68)
okoba23さんこんにちは、papillon68と申します。 ------------------------------------------------- ◆index.php <?php // このデータを表示したい $db_data = "DBから取得した値"; include 'include.inc'; ?> ◆ include.inc <table border="1"> <tr><td> ここにDBの値を入れたい </td></tr> </table> ------------------------------------------------- 上記のようなことがしたいということでしょうか。 ◆ include.inc <table border="1"> <tr><td><?=$db_data?></td></tr> </table> としてみてはどうでしょうか(@^-^@)
補足
ご説明有難う御座います。 僕が思っていたのは、htmlとphpのコーディングを別にしたほうが メンテにいいとういことだったので、 ■index.php <table> <tr><td> <?php require=include.inc // DBから取得した値> </td></tr> </table> ■include.inc <?php // DBからデータ抽出 ?> というイメージなんですが、 いいんでしょうか? コーディングをする際に、htmlとphpが混合のは作ったのですが、 やっぱり分けたほうがいいのかなと悩んでいたところなのです。
お礼
ありがとうございます!! よりメンテしすいのを試行錯誤で考えたいと思います。