(再)チェックボックスでのデータの受け取り方

[上に] [前に] [次に]
もーちゃん 2000/05/23(火) 13:28:42
一度は解決マークを付けた質問と同じですが、
色々見て試してみても、うまく行かないので改めて質問させてください。

やりたいことは2つで、
1.6つのチェックボックスのうち1つは必須。(どれを選んでもいい。複数選択も可)
2.テキストで受け取ったデータを後でDBにインポートするため、
 オフのときも「0」などのデータがはいるようにしたい。

「110101」などの配列で受け取る方法があれば、一番分かりやすいんですけど、
他に方法があるなら、それでもかまいません。

どなたかご存知の方、よろしくおねがします。

wosamu 2000/05/23(火) 13:41:34
いったいなにで受け取るのか不明なので何ともいえませんけど、
cgiで受け取るなら、プログラム側でNAMEがない値を0にすればいいのじゃないですか?

どういうコードを書いて、どういう動作を期待されているのか今ひとつ理解できないです。
あと、これ緑ラウンジあてじゃ無いのじゃないですか?

dddd 2000/05/23(火) 13:41:54
配列を用意して、オフなら0、オンなら1を代入していけば良いだけでは?

もーちゃん 2000/05/23(火) 14:12:52
>wosamuさま

説明不足ですみません。
HTMLの問題だと思って、「緑」しました。
「赤」の方が適切でしょうか?

オンラインでの申し込みフォームで、htmlファイルとcgiファイルは
それぞれ次のようになっています。

[HTML]
<input type=checkbox name=aaa value=1>1
<input type=checkbox name=aaa value=1>2
                 │
<input type=checkbox name=aaa value=1>6

[CGI]
#入力されているかチェック
#チェックが1つもされていなかったら、エラー画面(&error)
if($aaa eq ""){&error;}
else{&ok}

#エラーじゃなかったら、いっこずつにわける
sub ok{
@aaa=split(/\0/,$in{aaa});
$aaa0=$aaa[0];  ・・・ $aaa5=$aaa[5]

#テキストファイルに書きこむ
open (IN,">>abc.txt");
print IN "$aaa0,$aaa1,$aaa2,・・・$aaa5\n";
close (IN)

これで実行すると、チェックされていなくてもok時の処理が実行されます。

>ddddさま
代入するということは、HTMLではnameが別のものを作るということでしょうか?
その場合、「どれか一個はチェックが必須」のチェックは

if(($aaa1 eq "")&&($aaa2 eq "")&&…)
{
&error}

ということになりますか?
cgiのほうも見よう見真似なので、なかなか応用できない状況です。
よろしくお願いします。

ヒソカ 2000/05/23(火) 14:37:39
入力チェック済ませた後で、わざわざ要素を分解するんなら、
別々のデータで良いような気が・・・
配列にこだわる理由は?
どうしても、後処理で配列を使ったほうが効率がいいのなら、
受け取った値を配列にほり込んだらいいような・・・

> 「110101」などの配列
このような形は文字列では?

もーちゃん 2000/05/23(火) 14:50:05
[[解決]]
別々のデータにしなかったのは、
「どれかひとつでもチェックされてればOK
 全部空白だったらエラー」
にしたかったからなんですけど、
「全部空白なら」っていうif文を書けばいいんですよね。
(これを最初思いつかなくて…)
どうにかHTMLがわで言い方法はないかと思って、
悪あがきしてしまいました。

別々に集めて、CGI側の処理を工夫する
方向でやって見ます。

レスを下さった皆さん、ありがとうございました。

[上に] [前に] [次に]