Smartyで日付プルダウン

foreachとsectionで日付用のプルダウンを生成

年の最大値は、翌年になるよう表示。

PHP

// 年を配列にセット $maxYear = date('Y', mktime(0, 0, 0, date('m'), date('d'), date('Y') + 1)); // 昇順 for ($i = 2000; $i <= $maxYear; $i++){ $arrYear[] = $i; } // 降順 // for ($i = $maxYear; $i >= 2000; $i--){ // $arrYear[] = $i; // } $view->assign('arrYear', $arrYear);

Smarty

{* 初期値(現在年月日) *} {if empty($year)} {assign var=year value=$smarty.now|date_format:'%Y'} {/if} {if empty($month)} {assign var=month value=$smarty.now|date_format:'%-m'} {* %-mで0が消えない/正常に動作しない場合は以下を使用 *} {* assign var=month value=$smarty.now|date_format:'%m'|string_format:'%2d' *} {/if} {if empty($day)} {assign var=day value=$smarty.now|date_format:'%-d'} {* %-dで0が消えない/正常に動作しない場合は以下を使用 *} {* assign var=day value=$smarty.now|date_format:'%d'|string_format:'%2d' *} {/if} <select name="year"> <option value="">--</option> {foreach $arrYear as $arrYearVal} <option value="{$arrYearVal}"{if $arrYearVal eq $year} selected{/if}>{$arrYearVal}</option> {/foreach} </select>年 <select name="month"> <option value="">--</option> {section name=month start=1 loop=13 step=1} <option value="{$smarty.section.month.index}"{if $smarty.section.month.index eq $month} selected{/if}>{$smarty.section.month.index}</option> {/section} </select>月 <select name="day"> <option value="">--</option> {section name=day start=1 loop=32 step=1} <option value="{$smarty.section.day.index}"{if $smarty.section.day.index eq $day} selected{/if}>{$smarty.section.day.index}</option> {/section} </select>日

生成されるプルダウン

<select name="year"> <option value="">--</option> <option value="2000">2000</option> (略) <option value="2025">2025</option> </select>年 <select name="month"> <option value="">--</option> <option value="1">1</option> (略) <option value="12">12</option> </select>月 <select name="day"> <option value="">--</option> <option value="1">1</option> (略) <option value="31">31</option> </select>日

年月日を同一プルダウンにする。

Smarty

{* 初期値(現在年月日) *} {if empty($today)} {assign var=today value=$smarty.now|date_format:'%Y/%m/%d'} {/if} <select name="ymd"> <option value="">--</option> {section name=i start=1 loop=11 step=1} {assign var="date" value=($smarty.now+24*60*60*$smarty.section.i.index)|date_format:'%Y/%m/%d'} <option value="{$date}"{if $date eq $today} selected{/if}>{$date}</option> {/section} </select>

生成されるプルダウン

<select name="ymd"> <option value="">--</option> <option value="2024/11/21">2024/11/21</option> (略) <option value="2024/12/01">2024/12/01</option> </select>

最新の記事

プロフィール

流されるままにウェブ業界で仕事しています。主にLAPP環境でPHPを書いています。最近はjQueryで遊んでいます。
※動作確認について