• 締切済み

ラジオボタン選択内容を取得し二つの処理をしたい場合は?

分かりづらい質問ですいません。 フォームのラジオボタンで選択された値に対し、 二つの処理を加えたいのですがどのようにしたらよいでしょうか? 例えば、 <form action=\"$script\" method=\"POST\"> <input type=hidden name=mode value=\"kekka\"> <input type=radio name=$queno value=\"ans1\" id=\"ad$no\" checked>はい <input type=radio name=$queno value=\"ans2\" id=\"ad$no\">いいえ </form> このフォームでは値はsub kekkaで処理され、ポイント計算をするとします。 この選択された値をもう一方のsub kaisetuにて値の一覧表示をさせたいのですが。 例:心理テストの結果表示で Q1は『はい』を選択 Q2は『いいえ』を選択 sub kaisetuに 同じ値を受け渡すにはどのようにしたら良いでしょうか? どちらか一方ではうまく処理できるんですが、二つ同時には処理できないようです。 どなたか教えてください。

  • Perl
  • 回答数5
  • ありがとう数4

みんなの回答

  • arcsin
  • ベストアンサー率70% (28/40)
回答No.5

あれ、参考URLが消去されてしまったようですね^^; 繰り返してしまいますが、変数「$queno」は質問1と質問2で違う値がくるようにしていますか??同じ値にしている場合は#4の方がおっしゃっているように、デコード時に上書きされてしまいます。 もし、 質問1で$queno=1 質問2で$queno=2 であるとすればデコード時に(localやmy 変数でない)連想配列%inを使った場合は、例えば $in{'1'} $in{'2'} という形でどこでも参照できると思いますよ。 まず第一に1つめのサブルーチンではちゃんと2つの値を取得できていますか? どのような形でフォームからもらったデータを変数に格納していますか?

soul4u
質問者

お礼

この状態ではデータを変数に格納出来ていないのでしょうか? (↓この部分での受け渡しは格納されない?) print "<input type=hidden name=mode value=\"kekka\">\n"; あと出来ましたら連想配列%inの使い方を詳しく教えていただけませんか? 初心者なのに改造を試みる自体無謀なのかもしれませんが、よろしくお願い致します。m(_ _)m

soul4u
質問者

補足

