[PHP-users 27976] Re: テンプレートを使用の際

TAKAGI Masahiro matakagi @ osk2.3web.ne.jp
2005年 12月 31日 (土) 09:26:53 JST


高木です。

At Sat, 31 Dec 2005 08:29:02 +0900,
<kimura @ kmtec.co.jp> wrote:
> 
> こんにちは、
> htmltemplate.incを使用した
> テンプレートを使用しているのですが
> 
> 
> 下の記述の場合、抽出したレコードが
> 10件あったとして、<td>を連続して10回繰り返してしまいます。
> それを、5回ごとに<tr>して、次行に移動するようにしたいのですが
> 何か手などあるでしょうか?
> http://hoover.ktplan.ne.jp/kaihatsu/php/index.php?type=top見本にしました。
> 

http://hoover.ktplan.ne.jp/kaihatsu/php/index.php?type=doc&txt=htmltemplate
の「2.5 テンプレート命令一覧」をごらんになるとわかるように、テンプレー
ト側で数を数えるような命令は存在しないようです。その理由は、同じページ
の「3 動作原理」で説明されていますね。で、もしテンプレートにそのような
命令が欲しいのなら、同じページの「4 おわりに」に書かれているとおりにす
ればよろしいのではないでしょうか。

テンプレート側でどうにもできない以上、「5 回ごとに〜」という処理はテン
プレートに渡すデータのほうで対応する必要があります。

> <table border="1" cellpadding="0"
>     cellspacing="0" width="300">
>         <tr>
> <!--{each data}-->
>             <td><p align="center"><input type="checkbox"
>             name="fC[]" value="{val data/accid}">{val data/accid}</p>
>             </td>
> <!--{/each}-->
>         </tr>
> </table>

少なくとも、これではどうがんばっても <tr>,</tr> が 1 回しか表示されな
いように思います。たとえば以下のような感じのテンプレートにして、テンプ
レートに渡すデータを工夫すればよいのではないでしょうか。

<table border="1" cellpadding="0"
    cellspacing="0" width="300">
<!--{each data}-->
        <tr>
<!--{each data/tr}-->
            <td><p align="center"><input type="checkbox"
            name="fC[]" value="{val data/tr/accid}">{val data/tr/accid}</p>
            </td>
<!--{/each}-->
        </tr>
<!--{/each}-->
</table>

もしかしたら
  http://www.lyricfathom.com/phpbb/viewtopic.php?t=14
が参考になるかも知れません。

-- 
高木 正弘 mailto:matakagi @ osk2.3web.ne.jp


PHP-users メーリングリストの案内