• 締切済み

チェックボックスの数値を、PERLで受けたい。

チェックボックスの数値を、PERLで受けたいのですが。 チェックボックスのチェックが、1つの時は、うまくいきます。2つ以上、チェックを入れるとうまくいきません。 どうしらた、いいでしょうか? PERLで、検索サイトを制作しているものです。

みんなの回答

回答No.1

どうやって取得しているか、具体的なソースコードを教えて下さい。また、どううまくいかないのか、具体的なエラーメッセージも教えて下さい。この2点があれば、早くいい回答を得られるようになると思います。 さて、ここからは勝手に貴方の環境を予想して答えますが・・・CGI.pmだとすると、 my $check = $cgi->param('check'); ってしてますか? my @check = $cgi->param('check'); とするといいかもしれないです。

wakarana7
質問者

補足

ご回答、ありがとうございます。 こちらの疑問点を、箇条書きします。 (1)CGI.pmとは、なんでしょうか?perlのソースもしくは、環境をみればいいのでしょうか? (2)ソースコードを書きます。かなり、長いので、受け取りの部分を中心に書きます。 # 初期設定 #======================================================================# require $require if -e $require; if($ENV{'REQUEST_METHOD'} eq "POST"){ read(STDIN,$QUERY,$ENV{'CONTENT_LENGTH'}) }else{ $QUERY = $ENV{'QUERY_STRING'} } $i = 0; @QUERY=split(/&/,$QUERY); foreach (@QUERY){ ($n,$v)=split(/=/); $v=~ tr/+/ /; next if $n eq "data" && $v !~ /[^\d\%]/ && (@data = split('%',$v)); $v=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $n=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $v=~ s/\r|\n|\t| / /g; $v=~ s/\s+(""|"|,)\s+/ /g; $v=~ s/^(""|"|,)$//g; next if $n eq "" || $v eq ""; &jcode'convert(*v,'sjis') if $jcode'version; if($n=~ /^IDn/){ $ID{$n}=$v }elsif($n=~ /^IDv(\d+)/){ $IDv{$1}.=" " if $IDv{$1}; $IDv{$1}.=$v }else{ $s=$n=~ /^join/ ?"":" "; $FORM{$n}.=$s if $FORM{$n}; $FORM{$n}.=$v } } if($FORM{'query'}){$i = 0; @QUERY = split(/&/,$FORM{'query'}); foreach (@QUERY){ ($n,$v)=split(/=/); next if $n eq "" || $v eq ""; if($n=~ /^IDn/){ $ID{$n}=$v }elsif($n=~ /^IDv(\d+)/){ $IDv{$1}.=" " if $IDv{$1}; $IDv{$1}.=$v }else{ $s=$n=~ /^join/ ?"":" "; $FORM{$n}.=$s if $FORM{$n}; $FORM{$n}.=$v } } } $print_max=$FORM{print} if $FORM{print} && $FORM{print} !~ /\D/; $print_max=$max_max if $print_max > $max_max; $n=~ /IDn(\d+)/ &&($FORM{$v}=$IDv{$1})while ($n,$v)=each(%ID); if($QUERY=~ /join/){ $n=~ s/^join// && push(@form,"$n\t$v"),delete $FORM{"join$n"} while ($n,$v)=each(%FORM); foreach(@form){ ($n,$v)=split(/\t/); $FORM{$n}=$v if $n ne "" && $v ne "" } undef @form; } if($QUERY=~ /select/){ while(($n,$v)=each(%FORM)){ if($n=~ s/^select// && $FORM{"$v$n"} eq ""){ push(@form,"$v$n\t$FORM{\"value$n\"}"); delete $FORM{"select$n"} } } foreach(@form){ ($n,$v)=split(/\t/); $FORM{$n}=$v if $n ne "" && $v ne "" } undef @form } です。 以上

関連するQ&A