- 締切済み
12月から1月へのリンク
apacheログ集計プログラムを作っています。 全体の流れとしては、ログを指定したテキストファイルに書き出し、 それを読み込み、適切な形に直し、HTMLテーブルにいれて表示、という感じです。 その中の適切な形に直すところなのですが、 select sysdate, to_char(add_months(to_date($yearmonth,'YYYYMM'),-1),'YYYYMM') as LAST_MONTH, to_char(add_months(to_date($yearmonth,'YYYYMM'),+1),'YYYYMM') as NEXT_MONTH from テーブル名 で200812や 200901といった日付をとってきています。 (データはしっかり入ってきます。) このデータを利用し、 $last_monthには200812 $next_monthには200901のように入っていると仮定し、 リンクを作りますと、 # 先月のリンク my $href_last_month = undef; if ($last_month) { my $last_month_year = substr($last_month,0,4); my $last_month_month = substr($last_month,4,2); $href_last_month = qq(<a href="$THIS?year=$last_month_year&month=$last_month_month"><<</a>); } # 来月のリンク my $href_next_month = undef; if (($next_month) && ($next_month <= $thismonth)) { my $next_month_year = substr($next_month,0,4); my $next_month_month = substr($next_month,4,2); $href_next_month = qq(<a href="$THIS?year=$next_month_year&month=$next_month_month">>></a>); } のようになりました。 しかし、これをブラウザで表示させても、 先月(=200811へのリンク)へのリンクは表示されますが、 来月(=200801へのリンク)が表示されません。 200812(当月、今いる画面)に #来月のリンク部分 で+1をしても、200813となってしまい、 エラーになるからだと思います。 どなたか、200812の画面で、 今表示されない200901へのリンクボタン=来月へのリンクボタンを表示できるようにするには どうしたらいいか教えてくださいませ。 ちなみに200812や200901などは、自動でとってきており、 一番はじめのindex.cgiの画面には必ず当月がとれてきます(今日index.cgiをアクセスすれば、200901のログ集計結果ページが出ます。 このとき、200902はまだ訪れておりませんから、来月へのリンクボタン>>は表示されません。 先月への<<のみ表示されます、先月へは問題なくリンクできます。 13月を1月としてくれる、select文でのadd_month関数を使っているのに。。。 初心者なものでここでギブです。。お助けください。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
正直いって「# 来月のリンク部分」にある if (($next_month) && ($next_month <= $thismonth)) という条件の意味 (特に後ろのところ) が分からんのだけど, まあ基本的には同じですね>#2. 一度「年」と「月」をわけて「月」をインクリメントする. で, 「月」が 13になったら「年」をインクリメントして「月」を 1に戻す, と.
- INTLINSIDE
- ベストアンサー率42% (383/907)
失礼しました perl でしたね・・・。
- INTLINSIDE
- ベストアンサー率42% (383/907)
VBでしょうか。 長らく使ってないので、書けませんが、ロジック的には、 200812を日付型にして+1 すれば 200901 になると思います。 あるいは、12+1 で 12を超えたら 1 にすれば yearを+1してmonthを1にすればよいだけのことではないかと。 イメージとしては以下のような感じでしょうか。 if (next_month>12){ next_month=1; next_year=next_year+1; }