どれだけ使う機会があるかどうかは分からないけれど、今日たまたま、2つの月の差を出したいという状況に出くわしたので、ちょいとメモ。ブログの月別アーカイブなんかを作るときに使えるかもしれない。セレクトボックスで月を選択するとその月の記事の一覧に飛べる、みたいなね。
ここでは、ブログの記事が2009年1月から今日(2009年7月)まで存在すると仮定しよう。
$date = strtotime('2009-01-01');
$month1 = date('Y')*12 + date('m');
$month2 = date('Y', $date)*12 + date('m', $date);
$result = $month1 - $month2;
for($i = 0; $i <= $result; $i++) {
$options[] = date('Y年m月', strtotime("2009-01-01 + $i month");
}
何の説明もせずにソースだけ書いたけど、こんな感じでOK。$month1の方には常に現在の月が入力される。
これでフォームヘルパーのセレクトメソッドを使えば、下のような感じのセレクトボックスが作れる。ちなみにdate(‘Y’)に12をかけているのは、たとえば2009年の1月から2008年の1月を引いたら$resultには12が入らなければいけないから、そうしてるっす。
<?php echo $form->select('select', $options, null, null, false) ?>
出力結果↓
<select>
<option>2009年1月</option>
<option>2009年2月</option>
<option>2009年3月</option>
<option>2009年4月</option>
<option>2009年5月</option>
<option>2009年6月</option>
<option>2009年7月</option>
</select>
id属性やvalue属性はめんどいのでここでは省略。
これだと月の古い方が上に来てしまうので、逆が良ければソートでもかければいけるさ。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。