- - PR -
PHPでもチェックボックスについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-10-06 09:45
いつもお世話になっております。<(_ _)>
PHPでユーザー名を取得してチェックボックスにチェックされたユーザーのみ登録という処理を 行いたいのですが、上手くいきません、皆様のご指導をお願いいたします。 @Oracleのテーブルよりユーザー情報テーブルを取得 以下をユーザー人数分ループ print ("<input type='checkbox' name=chk[] value=" .$userID .">" .$UserNM); A<input type='submit' name='submit' value='送信'> ボタン押下の時入力チェックを行います。 チェックボックスの内容はPOSTで取得します。 この時、チェックボックスに全てチェックされていない場合、エラーとなります。 データがないからです。この場合どのように判断したらいいのでしょうか? よろしくお願いいたします。<(_ _)> | ||||
|
投稿日時: 2005-10-06 10:13
とりあえず。なぜデータが無いのだと思う? GETにしてリクエスト文字列を見てみると分かると思う。 (で、どのようにプログラムを組むか?・・・は、プログラマであるあなたの仕事。変数なんて好きなように決められるんだから、「この方法がダメならこっちの方法で」て感じに好きにやっちゃって下さい。) | ||||
|
投稿日時: 2005-10-06 13:12
私の経験では、配列を使って、チェックボックスの値をPOSTで受け取ったとき、
今回のように、name=chk[] のような指定をすると、 チェックの有無で、指定したデータと受取りのデータがずれてしまいました。 この名前の指定を、インデックスを使って、 たとえば、name=chk[$idx] というように指定すると 受取側で、チェックの有無にかかわらず、 該当のインデックスで、データを受け取れました。 この方法で、試してみて下さい。 | ||||
|
投稿日時: 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-10-06 14:24
すみません。インデントします。
| ||||
|
投稿日時: 2005-10-06 15:39
送り側で、
ユーザー人数分ループ でチェックボックスの名前を name=chk[$idx] という名前にして、 受け側で、 ユーザー人数分ループ で $_POST['chk'][$idx] として、この内容をチェックすれば、 チェックボックスで、チェックされていないデータは、"" の状態になるので、 設定の有無を調べなくても処理は出来ると思いますが・・・・。 | ||||
|
投稿日時: 2005-10-06 19:06
hidemaruさん、かしこみさん。ありがとうございます。
このような方法があるんですね。大変勉強になりました。 |
1