- PR -

PHPでもチェックボックスについて

1
投稿者投稿内容
ばなな
ベテラン
会議室デビュー日: 2005/06/16
投稿数: 91
投稿日時: 2005-10-06 09:45
いつもお世話になっております。<(_ _)>

PHPでユーザー名を取得してチェックボックスにチェックされたユーザーのみ登録という処理を
行いたいのですが、上手くいきません、皆様のご指導をお願いいたします。

@Oracleのテーブルよりユーザー情報テーブルを取得
 以下をユーザー人数分ループ
 print ("<input type='checkbox' name=chk[] value=" .$userID .">" .$UserNM);
A<input type='submit' name='submit' value='送信'>
ボタン押下の時入力チェックを行います。
チェックボックスの内容はPOSTで取得します。

この時、チェックボックスに全てチェックされていない場合、エラーとなります。
データがないからです。この場合どのように判断したらいいのでしょうか?

よろしくお願いいたします。<(_ _)>

冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2005-10-06 10:13
引用:

ばななさんの書き込み (2005-10-06 09:45) より:
この時、チェックボックスに全てチェックされていない場合、エラーとなります。
データがないからです。この場合どのように判断したらいいのでしょうか?


とりあえず。なぜデータが無いのだと思う?
GETにしてリクエスト文字列を見てみると分かると思う。

(で、どのようにプログラムを組むか?・・・は、プログラマであるあなたの仕事。変数なんて好きなように決められるんだから、「この方法がダメならこっちの方法で」て感じに好きにやっちゃって下さい。)
hidemaru
常連さん
会議室デビュー日: 2004/03/22
投稿数: 44
投稿日時: 2005-10-06 13:12
私の経験では、配列を使って、チェックボックスの値をPOSTで受け取ったとき、
今回のように、name=chk[] のような指定をすると、
チェックの有無で、指定したデータと受取りのデータがずれてしまいました。
この名前の指定を、インデックスを使って、
たとえば、name=chk[$idx] というように指定すると
受取側で、チェックの有無にかかわらず、
該当のインデックスで、データを受け取れました。
この方法で、試してみて下さい。
かしこみ
会議室デビュー日: 2005/04/14
投稿数: 9
投稿日時: 2005-10-06 14:17

チェックボックスが選択されていないと、$POSTに値が設定されません。
そのため、issetで変数が設定されているか確認し、設定されていない場合
の処理も記述する必要があります。

例えば、受け側で

if ( isset($_POST['chk']) ) {
$all_chk = $_POST['chk'];
} else {
// エラー出力
echo "チェックボックスが選択されていません。<br>\n";
exit(1);
}

for($i=0; $i<count($all_chk); $i++) {
// 選択されたユーザIDを表示
echo "ユーザID=" . $all_chk[$i] . "<br>\n";
}
かしこみ
会議室デビュー日: 2005/04/14
投稿数: 9
投稿日時: 2005-10-06 14:24
すみません。インデントします。
コード:
if ( isset($_POST['chk']) ) {
  $all_chk = $_POST['chk'];
} else {
  // エラー出力
  echo "チェックボックスが選択されていません。<br>\n";
  exit(1);
}

for($i=0; $i<count($all_chk); $i++) {
  // 選択されたユーザIDを表示
  echo "ユーザID=" . $all_chk[$i] . "<br>\n";
} 

hidemaru
常連さん
会議室デビュー日: 2004/03/22
投稿数: 44
投稿日時: 2005-10-06 15:39
送り側で、
ユーザー人数分ループ でチェックボックスの名前を
name=chk[$idx] という名前にして、

受け側で、
ユーザー人数分ループ で
$_POST['chk'][$idx]
として、この内容をチェックすれば、
チェックボックスで、チェックされていないデータは、"" の状態になるので、
設定の有無を調べなくても処理は出来ると思いますが・・・・。
ばなな
ベテラン
会議室デビュー日: 2005/06/16
投稿数: 91
投稿日時: 2005-10-06 19:06
hidemaruさん、かしこみさん。ありがとうございます。
このような方法があるんですね。大変勉強になりました。
1

スキルアップ/キャリアアップ(JOB@IT)