フォームのValue値をif文で変数に変換する方法

このQ&Aのポイント
  • フォームのValue値をif文を使用して変数(日付)に変換したい場合、ifで得られた変数をValueに置き換えることができません。
  • 万年カレンダーの作成を行っている際に、form内のバリュー値をif文で変数に変換して、それを元のValueに置き換えたいと考えています。
  • 具体的には、フォームに用意されている日付変更のためのボタン(PreviousYear、PreviousMonth、ThisMonth、NextMonth、NextYear)をクリックしたときに、if文で該当する日付を変数に代入し、その変数をform内のバリューに反映させたいと思っています。
回答を見る
  • ベストアンサー

フォームのValue値

万年カレンダーを作ってるのですが、やりたいこととしては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

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.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> といった具合でいいのでは

saddiq
質問者

お礼

ことこまかくご教授ありがとうございます。 hiddenを使って作成したら、問題なく要件を満たしました。 本当何回もありがとうございました。

その他の回答 (2)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

> IF文で得た変数を、Value値(URLに渡す内容)に、変数を入れたいと > 思っております。 > 現在は、URLにそのままPreviousYearが入ってしまうので、 > YY1、MM1などの変数のみを、URLに入れたいと思います。 ん~ 質問の趣旨がいまいち読み取れないのですが ... この『Value値』とは具体的な何を指すのでしょう SUB1に代入されるものということなのでしょうか HIDDEN属性の HDNに設定したいってことですか Postで行うのに『URLに入れたい』という意味が釈然としません

saddiq
質問者

補足

回答ありがとうございます。 バリュー値ですが、下記になります。 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など)を渡して作成したいと思ってます。 まだ始めたばっかなのでうまく説明ができなく、なんども申し訳ないですが、ご回答お願いいたします。 

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

Formの送信方法をPOSTで行っているのに そのデータを受け取るのをQueryStringから取得しようとしているため 動作が思わしくないのでしょう POSTの場合は Request.Formで受け取る GETの場合は Request.QueryStringで受け取る といった具合にします

saddiq
質問者

お礼

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

