- ベストアンサー
複数のチェックボックスを一括で更新
- データをPerlで読み込み、HTMLでチェックボックスと並べています。チェックを入れるとチェックを入れた状態を更新したいです。
- 行の数は不特定でPerlで読み込んだり、書き込んだりしています。チェックボックスには$idがついており、名前が付けられています。
- モジュールを使わずに実現する方法を教えてください。
- みんなの回答 (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>"; } }
お礼
すごい。。。わざわざ本当にありがとうございます。 こうやればチェックの値が取れるんですね。 なんとなくわかってきました。 検証中なのですが、(自分の)値を取るルーチンと合わないためまだ検証を続けなければなりません。 もうしばらくお待ちくださいm(__)m
補足
おかげさまでヒントをつかみロジックを理解できました。 こんな方法でできるなんてちょっと予想外。 素晴らしいプログラムをありがとうございました。