• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:携帯用のフォームで、チェックボックス複数回答の件)

携帯用のフォームで、チェックボックス複数回答の件

このQ&Aのポイント
  • 携帯用のCGIフォームで、複数回答のチェックボックスを設定していますが、最後のチェックボックスのみが表示されます。
  • HTMLページとCGIページの設定を見直しても、どこを修正すればいいかわからない状況です。
  • 質問文章のCGIページの一部を提示しましたが、どこに追加するべきか分からないため、助言をいただけると助かります。

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

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

ハッシュに代入するのですから、キーが同じでしたら値は上書きされてしまいます。 $hash{key} .= $value として追加するか、あらかじめ複数の値があるとわかっている場合はハッシュではなく、リストに入れるとかすると良いです。 送信先(actiom)を、 http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi#form_check にして確認する。  ここで分かるように、すべてのチェックボックスのnameを替えてしまうというのも手です。

riedd
質問者

お礼

ご説明をどうもありがとうございました。 ご説明の内容を、ちょっと調べつつ、試して見たのですが、CGIの知識が足りずに、できなかったため、 チェックボックスのname(id)を全部別に割り振って、それぞれを重複して書き出すようにやってみましたら、できました! アドバイスをいただきまして、どうもありがとうございました。もう少し勉強してみます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • チェックボックス 横並びに保存

    htmlファイルから、 <form action="./ppp.cgi" method="POST"> <table border="1"> <tr> <td> 好きな色(複数選択可):</td> <td> <input type="checkbox" name="color" value="white">白 <input type="checkbox" name="color" value="red">赤 <input type="checkbox" name="color" value="green">緑 <input type="checkbox" name="color" value="pink">桃色 <input type="checkbox" name="color" value="yellow">黄色 <input type="checkbox" name="color" value="purple">紫 <input type="checkbox" name="color" value="orange">橙色 <input type="checkbox" name="color" value="blue">青 <input type="checkbox" name="color" value="black">黒</td></tr> </table><br> <input type="submit" value=" 送信 "> <input type="reset" value=" クリア "> でデータを送信して、 ------------------------------------- #!/usr/bin/perl require './jcode.pl'; $file = "houkoku.txt"; if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } open( WRITE, "+< $file" ); @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*value,'sjis'); # タグ処理 $value =~ s/</&lt;/g; $value =~ s/>/&gt;/g; $value =~ s/\t//g; $value =~ s/\r\n/\n/g; $value =~ s/\r/\n/g; $value =~ s/^\s+//; $value =~ s/\s+$//; $FORM{$name} .= (defined $FORM{$name}) ? "," . $value : $value; @value = $value; print WRITE"@value\n"; } foreach ( keys %FORM ) { if( $FORM{$_} eq '' ) { $FORM{$_} = '入力がありません'; } } if ( $FORM{'color'} eq '' ) { $FORM{'color'} = '入力がありません'; } print "Content-Type: text/html\n\n"; print <<END_HTML; <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <center> <table border="1"> <td> あなたの好きな色</td> <td> $FORM{'color'}</td></tr> </table> </center> </body> </html> END_HTML exit; ---------------------------------- でデータを受け取って、houkoku.txtに書き込みをしたいのですが、 一応書き込みはされていますが、縦にデータが並んでいます。 横にカンマ仕切りで、white,yellow,redと保存するにはどうしたらよいでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • チェックボックスからの値を受け取る

    つたなくもperlを使ってCGIスクリプトを作っている者です。 <input type="checkbox" name="test" value="1">1 <input type="checkbox" name="test" value="2">2 <input type="checkbox" name="test" value="3">3 上記のように、nameは全て同じ名前にして、データを受け取りたいと思っています。 ただ、 if($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{CONTENT_LENGTH}); } require './jcode.pl'; @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # 文字コードをS-JIS変換 &jcode'convert(*value, "sjis", "", "z"); $data{$name} = "$value"; と、最初に$data{test}に格納をしています。 現在は全ての項目にチェックをいれても、 3 と表示されてしまいます。 なんとかjcode.lib以外のモジュールを使わないで、 $data{test}に選択された全ての項目を入れることはできないでしょうか。 ご教授いただけましたら幸いです。

    • ベストアンサー
    • Perl
  • チェックボックスで得た複数回答をCGIモジュールを用いて簡潔に取り出すには

     <input type="checkbox" name="id" value="0">  <input type="checkbox" name="id" value="1">  <input type="checkbox" name="id" value="2">  <input type="checkbox" name="id" value="3"> のようなフォームのキーと値を、CGIの方では%inで受け取ります。 まずCGIモジュールを用いてキーと値を$keyと$valに格納したのち、idというキーは4つの値を受け取るので、  foreach my $key ($q->param()) {   my $val=$q->param($val);   if(defined($in{$key)) {    $in{$key}.="\0";   }   $in{$key}.=$val;  } 私のイメージでは、この処理で  $in{'id'}="0\01\02\03"; が得られるつもりでした。 ところが実際には$q->param('id')で取り出せるのは最初の"0"のみで、したがって得られる結果は  $in{'id'}="0"; となります。 CGIモジュールを使わなければ、  my $buf;  if(ENV{'REQUEST_METHOD'} eq "POST") {   read(STDIN,$buf,$ENV{'CONTENT-LENGTH'});  }  else {   $buf=$ENV{'QUERY_STRING'};  }    foreach(split(/&/,$buf)) {   my ($key,$val)=split(/=/);      if(defined($in{$key)) {    $in{$key}.="\0";   }   $in{$key}.=$val;  } のようにして、イメージ通り  $in{'id'}="0\01\02\03"; を得られますが、CGIモジュールは他でも使うので、どうせならCGIモジュールを使った簡便なコーディングが出来ないものかと思案する次第です。 しかしながら私に思いつく方法は  <input type="checkbox" name="id0" value="0">  <input type="checkbox" name="id1" value="1">  <input type="checkbox" name="id2" value="2">  <input type="checkbox" name="id3" value="3"> として、まずCGIモジュールを用いた上記の方法で$in{'id0'}~$in{'id3'}までを生成し、次に  if(/(\w+)\d/) {   if(defined($in{$1})) {    $in{$1}.="\0";   }   $in{$1}.=$val;  } とやる方法しか思いつきません。 チェックボックスを用いて複数回答を得るというのはよくある話なので、CGIモジュールにもっと良いコーディングの仕方がありそうな・・・と思ってしまうのですが、これが最善の方法なのでしょうか?

    • ベストアンサー
    • Perl
  • 複数のチェックボックスをチェックしたい

    質問させてください。 複数のチェックボックスを項目別に全てチェックするようなjqueryの書き方をご教授いただきたいです。 <table> <tr> <td> <input type="checkbox" name="" />まとめてチェック </td> </tr> <tr> <td> <li><input type="checkbox" name="" value="" />a</li> <li><input type="checkbox" name="" value="" />b</li> <li><input type="checkbox" name="" value="" />c</li> <li><input type="checkbox" name="" value="" />d</li> </td> </tr> <tr> <td> <input type="checkbox" name="" />まとめてチェック </td> </tr> <tr> <td> <li><input type="checkbox" name="" value="" />e</li> <li><input type="checkbox" name="" value="" />f</li> <li><input type="checkbox" name="" value="" />g</li> <li><input type="checkbox" name="" value="" />h</li> </td> </tr> <tr> <td> <input type="checkbox" name="" />まとめてチェック </td> </tr> <tr> <td> <li><input type="checkbox" name="" value="" />i</li> <li><input type="checkbox" name="" value="" />j</li> <li><input type="checkbox" name="" value="" />k</li> <li><input type="checkbox" name="" value="" />l</li> </td> </tr> </table> 上記のようにそれぞれの項目に「まとめてチェック」のチェックボックスがあり、 そこに該当するチェック項目は全てチェックorチェックを外す っという挙動の実装を考えています。 jqueryでやりたいのですが、javascript、jqueryがかなり苦手でいまいちいきません。 ググって $(function(){ $('#all').click(function(){ if(this.checked){ $('#check input').attr('checked','checked'); }else{ $('#check input').removeAttr('checked'); } }); }); このソースを見つけたのですが、これだと一つの項目でしか実装できず 項目分このjqueryを書くのも余り良い書き方だと思えません。 どなたか、ご教授お願いいたします。

  • 複数あるチェックボックスの入力チェックするには?

    チェックボックスの入力チェックスクリプトを探しており、下記のようなスクリプトをネット検索で見つけました。 <!-- <script type="text/javascript"> function chNull(msg,obj) { if(!obj) return true; if((obj.type || obj[0].type) == 'checkbox'){ var flag = 0; if(obj.length){ for(var i=0; i<obj.length; i++) { if(obj[i].checked) flag = 1; } } else { if(obj.checked) flag = 1; } if(flag == 0) { alert(msg + 'を選択してください。'); return false; } } return true; } --> </script> <form method="POST" action="■.cgi" onSubmit="return chNull('チェックボックス',a);"> <input type="checkbox" name="a" value="A1" />A1 <input type="checkbox" name="a" value="A2" />A2 </form> 同じnameのチェックボックス群がひとつしかないときはこれで問題ないのですが、 下記のようにnameが複数ある場合にはこのスクリプトのどの部分を変えればよいのでしょうか? <input type="checkbox" name="a" value="A1" />A1 <input type="checkbox" name="a" value="A2" />A2 <input type="checkbox" name="b" value="B1" />B1 <input type="checkbox" name="b" value="B2" />B2 <input type="checkbox" name="c" value="C1" />C1 <input type="checkbox" name="c" value="C2" />C2 できればこのスクリプトをベースとして使用したいと思っています。どなたかお分かりの方がいらっしゃいましたらお教え下さいませ。 よろしくお願い致します。

  • チェックボックスについて(ruby)

    cgiのプログラムでチェックボックスについてわからないことがあります。 今書いてある、プログラムだとすべての値を受け取ってしまいます。 選択されたものだけ表示させるようにさせたいと思っています。そのプログラムfor文で書いているのですが、どのように書いたらよいのでしょうか? 教えてください、お願いします! <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <title>プロフィール入力ページ</title> </head> <body> プロフィールを入力してください。<br> <form method="GET" action="http://profile2.cgi"> 名前: <input type="text" name="name"> <br> <br> 性別: <input type="radio" name="sex" value="男性">男 <input type="radio" name="sex" value="女性">女 <input type="radio" name="sex" value="その他">その他 <br> <br> 趣味: <input type="checkbox" name="hobby" value="映画">映画 <input type="checkbox" name="hobby" value="音楽">音楽 <input type="checkbox" name="hobby" value="スポーツ">スポーツ <input type="checkbox" name="hobby" value="料理">料理 <input type="checkbox" name="hobby" value="その他">その他 <br> <br> <br> <input type="submit" value="送信"> </form> </body> </html> #!/usr/local/bin/ruby print "Content-type: text/html; charset=euc-jp\n\n" $KCODE = "e" require "cgi" cgi = CGI.new namae = cgi["name"] sei = cgi["sex"] syumi = cgi.params["hobby"] ary = ["映画, ", "音楽, ", "スポーツ, ", "料理, ", "その他 "] str = ary[0] + " " + ary[1] + " " + ary[2] + " " + ary[3] + " " + ary[4] + " " syumi = "" for x in str syumi = syumi + x end print <<EOS <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <title>プロフィールの確認</title> </head> <body> 名前: #{namae} <br> <br> 性別: #{sei} <br> <br> 趣味: #{syumi} </body> </html> EOS 動作環境はruby 1.8.7 (2010-01-10 patchlevel 249) [i686-linux]になります。

    • ベストアンサー
    • CGI
  • 複数のチェックボックス項目があり、そのチェック状態によって

    複数のチェックボックス項目があり、そのチェック状態によって 処理を分岐したいのですが、スマートなjavascriptの書き方が あれば教えてください! 【例】 <input type="checkbox" name="koumokuA" value="A1" /> <input type="checkbox" name="koumokuA" value="A2" /> <input type="checkbox" name="koumokuA" value="A3" /> <input type="checkbox" name="koumokuA" value="A4" /> <input type="checkbox" name="koumokuA" value="A5" /> <input type="checkbox" name="koumokuB" value="B1" /> <input type="checkbox" name="koumokuB" value="B2" /> <input type="checkbox" name="koumokuB" value="B3" /> <input type="checkbox" name="koumokuB" value="B4" /> <input type="checkbox" name="koumokuC" value="C1" /> <input type="checkbox" name="koumokuC" value="C2" /> <input type="checkbox" name="koumokuC" value="C3" /> <input type="checkbox" name="koumokuC" value="C4" /> もし【koumokuA】のA2とA3、【koumokuB】のB1とB4が選択された場合 同項目ではor条件、他項目ではand条件で処理したいので 考え方としては、 if(koumokuA=="A2" || koumokuA=="A3"){ if(koumokuB=="B1" || koumokuB=="B4"){ 実行内容 } } こんな感じなのですが、 実際にはチェックボックスの値は配列になるのでこのスクリプトでは動かない点と 効率よく複数のチェックボックスの選択結果を判定して、スクリプトを実行する 組み方があればご教授ください。 実行結果は、データが格納された配列の中から、選択項目に対応したデータを 表示するようにしたいのです。 よろしくお願いします。

  • 「繝・せ繝・」となる文字化け

    「テスト」を以下でデコードすると「繝・せ繝・」となってしまいます。 URL test.cgi/q_テスト/ $ENV{'PATH_INFO'}と「q_テスト」を使うことを前提として、「テスト」と正常に取る方法はありますでしょうか。 ご教授お願いします。 $buffer = $ENV{'PATH_INFO'}; $buffer = substr($buffer,1); @lens = split(/\//,$buffer); foreach $len(@lens){ ($name, $value) = split(/_/,$len,2); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*value,'sjis'); $value =~ s/\t/ /g; $value =~ s/\n//g; $FORM{$name} = $value; }

    • ベストアンサー
    • Perl
  • CGIでチェックボックスを使う方法

    チェックボックスをCGI(C言語)で使用する方法を教えて下さい。 例えば、HTMLで <input type="checkbox" name="Check1" value="Sel11" /> チェック1 選択1<br /> <input type="checkbox" name="Check1" value="Sel12" /> チェック1 選択2<br /> <input type="checkbox" name="Check1" value="Sel13" /> チェック1 選択3 <hr /> <input type="checkbox" name="Check2" value="Sel21" checked /> チェック2 選択1<br /> <input type="checkbox" name="Check2" value="Sel22" /> チェック2 選択2<br /> <input type="checkbox" name="Check2" value="Sel23" checked /> チェック2 選択3 というプログラムはCGI(C言語)ではどの様に記述すれば良いでしょうか?

    • ベストアンサー
    • CGI
  • チェックボックス選択で(3つ)まで

    チェックボックス選択で(3つ)まで <input type="checkbox" name="fhobby" value="animation">アニメ <input type="checkbox" name="fhobby" value="game">ゲーム <input type="checkbox" name="fhobby" value="reading">読書 <input type="checkbox" name="fhobby" value="amusement">娯楽 <input type="checkbox" name="fhobby" value="comics">漫画 <input type="checkbox" name="fhobby" value="jogging">ジョギング<br> <input type="checkbox" name="fhobby" value="cycling">サイクリング <input type="checkbox" name="fhobby" value="shopping">ショッピング <input type="checkbox" name="fhobby" value="picture">絵画 <input type="checkbox" name="fhobby" value="travel">旅行 <input type="checkbox" name="fhobby" value="others">その他

    • ベストアンサー
    • HTML
EP-982A3でのエラーコードについて
このQ&Aのポイント
  • EP-982A3の起動時に100032スキャナーエラーが表示され、再起動しても解消されない状況です。修理の価格について教えてください。
  • EP-982A3で起動時に表示される100032スキャナーエラーについて、再起動しても解消されない状況です。修理にかかる費用を教えてください。
  • EP-982A3で起動すると100032スキャナーエラーが表示され、再起動しても問題が解決しません。修理にはどれくらいの費用がかかるのでしょうか?
回答を見る

専門家に質問してみよう