[kansaipm] Re: データベースのレポート作成について
Yasushi Nakajima
sey at jkc.co.jp
Fri Aug 30 04:49:54 CDT 2002
Tatsuhiko> すいません、「グルーピング」という用語がよくわからなかったのですが、こ
まず都道府県でグループ化し、次に市町村でグループ化し、…というような表
示のしかたです。
Tatsuhiko> れって要は Jakarta Taglib みたいに、プレゼンテーション層をコンポーネン
Tatsuhiko> ト化して再利用しよう、っていうことですよね。
まさしくその通りです。
Tatsuhiko>
Tatsuhiko> 自分はTemplate-Toolkitっていうエンジンを使ってるんですが、ページング用
Tatsuhiko> にこんなモジュールをつくってみたりしました。Class::DBI というデータベー
Tatsuhiko> スモデリングクラスと組み合わせて使います。若干クセがあるのですけど、一
Tatsuhiko> 覧機能にページングをつけるのが、2,3行の追加でできます。
Tatsuhiko>
Tatsuhiko> http://search.cpan.org/author/MIYAGAWA/Class-DBI-Pager-0.03/
Template-Toolkitも宮川さんのモジュールも十分に便利なんですが、まだ
WHILE とか FOREACH とかいったプログラム的要素がHTMLの中に混在してしまい、
テンプレートをHTMLエディタでデザイナーにいじってもらうというのが難しくな
りますよね。
見てもらった方が話が早そうです。私のGreeというレポートエンジンでは次の
ようになります。@[…]@ というタグで指示を埋め込みます。論理的な構造を見
やすいようにHTML部分は省いてますが、@[…]@以外の部分は好きにHTMLを書けま
す。
・単純な繰り返し…@[repeat()]@と@[end()]@の間が繰り返される
--------------------------------------
@[repeat()]@
@[メーカー]@ @[商品名]@ @[価格]@
@[end()]@
--------------------------------------
・「メーカー」でグルーピング…繰り返しを入れ子にするだけ
--------------------------------------
@[repeat()]@
@[メーカー]@
@[repeat()]@
@[商品名]@ @[価格]@
@[end()]@
@[end()]@
--------------------------------------
・商品10個毎にページ分割…repeat(ページ当たり数)と書くだけ
--------------------------------------
@[repeat()]@
@[メーカー]@
@[repeat(10)]@
@[商品名]@ @[価格]@
@[end()]@
@[end()]@
--------------------------------------
・メーカー5個毎にページ分割
--------------------------------------
@[repeat(5)]@
@[メーカー]@
@[repeat()]@
@[商品名]@ @[価格]@
@[end()]@
@[end()]@
--------------------------------------
・ナビゲーションも付けてみると
--------------------------------------
@[page()]@/@[pages()]@ ページ
<a href="@[prev()]@">前ページ</a>
<a href="@[next()]@">次ページ</a>
@[repeat(5)]@
@[メーカー]@
@[repeat()]@
@[商品名]@ @[価格]@
@[end()]@
@[end()]@
--------------------------------------
※先頭ページの「前ページ」や最終ページの「次ページ」リンクは不要ですが、
<a href=""…</a> というURLが空のリンクは削除されるという仕組みが組み込
まれているので条件分岐を書く必要はありません。
ついでに親子ページに分けてリンクする例も見てもらいましょう。
・親ページのテンプレート…chain()で指定した子テンプレートはその場所に書
かれているように扱われるので、繰り返しが入れ子になり、「メーカー」でグ
ルーピングされることになる。そしてchain()は各メーカーに応じて
テンプレートgoods.htmlから作られたページのURLとなる。
--------------------------------------maker.html
@[repeat()]@
<a href="@[chain(goods.html)]@">@[メーカー]@</a>
@[end()]@
--------------------------------------
・子ページのテンプレート
--------------------------------------goods.html
@[メーカー]@の商品リスト
@[repeat()]@
@[商品名]@ @[価格]@
@[end()]@
--------------------------------------
…とまぁ、こんな感じです。デザイナーに@[repeat()]@や@[end()]@や@[chain
()]@の意味くらいは理解してもらう必要がありますが。
中島 靖
More information about the Kansai-pm
mailing list