• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数のチェックボックスを一括で更新)

複数のチェックボックスを一括で更新

このQ&Aのポイント
  • データをPerlで読み込み、HTMLでチェックボックスと並べています。チェックを入れるとチェックを入れた状態を更新したいです。
  • 行の数は不特定でPerlで読み込んだり、書き込んだりしています。チェックボックスには$idがついており、名前が付けられています。
  • モジュールを使わずに実現する方法を教えてください。

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

  • ベストアンサー
  • qtea
  • ベストアンサー率77% (38/49)
回答No.1

例えば、以下のようなCGI(chk.cgiというファイル名で)を作ってみて、実行してみてください。 チェックしたり、チェックをはずしたりして、submitを繰り返し実行してみると、どうすれば よいか、イメージがわきませんか? #!/usr/bin/perl print "Content-type: text/html\n\n"; print qq!<form action="chk.cgi" method="POST">!; print qq!<input type="submit"><br>!; print qq!<input type="checkbox" name="1">20060101 山田</br>!; print qq!<input type="checkbox" name="2">20060501 山田</br>!; print qq!<input type="checkbox" name="3">20060404 田中</br>!; print qq!<input type="checkbox" name="4">20060811 中田</br>!; print qq!<input type="checkbox" name="5">20060901 斉藤</br>!; print qq!<input type="checkbox" name="6">20061003 宮前</br>!; print qq!</form>!; print "<hr>"; #<form method="POST" ... の場合 read(STDIN, $s, $ENV{'CONTENT_LENGTH'}); foreach(split(/&/, $s)){ print $_, "<br>"; ($n,$v)=split; my($n, $v) = split /=/; $checked_id{$n} = $v; } #<form method="GET" ... の場合 #foreach(split(/&/, $ENV{QUERY_STRING})){ # print $_, "<br>"; # ($n,$v)=split; # my($n, $v) = split /=/; # $checked_id{$n} = $v; #} print "<hr>"; foreach(1..6){ if(exists($checked_id{$_})){ print "$_ チェック済<br>"; }else{ print "$_ 未チェック<br>"; } }

noname#102619
質問者

お礼

すごい。。。わざわざ本当にありがとうございます。 こうやればチェックの値が取れるんですね。 なんとなくわかってきました。 検証中なのですが、(自分の)値を取るルーチンと合わないためまだ検証を続けなければなりません。 もうしばらくお待ちくださいm(__)m

noname#102619
質問者

補足

おかげさまでヒントをつかみロジックを理解できました。 こんな方法でできるなんてちょっと予想外。 素晴らしいプログラムをありがとうございました。

関連するQ&A