dポイントプレゼントキャンペーン実施中!

Kent Webさんの
「Web Calen(カレンダ日記)」
http://www.kent-web.com/variety/calen/calen.cgi
を使っています。
左側に表示されるカレンダーを3か月先まで1ページに表示させたいのですが、
来月、

2008年11月・2008年12月・2009年1月

と表示させたいのですが、
どおしても

2008年11月・2008年12月・2008年13月

となってしまい、正しいカレンダーを読み込みません。


カレンダ表示の部分で
else { $month = $mon; }
else { $month2 = $mon+1; }
else { $month3 = $mon+2; }

と月に数値をプラスしていたのが原因だと思います。

自動的に西暦を読み込んでカレンダーを表示させるには
どのように編集したらいいでしょうか。
どうか教えてください。

A 回答 (3件)

ANo.1です。


とりあえず貴殿が使用されているCGIを参考にすると
以下のような形になります。

# $year  : 現在の年
# $month : 現在の月
# $Y2   : 翌月の年
# $month2 : 翌月の年
# $Y3   : 翌々月
# $month3 : 翌々月

$month2 = $month + 1;  #翌月は現在の月+1
$Y2 = $year;       #翌月の年は現在の年
if ($month2 > 12) {   #翌月が12より大きい場合は
$month2 -= 12;    #翌月 = 翌月 - 12
$Y2 = $year + 1;   #翌月の年は、現在の年 + 1
}
$month3 = $month2 + 1;  #翌々月は翌月+1
$Y3 = $Y2;        #翌々月の年は翌月の年
if ($month2 > 12) {   #翌々月が12より大きい場合は
$month2 -= 12;    #翌々月 = 翌月 - 12
$Y3 = $Y2 + 1;    #翌々月の年は、翌月の年 + 1
}

翌月の年月を算出する部分は関数にしたほうがスマートでしょう。
また、現在時刻からの換算で年月を割り出す方法もあります。
勉強してください。
    • good
    • 0
この回答へのお礼

何度もすみませんでした。
Tanigucchiさんの説明を元にif関数を使ってなんとかできました。

お礼日時:2008/11/07 14:09

ANo.1です。



先ほど提示したソースを理解してください。
同じ処理を $month2, $month3 に行えばできるはずです。

この回答への補足

なんどももうしわけありません。。
●calen.cgi の 220行目から
でしょうか???

補足日時:2008/10/31 16:33
    • good
    • 0

NEXTボタンの次月決定の処理と同じことをすれば解決します。



ちなみにNEXTボタンの処理は 以下。(コメントは下名が追加)
●calen.cgi の 220行目から
$next = $month + 1;  #次月は現在の月+1
$Y2 = $year;      #次月の年は現在の年
if ($next > 12) {   #次月が12より大きい場合は
$next -= 12;      #次月 = 次月 - 12
$Y2 = $year + 1;    #次月の年は、現在の年 + 1
}

この回答への補足

有難うございます。
実は、NEXTボタン(value=\"$next\")を使わずに表示しています。
ボタンで次の月へ行くのではなく、ボタンなしで3ヶ月分表示したいとのですが(>_<) むずかしいでしょうか。。。

補足日時:2008/10/31 16:21
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!