プロが教えるわが家の防犯対策術!

万年カレンダーを作ってるのですが、やりたいこととしてはform内のバリュー値を、if文で変数(日付)に変更してそれをFrom内のバリューに置き換えたいのですが、ifででた変数がValueにおきかえれません。

<form method="POST" action="jan_Edit.asp" id=submit>
<!--<input type="hidden" name="HDN" Value =<% = SBMT %> >-->
<input type="submit" value="PreviousYear" id=SUB1 name=SUB1>
<input type="submit" value="PreviousMonth" id=SUB1 name=SUB1>
<input type="submit" value="ThisMonth" id=SUB1 name=SUB1>
<input type="submit" value="NextMonth" id=SUB1 name=SUB1>
<input type="submit" value="NextYear" id=SUB1 name=SUB1>
</form>

dim SUB1
SUB1 = Request.querystring("SUB1")

if SUB1="ThisMonth" then
Response.Write("AA<br>")
SUB1 = ""
elseif SUB1="PreviousYear" then
Response.Write("bb<br>")
SUB1=YY1 ' YY1は去年です
elseif SUB1="PreviousMonth" then
Response.Write("cc<br>")
SUB1=MM1 'MM1は一か月前です
elseif SUB1="NextMonth" then
Response.Write("dd<br>")
SUB1=MM2 'MM2は一か月後です
elseif SUB1="NextYear" then
Response.Write("ee<br>")
SUB1=YY2 'YY2は一年後です
end if

A 回答 (3件)

ん~


日付の年、月を記憶しておく要素をhiddenなどで用意しておいて使ったほうがよさそうに思います

SUB1で送信された内容によって 年の加減算、月の加減算を行って万年カレンダーを表示
といったロジックのほうがすっきりすると思います

<%
 dim YY1, MM1, cmd
 if Request.QueryString("Year")<>"" then
  ' GETで呼ばれた場合
  ' ttp://sample.jp/test.asp?Year=2008&Month=3
  YY1 = Request.QueryString("Year")
  MM1 = Request.QueryString("Month")
  cmd = ""
 else
  ' POSTで呼ばれた場合
  ' 送信データから 年、月、どのボタンかを取得
  YY1 = Request.Form("Year")
  MM1 = Request.From("Month")
  cmd = Request.Form("SUB1")
  if cmd<>"" then
   select case cmd
   case "+1 Year"
    YY1 = YY1 + 1
   case "-1 Year"
    YY1 = YY1 + 1
   case "+1 Month"
    MM1 = MM1 + 1
    ' 12月を超えた場合の処理
    if MM1>12 then
     MM1 = 1
     YY1 = YY1 + 1
    end if
   case "-1 Month"
    MM1 = MM1 - 1
    ' 1月を超えた場合の処理
    if MM1 < 1 Then
     MM1 = 12
     YY1 = YY1 - 1
    end if
   end select
  end if ' cmd<>""
 end if  ' Request.QueryString("Year")<>""
 if YY=0 then
  ' 初期値がない場合
  dim dt
  ' 現在の日付で初期化
  dt = now
  YY1 = Year( dt )
  MM1 = Month( dt )
 end if
%>
<form method="post" id="myForm">
  <input type="hidden" name="Year" value="<%= YY1 %>">
  <input type="hidden" name="Month" value="<%= MM1 %>">
  <input type="submit" name="SUB1" value="-1 Year">
  <input type="submit" name="SUB1" value="-1 Month">
  <input type="submit" name="SUB1" value="+1 Year">
  <input type="submit" name="SUB1" value="+1 Month">
</form>
Year: <%= YY1 %><br>
Month: <%= MM1 %><br>
といった具合でいいのでは
    • good
    • 0
この回答へのお礼

ことこまかくご教授ありがとうございます。

hiddenを使って作成したら、問題なく要件を満たしました。

本当何回もありがとうございました。

お礼日時:2009/03/31 19:09

> IF文で得た変数を、Value値(URLに渡す内容)に、変数を入れたいと


> 思っております。
> 現在は、URLにそのままPreviousYearが入ってしまうので、
> YY1、MM1などの変数のみを、URLに入れたいと思います。

ん~ 質問の趣旨がいまいち読み取れないのですが ...

この『Value値』とは具体的な何を指すのでしょう
SUB1に代入されるものということなのでしょうか
HIDDEN属性の HDNに設定したいってことですか

Postで行うのに『URLに入れたい』という意味が釈然としません

この回答への補足

回答ありがとうございます。
バリュー値ですが、下記になります。
Value値=NextYearなどのsubmitのバリュー内になります。なので、今回で言う[NextYear,NextMonth…]などになります。
hiddenは、コメントアウトしてるので無視してください。紛らわしく申し訳ない。
こちらを、if文で変数(YY1、MM1など)に変更し、YY1などをNextYearに置き換えたいと思ってます。
イメージとしてはいかになります。

<input type="submit" value="NextYear" id=SUB1 name=SUB1>
のNextYearの値を、YY1に変更したいと思ってます。
Submitを押した際、if文で変数(YY1など)の取得はできているのでIF文は機能しているのですが、IF文で得た変数(YY1,MM1など)が、Formのバリューの値にはいっていかないのですが、その際になにか必要な処理があるのでしょうか?

簡単に言うと、submitのValueに、YY1などの変数を入れたいのです。
hiddenを使ってもいいので、なにかいい案があったらお願いします。

最終的には、URLにhttp://hoge.asp?SUB1=YY1のようにして、1つのASPで、万年カレンダを作成しており、ボタンを押した時、URLに日付(YY1など)を渡して作成したいと思ってます。

まだ始めたばっかなのでうまく説明ができなく、なんども申し訳ないですが、ご回答お願いいたします。 

補足日時:2009/03/30 00:50
    • good
    • 0

Formの送信方法をPOSTで行っているのに


そのデータを受け取るのをQueryStringから取得しようとしているため
動作が思わしくないのでしょう

POSTの場合は Request.Formで受け取る
GETの場合は Request.QueryStringで受け取る
といった具合にします
    • good
    • 0
この回答へのお礼

redfox63さん、ご回答ありがとうございます。
PostでURLに渡してる内容を見るために、一度GETにした内容が残ってしまいましたが、現在はrequest.formに変更しております。
その、IF文で得た変数を、Value値(URLに渡す内容)に、変数を入れたいと思っております。
現在は、URLにそのままPreviousYearが入ってしまうので、YY1、MM1などの変数のみを、URLに入れたいと思います。

お手数ですが、再度お分かりでしたら教えてください。
よろしくお願いいたします

お礼日時:2009/03/29 22:23

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