複数データの入力
いろいろなフォーム形式から複数のデータを入力します。
@pair = split(/&/,$in);  複数のデータ対を&で分離して@pairに格納します。
$in{$n} = $val;       データの名前$nをキーにしてデータ値$valをハッシュ%inに格納します。
■プログラム (sample18.cgi)
if ($ENV{'REQUEST_METHOD'} eq "POST") {read(STDIN,$in,$ENV{'CONTENT_LENGTH'});}
else {$in = $ENV{'QUERY_STRING'};}
@pair = split(/&/,$in);
foreach (@pair) {
($n,$val) = split(/=/);
$val =~ tr/+/ /;
$val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
$in{$n} = $val;
}
$alf = $in{'alf'};
$num = $in{'num'};
$sub = $in{'sub'};
$pwd = $in{'pwd'};

print "<form action=\"sample18.cgi\" method=POST>\n";
print "<select name=alf>";
foreach (A .. G) {
if ($alf eq $_) {$sel = ' selected';} else {$sel = '';}
print "<option value=\"$_\"$sel>$_";
}
print "</select>\n";
foreach (1 .. 5) {
if ($num eq $_) {$chk = ' checked';} else {$chk = '';}
print "<input type=radio name=num value=\"$_\"$chk>$_ \n";
}
print "<br><input type=text name=sub size=30 value=\"$sub\"><br>\n";
print "<input type=password name=pwd size=10 maxlength=8 value=\"$pwd\"><br>\n";
print "<input type=submit value=\"入力\"></form>\n";
print "$in<br>$alf $num<br>$sub<br>$pwd\n";
■実行結果
1 2 3 4 5 




alf=B&num=2&sub=%91%BE%98Y&pwd=taro
B 2
太郎
taro


HOME Copyright (C) CGI-design All Rights Reserved.