事務局にURLを消去されてしまいました (^_^;) 一応 $queno = $queno + 1; としてありますので、HTMLの書き出しの場合は Q1=1、Q2=2、... といった具合になっています。 スクリプトは以下の通りです。 sub question { &lock; # ログを開く open(IN,"$question") || &error("Open Error : $question","LK"); @lines = <IN>; close(IN); &header; print "<form action=\"$script\" method=\"POST\">\n"; print "<input type=hidden name=mode value=\"kekka\">\n"; print "<table width=$tw border=5 cellpadding=10 cellspacing=1 bordercolor=#FF9900>\n"; foreach (@lines) { ($q_no,$que,$ans1,$ans2,$ans3,$po1,$po2,$po3,$exp) = split(/<>/); $queno = $queno + 1; print "<tr><td VALIGN=top NOWRAP align=center bgcolor=><font color=\"$qno\"><B>Q$queno</B></font></td>\n"; print "<td><font color=\"$qtext\">$que</font></td>\n"; if ($ans1 ne ""){ $no = $no + 1; print "<td align=center NOWRAP bgcolor=><input type=radio name=$queno value=\"ans1\" id=\"ad$no\" checked>\n"; print "<a onClick=\"document.forms[0].ad$no.checked ?document.forms[0].ad$no.checked=false:document.forms[0].ad$no.checked=true\">$ans1</a></td>\n"; } if ($ans2 ne ""){ $no = $no + 1; print "<td align=center NOWRAP bgcolor=><input type=radio name=$queno value=\"ans2\" id=\"ad$no\">\n"; print "<a onClick=\"document.forms[0].ad$no.checked ?document.forms[0].ad$no.checked=false:document.forms[0].ad$no.checked=true\">$ans2</a></td>\n"; } if ($ans3 ne ""){ $no = $no + 1; print "<td align=center NOWRAP><input type=radio name=$queno value=\"ans3\" id=\"ad$no\">\n"; print "<a onClick=\"document.forms[0].ad$no.checked ?document.forms[0].ad$no.checked=false:document.forms[0].ad$no.checked=true\">$ans3</a></td>\n"; } } print "</table>\n"; print "<br><br>\n"; print "<input type=hidden name=queno value=\"$queno\">\n"; print "<INPUT TYPE=submit VALUE=\"診断する\"> <INPUT TYPE=reset VALUE=\"やり直す\">\n"; print "</form>\n"; print "<a href=\"$home\" target=\"_top\">[戻る]</a> <a href=\"$script?mode=message\">[感想を読む]</a><BR><a href=\"$script?mode=admin1\">[管理用]</a>\n"; &footer; &unlock; exit; }

回答No.4

まず、Q1とQ2のパラメータの名前が同じ($queno)なので、$quenoのvalueは上書きされます。 なんだか怪しいところが多数見受けられますが、基本的なPerlの文法は理解されてますか?

soul4u
質問者

お礼

お答え頂きありがとうございます。 Perlは正直いって初心者です。 どのようにしたら解決できるのかさっぱり分からない状態です。 一応自分なりにスクリプトをいじってみましたが この部分だけ思うように動きません。 何とかお願いします!!

  • arcsin
  • ベストアンサー率70% (28/40)
回答No.3

的外れかもしれませんが、$quenoが問題ごとに1,2という風に値が違うならば、 $in{'1'} $in{'2'} という風にして参照できませんか?

soul4u
質問者

お礼

お答え頂きありがとうございます。 一応変えてみたのですが参照できませんでした。

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.2

>一度処理された内容を表示させる ?????? 受け取ったデータではなくて、#結果表示画面の出力内容という意味ですか?それとも??? html formだけでは状況説明になっていません。 メインルーチン、およびそれぞれのサブルーチンのスクリプトソースを全部載せてください。 postされたデータを、そのまま順に処理させるなら以下の手順でいいはずなんですけど? %in = &ReadParse(); ### cgi-lib.pl でデータ取得の場合 #(必要なら文字コード変換処理をここに)# &kekka(%in); &kaisetu(%in) まさか、 sub kekka{ #略 exit; } とかしてる訳じゃないよね。

soul4u
質問者

補足

度々すみません。どうも説明がうまくいかなくて。 一度処理された内容を表示させる、ではなく、受け取ったデータです。すみませんでした。

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.1

perl掲示板だから、perlの話ですよね? 引数受け渡し法が解らないという意味ですか? &kaisetu(%list); sub kaisetu{ undef %uketori; %uketori = @_; }

soul4u
質問者

お礼

回答していただいてありがとうございます。 ちょっと質問を補足すると、まず sub question{ <form action=\"$script\" method=\"POST\"> <input type=hidden name=mode value=\"kekka\"> Q1 <input type=radio name=$queno value=\"ans1\" id=\"ad$no\" checked>はい <input type=radio name=$queno value=\"ans2\" id=\"ad$no\">いいえ Q2 <input type=radio name=$queno value=\"ans1\" id=\"ad$no\" checked>はい <input type=radio name=$queno value=\"ans2\" id=\"ad$no\">いいえ <INPUT TYPE=submit VALUE=\"診断する\"> <INPUT TYPE=reset VALUE=\"やり直す\"> </form> } という質問で診断ボタンを押すと sub kekka{ #ポイント計算し #結果表示画面 } に値を受け渡します。 その後 sub kaisetu{ #解説文の表示と各設問ごとの選択された値を表示 } というような流れでスクリプトを組みたいのですが、一度処理された内容を表示させるには一時的にログファイルに書込みしなければ表示されないのでしょうか? できればログへの書込みはせずにそのまま受け渡したいのですが。 よろしくお願いします。

関連するQ&A

  • 選択したたラジオボタンの値をSUBMITボタンに

    選択したたラジオボタンの値をSUBMITボタンの名前として自動的に替えたいのですが、助言をいただけますか。 イメージは下記です。★の部分に、クリックごとにradioの値を入れたいのです。 <script Language="JavaScript"><!-- function set() { n = document.myFORM.Radio.value; } // --> </script> <FORM ACTION="add.cgi" METHOD="POST" name="myFORM"> <INPUT TYPE="RADIO" NAME="Radio" VALUE="東京" onclick="set()" CHECKED> <INPUT TYPE="RADIO" NAME="Radio" VALUE="大阪"> <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="★"></form>

  • ラジオボタン選択で「複数ラジオボタン」をアクティブにするには?

    ■下記サンプルソースのラジオボタンの「はい」を選択すると複数のラジオボタンがアクティブになるJavaScriptがわからず困っております。教えて頂けないでしょうか。 (ページ開いた際は「いいえ checked」で複数ラジオボタンはグレーで選択無効) 用途はアンケートフォームです。 可能であればシンプルなソースで「最新のWinIE、MacSafari」に対応していると非常に助かります。先輩方よろしくお願いします。 <form name="form2" method="post" action=""> <table> <tr> <td>■「はい」を選択すると、ラジオボタン(カテゴリー1~4)がアクティブになる。 </td> </tr> <tr> <td> <input name="radiobutton" type="radio" value="radiobutton">はい <input name="radiobutton" type="radio" value="radiobutton" checked>いいえ </td> </tr> <tr> <td> <input name="radiobutton" type="radio" value="radiobutton">カテゴリー1 <input name="radiobutton" type="radio" value="radiobutton">カテゴリー2 <input name="radiobutton" type="radio" value="radiobutton">カテゴリー3 <input name="radiobutton" type="radio" value="radiobutton">カテゴリー4 </td> </tr> </table> </form>

  • ラジオボタンの値を・・・・・

    <html> <head> <script language="javascript"> function osu(){ document.form1.text1.value=document.form1.radio1.value; } </script> </head> <body> <form name="form1"> <input type="radio" name="radio1" value="男" checked>男 <input type="radio" name="radio1" value="女">女 <input type="button" value="押す" onClick="osu()"> <input type="text" name="text1"> </form> </body> </html> ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 上記のプログラムは、選択されたラジオボタンの値をテキストボックスに表示させるプログラムなんですが、何故かラジオボタンの値が表示されず、「undefined」というのが表示されます。 どうすれば、「男」または「女」という値を表示させることができますか? ちなみにこれは、「○○○.html」で保存します

  • ラジオボタンについて

    つまらない質問ですがどうか教えてください。 <form name="myform"> ・ ・ ・ <INPUT TYPE="RADIO" NAME="R1" VALUE="1">関連あり</INPUT> <INPUT TYPE="RADIO" NAME="R1" VALUE="2">関連なし</INPUT> <INPUT TYPE="RADIO" NAME="R1" VALUE="3">不明</INPUT> </form> 上記のようなラジオボタンを作ったのですが、 このラジオボタンのチェックされた値を取得するには document.myForm.cGyoumu.value ではできないのでしょうか? LOOPさせながらdocument.myForm.elements(i).checked で探さないと取得できないのでしょうか? 同じフォーム内にラジオボタンが複数あるため、 この方法はあまりやりたくありません。 ほかに方法がありましたら、どうか教えてください。

  • ラジオボタンでうまくするには・・・・

    初めまして。 現在下記のプルダウン形式で、一つの価格が同じなので問題なく動くのですが <FORM action="cart/sys/cart.cgi" method="post"> <INPUT type=hidden value=005 name=num> <INPUT type=hidden value=●●● name=name> <INPUT type=hidden value=2000 name=tan> <SELECT name=sur> <OPTION value="" selected>購入数量</OPTION> <OPTION value=1>1</OPTION> <OPTION value=2>2</OPTION> <OPTION value=3>3</OPTION> <OPTION value=4>4</OPTION> <OPTION value=5>5</SELECT> <INPUT type=submit value=カートに入れる> </FORM><BR> <FORM action="・・・/cart.cgi" method="post"> <INPUT type=hidden value=005 name=num> <INPUT type=hidden value=●●● name=name> <INPUT type=hidden value=2000 name=tan> </FORM> 同じ商品で1・2・3・4・5のそれぞれに単価が変わる設定をしたいのですが、うまくいく方法が見つからないです。 ラジオボタン形式で作ってみたものの・・・・ <FORM action="・・・/cart.cgi" method="post"> <INPUT type=hidden value=005 name=num> <INPUT type=hidden value=●●● name=name> <INPUT type=submit value=カートに入れる> </FORM> <FORM> <INPUT type="radio" name="name1" value="2000">1袋<BR> <INPUT type="radio" name="name1" value="3900">2袋<BR> <INPUT type="radio" name="name1" value="5800">3袋<BR> <INPUT type="radio" name="name1" value="7500">4袋<BR> <INPUT type="radio" name="name1" value="8500">5袋</FORM> としてみましたがうまくいきません。 なにか方法ございましたら、ご教授いただければと思います。

    • ベストアンサー
    • HTML
  • ラジオボタンを選択すると、他のラジオボタンの動きを制御したい

    radio1~radio3のいずれか「はい」を選択すると、 その他が強制的に「いいえ」に切り替わるスクリプトはどのように作成すればよろしいでしょうか? <INPUT TYPE=radio NAME="radio1" VALUE="1">はい <INPUT TYPE=radio NAME="radio1" VALUE="2">いいえ <INPUT TYPE=radio NAME="radio2" VALUE="1">はい <INPUT TYPE=radio NAME="radio2" VALUE="2">いいえ <INPUT TYPE=radio NAME="radio3" VALUE="1">はい <INPUT TYPE=radio NAME="radio3" VALUE="2">いいえ

  • チェックボックスの複数選択の値をCGIで取得する方法

    お世話になります。 表記の通りチェックボックスで複数選択するHTMLを次のように作成しました。 ======== 送信元HTML ========= <FORM action='******.cgi' method='POST'> <INPUT type='checkbox' name='Q6_ans' value='1'> <INPUT type='checkbox' name='Q6_ans' value='2'> <INPUT type='checkbox' name='Q6_ans' value='3'> <INPUT type='checkbox' name='Q6_ans' value='4'> <INPUT type='checkbox' name='Q6_ans' value='5'> <input type=submit value='実  行'> </FORM> これを受取るPerl-CGIのコードをこうしました。 ======== 受信するcgi ========= my @files_2 = split(/\0/,$in{'Q6_ans'}); for($i=0;$i<=4;$i++){ if($files_2[$i] ne ""){$d[6].=$files_2[$i]." , ";} } 例えばチェックボックスで2と3を選ぶと$d[6]の値は「2 , 3 ,」となるつもりだったんですが、意に反し「23 ,」となります。 配列の値を調べると$files_2[0]に「23」が代入されて、$files_2[1]から$files_2[4]は空です。つまり「split(/\0/,$in{'Q6_ans'})」での分割がされていないようなのです。 何が原因で、どこが間違いなのでしょう。チェックボックスの値は\0で区切られていると思っているのですが、間違いでしょうか?

  • jqueryでラジオボタンの値を取得

    <input name="nr" value="0" type="radio" />いない <input name="nr" value="1" type="radio" />いる の選択に応じて400円の金額を追加するプログラムをjqueryで作成しようとしています。 ラジオボタンの選択の値を取得することが出来ません。どのようにしたら良いでしょうか? 教えてください。 よろしくお願いします。

    • ベストアンサー
    • AJAX
  • ラジオボタンを選択したらテキストに数字入力

    ラジオボタンを選択してvalueが1だったら、テキスト欄(Q1_TEXT)に0を入力し、それ以外だったら何もしない、というJavascriptを書きたいです。ラジオボタンによって、テキスト欄の有効化、無効化に関する書き方は見つけられたのですが、このような挙動について見つけることができませんでした。 ご存じの方がおられましたらご教示いただけますと助かります。 よろしくお願いいたします。 <body> <form> <INPUT type="radio" name="Q1" value="1"> <INPUT type="radio" name="Q1" value="2"> <INPUT type="radio" name="Q1" value="3"> <INPUT type="text" name="Q1_TEXT" value="_Q1_TEXT_CHK_" SIZE="7"> </form> </body>

  • 複数のラジオボタン選択肢によりsubmitを押せなくする

    初めて質問させていただきます。 ラジオボタンが下記の選択状態の時だけ「送信(submit)」ボタンを enable で表示させたいです。 1:● 2:○ 1:● 2:○ それ以外の選択肢では「送信(submit)」ボタンを disabl で押せないようにしたいです。 調べて、近い動作にはなりましたが、javascriptに関して 殆ど知識がないため、これから先がさっぱりわかりません。 ぜひ教えを乞いたく参りました。お知恵をお貸しください<(__)> どうぞ宜しくお願い致します。 <HTML> <HEAD> <script type="text/javascript"><!-- function unlock1(el){el.form.send.disabled=false;} function unlock2(el){el.form.send.disabled=true;} //--> </script> <form> 1:<input type="radio" name="radio1" value="1" onClick="unlock1(this)"> 2:<input type="radio" name="radio1" value="2" onClick="unlock2(this)"><br> 1:<input type="radio" name="radio2" value="1" onClick="unlock1(this)"><br> 2:<input type="radio" name="radio2" value="2" onClick="unlock2(this)"><br> <input name="send" type="submit" value="送信" disabled > </form> </BODY> </HTML>

専門家に質問してみよう