電子書籍の厳選無料作品が豊富!

初心者です。よろしくお願いします。

<form></form>の送信時の確認作業で困っています。

送信される前にチェックボックスにチェックがされていない場合エラーを出したいのですが、一つだった場合は

if($_POST[xxx] == ""){
エラー
}

とすれば簡単にできるのですが、
チェックボックスが100個ほどあった場合どのような書き方をすれば良いのでしょうか。

100個の内一つでもチェックがされていればOKとしたいのです。nameの値は1から順に100まで振ってあります。

よろしくお願い致します。

A 回答 (2件)

melllさん、こんにちは。



<input type="checkbox" name="name1">
<input type="checkbox" name="name2">
となっている場合は
<?php
$i = 1;
while(! isset($_POST["name{$i}"])) {
if($i == 100) { エラー }
$i++;
}

チェックボックスの値は選択されていなければデータが送信されません。
ですので、name1~name100としている場合は、データが送信されているか
どうかを1から順番にチェックし、100まで送信されていなければ初めて
エラーを出すことができます。
チェックボックスが多ければ多いほど処理に時間がかかります。


<input type="checkbox" name="name[1]">
<input type="checkbox" name="name[2]">
となっている場合は
<?php
if(! isset($_POST['name'])) { エラー }
//nameというデータが送信されていない
//if(! isset($_POST['name'])) {
// エラー
//} else {
// //nameが配列ではない
// if(! is_array($_POST['name'])) {
// エラー
// //nameのうち1つもチェックされていない(配列が空)
// } else if(count($_POST['name']) == 0) {
// エラー
// }
//}
?>

先ほども書きましたが、チェックボックスの値は選択されていなければデータが送信されません。
この例ではnameを配列(name[])としているため受取り側では配列として処理できます。
よって
「nameが送信されている=少なからず1つはチェックされている」
ということになります。
しっかりとチェックしたい場合はコメントにしている方を使った方が
良いかもしれません。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お陰でエラーを出すことができました。

ご丁寧にありがとうございました。

お礼日時:2006/10/03 17:13

例えば


<form name="aho" action="aho.php" method="post">
<input type="baka[]" value="1">
<input type="baka[]" value="2">
<input type="baka[]" value="3">
<input type="baka[]" value="4">
・・・・・
<input type="baka[]" value="100">
<input type="submit" value"押して">
</form>

だったら

~aho.php~
if( count($_POST["baka"]) <= 0 ){
echo "1個はえらんでよ!!";
}

みたいにすればいいんじゃないですか?
    • good
    • 0
この回答へのお礼

ありがとうございます。

value値ではなかったのですが、countでのチェックの方法も知りませんでしたので勉強になりました。

ありがとうござました。

お礼日時:2006/10/03 17:15

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