チェックボックスの複数選択の値をCGIで取得する方法
お世話になります。
表記の通りチェックボックスで複数選択するHTMLを次のように作成しました。
======== 送信元HTML =========
<FORM action='******.cgi' method='POST'>
<INPUT type='checkbox' name='Q6_ans' value='1'>
<INPUT type='checkbox' name='Q6_ans' value='2'>
<INPUT type='checkbox' name='Q6_ans' value='3'>
<INPUT type='checkbox' name='Q6_ans' value='4'>
<INPUT type='checkbox' name='Q6_ans' value='5'>
<input type=submit value='実 行'>
</FORM>
これを受取るPerl-CGIのコードをこうしました。
======== 受信するcgi =========
my @files_2 = split(/\0/,$in{'Q6_ans'});
for($i=0;$i<=4;$i++){
if($files_2[$i] ne ""){$d[6].=$files_2[$i]." , ";}
}
例えばチェックボックスで2と3を選ぶと$d[6]の値は「2 , 3 ,」となるつもりだったんですが、意に反し「23 ,」となります。
配列の値を調べると$files_2[0]に「23」が代入されて、$files_2[1]から$files_2[4]は空です。つまり「split(/\0/,$in{'Q6_ans'})」での分割がされていないようなのです。
何が原因で、どこが間違いなのでしょう。チェックボックスの値は\0で区切られていると思っているのですが、間違いでしょうか?
お礼
そうですね。 うまく説明できませんかもしれませんが <INPUT type="checkbox" name="key" value="1">1 <INPUT type="checkbox" name="key" value="2">2 <INPUT type="checkbox" name="key" value="3">3 の部分を <input type="text" name="key" size="20"> に変えたり <INPUT name="many2" type="text" size="13"> <SELECT name="type2"> <option value="1" selected>以上 <option value="2">以下 などを使ったりです。 CGI自体がkey・many2の項目をこれで受けるとデーターを出してくれるようですので すいません。ここの部部が解決するととても使いやすくなるもので CGIとjavascriptが作れればこんなに困らないんですが そこの部分がまったくできない状態ですので・・