関連するQ&A

  • フォームのチェックボックスの値を次のページで読み込む方法

    「1.htm」のフォームでチェックボックスを作成し、 「2.asp」で結果を出力しようとしています。 が、複数チェックを入れるとエラーになります。 どこがまちがっているのでしょうか。 どなかたご教授ください。 宜しくお願いします。 ****1.htm**** <form method="POST" action="2.asp"> <INPUT type="checkbox" name="koumoku" value="1">1<br> <INPUT type="checkbox" name="koumoku" value="2">2<br> <INPUT type="checkbox" name="koumoku" value="3">3<br> </form> ****2.asp**** <% koumoku = Request.Form("koumoku") If koumoku = 1 then Response.Write "<p>1111</p>" End If If koumoku = 2 then Response.Write "<p>2222</p>" End If If koumoku = 3 then Response.Write "<p>3333</p>" End If ****エラーメッセージ****** 型が一致しません。: '[string: "1, 2, 3"]'

  • 複数のフォームから送信

    複数のフォームからtextの値を送信したいのですができますか?〒番号を入力して検索ボタンをおすと住所がでてきて最後に登録をしたいです。検索だけのプログラムはできてますがフォームを二つにすると両方のsubmitが登録になります・・・ 一応自分でいろいろためしましたがだめでした。。。 html,php,javascriptです。 二つともだめでした。。。。 rei1.php ------------------------- <html> <body <form method="POST" action="1.php"> お名前:<input type="text" name="name"> <br> <br> <form method="POST" action="yubin.php"> 〒:<input type="text" name="yubin"> <input type="submit" value="検索"> <br> 住所:<input type="text" name="zyu"> <br> </form> メールアドレス:<input type="text" name="email"> <br> <input type="submit" value="登録する"> </form> </body> </html> -------------------------------------- rei2.php -------------------------------------- <html> <head> <script language="javascript"><!-- function send() { document.nform.submit(); document.nform2.submit(); document.nform3.submit(); } //--></script> </head> <body> <form name="nform" method="POST" action="1.php"> お名前:<input type="text" name="name"> <br> </form> <form name="nform2" method="POST" action="yubin.php"> 〒:<input type="text" name="yubin"> <input type="submit" value="検索"> <br> 住所:<input type="text" name="zyu"> <br> </form> <form name="nform3" method="POST" action="1.php"> メールアドレス:<input type="text" name="email"> <br> <input type="submit" value="登録する"> </form> </body> </html> ------------------------------------

  • javascriptでinput属性の入力

    複数のボタンがあります。 それぞれのボタンによって、value値を変えたいと考えています。 通常であれば <button class='button' type='submit' name='volume' value='350'>350購入</button> <button class='button' type='submit' name='volume' value='450'>450購入</button> という形を利用しますが、理由があり、 type='submit' を使用できません。 そこで、 <input id="button350" type="button" value="350購入" /> <input id="button450" type="button" value="450購入" /> というsubmit属性の無いボタンを使用しながら、「javascriptを使いname value を抽出しsubmitまで持っていく」ことを考えています。 そこで、下記のようなものを2種類(350と450は別の記載方法でテスト)作ってみましたが、いずれもsubmitは出来ますが、value値を渡すことが出来ません。 どのように書けば、name属性にvalue値を渡すことが可能でしょうか? <form action="abc.php" method="post" name="form2" id="form2"> <script> $(function(){ $('#button350').click(function() { $('input[type=\'submit\']'); $('input[name=\'volume\']'); $('input[value=\'350\']'); $('#form2').submit(); }); $('#button450').click(function() { $('input[type=\'submit\'],[name=\'d4_buy_stock_volume2\'],[value=\'450\']'); $('#form2').submit(); }); }); </script> <BR> <BR> <input id="button350" type="button" value="350購入" /> <BR> <input id="button450" type="button" value="450購入" /> </form>

  • セッション

    セッションについて教えて下さい。 指定のID、パスワードでログインしようと思っています。 ソースを記載しますので、お教え下さい。 ID:aaa パスワード:111とします。 [送り側フォーム] <form action="/test2.asp" method="POST" id=form1 name=form1> <input type="text" name="id" value=""><br> <input type="password" name="passwd" value=""> <input type="submit" value="LOGIN" id=submit1 name=submit1> </form> とし、 [受け取り側、認証 test2.asp ] <% If Session("user_test") <> "1" Then Response.Redirect "/test.asp" Response.End() End If %>ここで認証を判断し、認証できなければtest.aspへもどるとし、 Dim id, passwd id = Request.Form("id") passwd = Request.Form("passwd") Session("user_login") = "id" Session("user_login") = "passwd" IF id = "aaa" and passwd = "111" THEN Session("user_test") = 1 Response.Write ("OK") ELSE Response.Write ("ちがうよ") END IF %> ID、パスワードをセッション変数にいれ、各ページで認証すると言う事をやりたいのですが、うまくいきません。 どこがわるいか、お教え下さい。 ※以前にも似たような質問をしているのですが、改善されずお手上げです。

  • フォームのレイアウト

    以下のようなフォームを作成しましたが、検索ボタンの下が妙に余っているのです。 これを上側と同じようにくっつけたいのですが、どうしたらよいでしょうか? よろしくお願いします。  <table border="1" width="200" border="0" cellspacing="0" cellpadding="2"> <tr><td> <div align="center" valign="middle"> <form method="get" action="url" target="_blank"> <input name="sitem" type="text" id="inputbox" size="20"><BR> <input name="Submit" type="submit" id="inputsubm" value="検索"> <input type="hidden" name="sv" value="6"> <input type="hidden" name="sid" value="12345"> <input type="hidden" name="su" value="bbb"> <input type="hidden" name="sn" value="aaa"> <input type="hidden" name="v" value="3"> </form></div> </td></tr></table>

    • ベストアンサー
    • HTML
  • Ifが正常に動作しない。

    下記のコードで、login.htmlからデータを適当に入力し てかえってくる処理が全て、空の表示になってしまう。 Ifが正常に動作しません、正常に動作するようにするにはどうすればいいのでしょうか? <login.html> <html> <body> <table> <tr> <td>id:</td> <td><input type="text" name="id"></td></tr> <tr><td>password:</td> <td><input type="password" name="pass"></td></tr> </table> <form methed="post" action="http://session.asp"> <input type="submit" name ="sb" value="login" > </form> </body> </html> session.asp <html> <body> <% if session("id")="" Or session("id")= null then if request("pass")="" Or request("id")= null then response.write "空" elseif request("pass")= "1234" then session("id")="login" response.write "ログインしました。" else response.write "違う" end if else response.write "ログインしました" response.write session("id") end if %> </body> </html>

  • 複数のランダムクイズの表示がうまくいきません・・・。

    以下のようなプログラムを作成しましたが、表示が思うようにいきません。。 本当なら複数の問題をランダムで5問ずつ表示したいのですが、すべて表示することができず、1問のみだったり、3問のみしか表示されなかったりとバラバラです。 記述方法が悪いのでしょうか?どなたか分かる方いらっしゃいましたらご教授お願いします。 ------------------------- <% accessdb="cityquiz" cn="DRIVER={Microsoft Access Driver (*.mdb)};" cn=cn & "DBQ=" & server.mappath(accessdb) set rs = Server.CreateObject("ADODB.Recordset") sql = "select * from quiz" rs.Open sql, cn, 1, 3 total_records=rs.recordcount randomize random_number=int(rnd*total_records)+1 rs.MoveFirst do while not rs.eof and counter <> random_number counter = counter + 1 if counter= random_number then response.write rs("問題") & "<br>" response.write "<input type='radio' name='Q1' vakue='" & rs("ID") & "1'>" & rs("1択") & "<br>" response.write "<input type='radio' name='Q1' vakue='" & rs("ID") & "2'>" & rs("2択") & "<br>" response.write "<input type='radio' name='Q1' vakue='" & rs("ID") & "3'>" & rs("3択") & "<br>" response.write "<input type='radio' name='Q1' vakue='" & rs("ID") & "4'>" & rs("4択") & "<br>" response.write "<br>" end if counter2 = counter + 2 if counter2= random_number then response.write rs("問題") & "<br>" response.write "<input type='radio' name='Q2' vakue='" & rs("ID") & "1'>" & rs("1択") & "<br>" response.write "<input type='radio' name='Q2' vakue='" & rs("ID") & "2'>" & rs("2択") & "<br>" response.write "<input type='radio' name='Q2' vakue='" & rs("ID") & "3'>" & rs("3択") & "<br>" response.write "<input type='radio' name='Q2' vakue='" & rs("ID") & "4'>" & rs("4択") & "<br>" response.write "<br>" end if counter3 = counter + 3 if counter3= random_number then response.write rs("問題") & "(3)<br>" & counter3 response.write "<input type='radio' name='Q3' vakue='" & rs("ID") & "1'>" & rs("1択") & "<br>" response.write "<input type='radio' name='Q3' vakue='" & rs("ID") & "2'>" & rs("2択") & "<br>" response.write "<input type='radio' name='Q3' vakue='" & rs("ID") & "3'>" & rs("3択") & "<br>" response.write "<input type='radio' name='Q3' vakue='" & rs("ID") & "4'>" & rs("4択") & "<br>" response.write "<br>" end if ~略~ rs.movenext loop %>

  • フォームについて

    <form action="test.php" method="GET"> <input type="hidden" name="page" value="1"> <input type="submit" value="index"></form> <form action="test.php" method="GET"> <input type="hidden" name="page" value="1"> <input type="submit" value="index"></form> --------------------------------------------- このようにして書くと、どうしてもボタンが縦に並んでしまいます。どのようにすれば横一列に並べる事が出来るでしょうか?

    • ベストアンサー
    • HTML
  • 確認画面を出す

    こんにちは。早速ですが現在下記のようなメールフォームを作成しているのですが、 <% 'On Error Resume Next If Len(Request("name")) = 0 then Response.Write "お名前が入力されていません。" & "<br>" Response.Write "前ページへ戻るボタンを押して下さい。" & "<br>" Response.Write "<br>" Response.Write "<input type='button' value='前ページへ戻る' onclick='JavaScript:history.go(-1);'>" & "<br>" ElseIf Len(Request("mail")) = 0 then Response.Write "メールアドレスが入力されていません。" & "<br>" Response.Write "前ページへ戻るボタンを押して下さい。" & "<br>" Response.Write "<br>" Response.Write "<input type='button' value='前ページへ戻る' onclick='JavaScript:history.go(-1);'>" & "<br>" ElseIf Len(Request("message")) = 0 then Response.Write "お問い合わせ内容が入力されていません。" & "<br>" Response.Write "前ページへ戻るボタンを押して下さい。" & "<br>" Response.Write "<br>" Response.Write "<input type='button' value='前ページへ戻る' onclick='JavaScript:history.go(-1);'>" & "<br>" else 'メール送信 Set bobj = Server.CreateObject("basp21") ' ASP svname = "xxxx" ' <== smtp サーバマシン名 mailto = "xxxxx" ' 宛先 mailfrom = "xxxxx" '差出し人 subj = "お問い合わせフォームより" ' 件名 body = "お名前      :"& Request("name") & vbCrLf _ & "電話番号     :"& Request("phone") & vbCrLf _ & "メール      :"& Request("mail") & vbCrLf _ & "お問い合わせ内容 :"& Request("message") & vbCrLf file = "" rc = bobj.SendMail(svname,mailto,mailfrom,subj,body,file) if rc <> "" then ' エラーチェック 'エラー! Response.Write "エラーで送信できませんでした。" & rc & "<br><br>" else Response.Write "お問い合わせありがとうございました。" & "<br>" Response.Write "メールを確認次第ご連絡させていただきます。" & "<br>" end if end if %> ここで入力させた内容を一度確認画面を出して、送信を行いたいと思うのですが、フォームの引き継ぎ方が分かりません。 どうぞ皆様のお力をお貸し下さい。 宜しくお願いします。

  • メールフォームについて

    この中にどのようなHTMLを書けば自分のPCにメールが届く ようになりますか?よろしくお願いします。 <h2>■MAIL FORM</h2> <div class="text"> <form><table><tr><td width="100" align=right> NAME</td><td align=right><input type="text" name="Name" size="34"></td></tr><tr><td width="100" align=right> MAIL</td><td align=right><input type="text" name="Mail" size="34"></td></tr></table> <TEXTAREA NAME="Comments" ROWS="8" COLS="39" value="comments"></TEXTAREA> <br> <table><tr><td width="100" align=right> </td> </tr><tr> <td width="100" align=right> URL</td><td><input type="text" name="URL" value="http://" size="34"></td></tr><tr><td></td><td align="right"> <INPUT TYPE="reset" VALUE=" Reset "> <INPUT TYPE="submit" VALUE=" Send "></FORM> </td></tr></table><br></div>

    • ベストアンサー
    • HTML

専門家に質問してみよう