プロが教えるわが家の防犯対策術!

CGIでデータの受け渡しを行い、決められたアドレスへ結果を送信するアンケートをつくっています。以前、チェックボックスで複数回答可とした場合の制限のかけ方をJavaScriptを用いた方法で教えてもらいましたが、これを利用して得た値をCGIで受け取りたいのですが、どうやって設定すればいいのでしょうか。「name」がそれぞれ名前が違う所でつまずいています。また<form method=post action="***.cgi">~</form>と項目全体をくくればいいのでしょうか?参考までに以下のHTMLを付記いたします。

<html>
<head>
<title>5個のうち3個しかチェックできないようにする</title>
<script Language="JavaScript"><!--
function check(n)
{
fOBJ = document.myFORM;
count = 0;
for (i=1; i<=5; i++) if (fOBJ["CB"+i].checked) count++;
if (count > 2)
{
alert("3個以上チェックできません");
fOBJ["CB"+n].checked = false;
}
}
// --></script>
</head>
<body>
<form name="myFORM">
<input type="checkbox" name="CB1" onClick="check(1)">チェック1<br>
<input type="checkbox" name="CB2" onClick="check(2)">チェック2<br>
<input type="checkbox" name="CB3" onClick="check(3)">チェック3<br>
<input type="checkbox" name="CB4" onClick="check(4)">チェック4<br>
<input type="checkbox" name="CB5" onClick="check(5)">チェック5<br>
</form>
</body>
</html>

A 回答 (1件)

このHTMLでは「どのCGIにデータを送るか」が指定されていませんから、


おっしゃる通り<form>タグ内でファイル名を指定する必要があります。例えば
<form method=post action="receive.cgi" name="myFORM">
とします。
また送信のトリガーが必要ですので、<form>~</form>内に以下を追加します。
<input type=submit value="送信">
これで送信ボタンが表示され、クリックするとCGIにデータが送信されます。
「CGIにデータを送信する方法」としては、以上です。

受け取った後の処理については、どのようなCGIかが分かりませんので
何とも言えませんが、「送信されたデータをCGIがどのように受け取るか」
を示す意味で、以下にサンプルのPerlスクリプトを書いておきます。

#!/usr/bin/perl
read(STDIN, $QUERY, $ENV{'CONTENT_LENGTH'});
print "Content-type: text/html\n\n";
print $QUERY;

これをreceive.cgiとして設置すると、受け取ったデータをそのまま
表示します。例えば1と2にチェックを入れて「送信」をクリックすると
CB1=on&CB2=on
と表示されました。receive.cgiがこのような文字列としてデータを
受け取っていることが分かると思います。

(ちなみに、この場合<form>タグ内のname=は使われないので、不要です。)
    • good
    • 0
この回答へのお礼

お礼を言うのが大変遅くなりました。回答は参考にさせて頂きました。まだまだ理想のアンケート機能を作るには頭を悩ませなくてはいけないようですが、がんばって作り上げていこうと思います。

お礼日時:2005/03/01 14:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!