Smartyで日付をループ出力させる

In: php

17 9月 2008

予約システムなどを作るとき、現在の日時から増減させたリストを出したいシーンがよくあります。JavaScriptという手もありますが、環境に依存するので、Smartyを使ったシステムページなら、簡単にバリっと出せます。

ここでのループにはsectionを使います。name属性は適当でいいです。

1
2
3
{section name=time start=$smarty.now loop=$smarty.now+2592000 step=86400}
{$smarty.section.time.index|date_format:"%m月 %d日"}<br />
{/section}

これだけで、ひとまずはこんなBR改行のリストが出力されます。

09月 17日
09月 18日
09月 19日
09月 20日
09月 21日
09月 22日

日数は、now+2592000の部分で指定します。これは秒数で、今から起算して+2592000秒…つまり30日分です。一週間なら60×60×24×7=604800というように計算します。

stepは、何秒ずつステップ(ジャンプ)するかの指定です。例では日付リストなので、24時間(86400秒)で指定しています。

広告

これを応用すれば、たとえばラジオボタンでもプルダウンリストでも、自在に出力できますね。

プルダウンリストの例

1
2
3
4
5
6
<select>
<option value="--" selected="selected">--月--日</option>
{section name=time start=$smarty.now loop=$smarty.now+2592000 step=86400}
<option value="{$smarty.section.time.index|date_format:"%m月 %d日"}">{$smarty.section.time.index|date_format:"%m月 %d日"}</option>
{/section}
</select>

コメント

Comment Form

About this blog

ここは、SE見習いである私ことdaceloが、日夜習得していくシステム関連の備忘録、phpやWordPressTipsのネタ、あるいはSEOやWebマーケティング関連の雑感を投稿するブログです。 平日は大体毎日投稿しています。土日は休業日です。

カテゴリー

カテゴリー

アーカイブ