質問: ### 前提・実現したいこと 開発情報 ・PHP ・PDO(mysql) ・smarty データベースのテーブルからデータを取得して(PDOのfetch-allで配列に格納)、 それをsmaty変数に格納しブラウザ側で配列をループし表に表示するプログラムを作成しています。 ### 発生している問題・エラーメッセージ しかしSELECTするテーブルが変わるごとに表に表示するページを作成しており 似たようなページが冗長化しています。(ブラウザ側で列名が違うだけの表に表示する機能のページが多数) 汎用的に表に表示できるページを作成するにはどのようにすればよろしいでしょうか。 イメージは 1テーブルからデータ取得⇒ 2汎用的なオブジェクトに格納⇒ 3smarty変数でブラウザ側に渡す⇒ 4smarty変数から列名をループで取得して表の列見出しにセット⇒ 5smarty変数からデータ部をループで取得して表のデータ部にセット のように、ブラウザ側には固有の処理を書かずに汎用的な処理にしたいです。 このような処理を行っているサンプルプログラムなどありましたら、 それも合わせて情報いただければ幸いです。 よろしくお願いします。
回答: 各viewファイルはちゃん作成し、 後は共通tableを外出しのtplにしてincludeが一番いいかと思いますが 仕様変更ややっぱりこの表だけ表示はこうしたい、とか出てきませんか? その際if文で切り分けるぐらいなら潔く各々のviewが担保すればいいかと思うのですが。 幅とかcssとかその表ごとに切り分ける必要もないのですか? include する変数をそろえることができるなら引数はいりませんが 各画面により変数が違う場合は引数で渡してあげるといいと思います。 $results.table:テーブルデータ $results.cols:列タイトルデータ {include file='test.tpl' val_testTable=$results.table val_cols=$results.cols} ※include 先では$val_testTableとしてデータを使用 後はinclude 先で$results.colsをループしてでタイトルを作り $results.tableで行ループして表を作ればいいかと思いますが 可読性も悪くなりそうだし私は嫌いです。