• ベストアンサー

オフになっているチェックボックスのデータ送信

フォームの値をPOSTで送信しているのですが、 チェックボックスの値はオンになっているもののみ送信されるのですよね。 データの受け側のプログラムに渡せなくて困っています。 (□はチェックボックスのつもりです、■はオンのつもりです) データ1:■ データ2:□ データ3:□ データ4:■ データ5:□ という画面から、 データ1=1 データ2=0 データ3=0 データ4=1 データ5=0 という風に全てのデータに対して配列で1つのパラメータとして渡したいのです。 Hiddenを使用しても、チェックボックス自体に名前が入っているので?POSTで一括送信すると、1つもチェックされなかった場合に、プログラム側で引数が不足していると認識されてダメでした。 チェックボックスに名前を付けずに、Hiddenの値を操作するなんて出来ないですよね・・・? またデータ送信前にオンかオフかチェックして、オフになっているもののValueを0に変更した上でチェックする、というのもやってみたのですが、history.backで戻った時に、全部オンになってしまうので、これもダメでした・・・ 何か良い方法をご存知の方がいらっしゃいましたら、よろしくお願いします!

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

受け側で処理するのが筋ですが... <form action="hoge.cgi" onsubmit=" this.data1.value=(this.elements[0].checked ? 1: 0); this.data2.value=(this.elements[1].checked ? 1: 0); "> <input type="checkbox"> <input type="checkbox" checked> <input type="hidden" name="data1"> <input type="hidden" name="data2"> <input type=submit> </form>

sky_blue
質問者

お礼

お返事が大変遅れてしまって本当にすみません! 頂いたお返事を見て進めていくうちに遅くなりました。 名前がなくてもelementsで配列にすれば、hiddenへ値を入れることができるのですね。 お返事ありがとうございました。

その他の回答 (1)

  • you111111
  • ベストアンサー率45% (20/44)
回答No.2

>全てのデータに対して配列で1つのパラメータとして渡したいのです。 どの様に値を渡そうとしているのかわからないのですが、とりあえず・・・ 配列に格納するなら以下の様なやり方では? <html> <head> <script language="javascript"> <!-- function Chk() { var i=0,j=0,ary = new Array(); for (i=0; i<document.all.length; i++) { if(document.all(i).type == "checkbox") { ary[j] = (document.all(i).checked) ? '1' : '0'; j++; } } //チェック用 for (i=0; i<ary.length; i++) alert(i + '個目:' + ary[i]); } //--> </script> </head> <body> <form name="frm" method="post" onsubmit="Chk();"> <input type="checkbox"> <input type="checkbox"> <input type="submit"> </form> </body> </html>

sky_blue
質問者

お礼

お返事が大変遅くなってしまって本当にすみません。 hiddenにするのではなく、Javascript内で変数に入れるのですね・・・実は違う方法でなんとか進めたのですが、この場合ですと、[ary]という変数はPOSTで渡らないですよね・・・? でも、こういう方法があること自体、自分では思いつきませんでした。 お返事、本当にありがとうございました。

関連するQ&A

  • チェックボックスのOnとOffを2つの画像にするには

    チェックボックスのOnとOffを2つの画像にして、POSTで通常通り 値を取得できる方法を教えてください。

  • チェックによる送信データ

    HTMLのフォームからPOST送信した時、サーバに行くデータを教えてください。 フォームにはチェックボックスと、2つのグループのラジオボックスがあります。 チェックボックスはチェックされていないとそのデータは送信されませんよね? ラジオボックスは選択されたものだけが送られ、選択されないものは送られないのですか? ラジオボックスでそのグループ内にチャックが無ければそのグループの情報は何も送られませんか?

    • ベストアンサー
    • CGI
  • チェックボックスのON/OFF

    こんにちは。 以下のようなテーブルがありまして <tr> <td>チェックボックス</td> <td>ID</td> <td>名前</td> </tr> このテーブルのTRのどこかをクリックするとチェックボックスを ON/OFFする方法のヒントを頂けないかと思って質問に参りました イメージとしては<label for="">の機能をTRに付けたいのです 作表とチェックボックスの環境としましては データベースから取り出したデータをforで回してテーブルに配置 チェックボックスのタグは各行に1つでこれのON/OFFがしたい チェックボックスのデータは配列で送りたいので○○[]名称 となっております (この辺りにはPHPを使用しています) セルクリックで背景色を変更するサンプルと、チェック全選択/全解除の サンプルはあるのですが、組み合わせや加工の仕方がわからず 調べてみてもチェックボックスをクリックしたら…というサンプルばかりで 私が求めている方法は残念ながら見つけられませんでした こんな質問だと丸投げになってしまうので、ヒントや処理の流れだけでも 教えて頂けると助かります ヨロシクお願いします

  • PHPでチェックボックスの結果を離れた配列に入れる

    PHPにて、複数あるチェックボックスの操作結果(オン/オフ)を変数に格納する方法を探しています。 予定として プログラム実行 → ボタンが1つと、チェックボックスが複数表示される → チェックボックス操作 → ボタンを押す → 複数のオン/オフ状況が配列に格納される といったものを作りたいと考えています。 現在はそのためのテストとして、ボタンを押した際のオン/オフの状況が画面に順に表示されるものを作っていますが、変数がUndefined Indexであると言われ、表示することができません。 現在のプログラムは下の通りです。 実際のプログラム上では、(1),(2),(3)はそれぞれソース内のかなり離れた場所にあります。 各チェックボックス(各<form>~</form>)毎にボタンを用意していないのが原因であるとは思うのですが、ボタンは特定の箇所に1つだけ用意したいと考えています。 またチェックボックス表示部とボタン表示部は(ソース的に)離れているため、 ボタン表示部で<form>を開いて、開いたまま進み、チェックボックス表示部が終わってやっと閉じる、という方法は難しいと思います。 どうすればチェックボックスの結果を離れた箇所にある配列に入れることができるのでしょうか。 宜しくお願いします。 [regist.php] <?php //(1) 更新ボタンを押すとチェックボックスのon/off結果が表示される if(isset($_POST['cmd_Print'])){ $check = $_POST["cb"]; for($i=0; $i<count($check); $i++){ print "${check[$i]}<br>"; } } //(2) 更新ボタンの表示 print("<form method=\"post\" action=\"regist.php\">"); print("<input type=\"submit\" name=\"cmd_Print\" value=\"結果表示\">"); print("</form>"); //(3) チェックボックス(on,off)を交互に表示 for($i=0; $i<5; $i++){ //チェックボックスをオンの状態で表示 print("<form method=\"POST\" action=\"./regist.php\">"); print sprintf('<input type="hidden" name="cb[]" value="off">'); print sprintf('<input type="checkbox" name="cb[]" value="on" checked="checked">'); print("</form>"); //↑チェックボックス操作後、オフの状態なら$cb[]に"off"を、オンの状態なら$cb[]に"on"を入れる //チェックボックスをオフの状態で表示 print("<form method=\"POST\" action=\"./regist.php\">"); print sprintf('<input type="hidden" name="cb[]" value="off">'); print sprintf('<input type="checkbox" name="cb[]" value="on">'); print("</form>"); //↑チェックボックス操作後、オフの状態なら$cb[]に"off"を、オンの状態なら$cb[]に"on"を入れる } ?>

    • 締切済み
    • PHP
  • チェックボックスのvalue値のチェック

    POSTされたチェックボックスの値の検証はどのようにしていますか? 私はチェックボックスの表示とともにvalue値をセッションに入れといて、送信先のページで、POSTされたvalue値がセッションに含まれていればOK、含まれていなければイタズラと判定しているのですが、 もっと簡単にすむ方法があれば教えていただきたいです。

    • ベストアンサー
    • PHP
  • チェックボックスでの送信

    チェックボックスにチェックを入れて送信したときは1を チェックを入れずに送信したときは0をPHP側で受けたいのですが チェックを入れずに送信するとPHP側で$_POST['flg']を取得できないため、エラーになります。 方法はないでしょうか? <form action="test.php" method="post"> フラグ:<input type="checkbox" name="flg" value="1" /> </form> === test.php =========== <?php $flg = $_POST['flg']; print($flg); ?>

    • ベストアンサー
    • PHP
  • チェックボックスの内容が送信出来ません。

    PHPのメールフォームにチェックボックスを追加しましたがうまく送れず頭を抱えています。 お力をお貸しください。 必要だと思われるソースです。 inquiry.html <form action="check_inquiry.php" method="POST"> <p><label for="title">お名前:</label> <input type="text" name="title" size="60"> </p> <p><INPUT type="checkbox" name="check[]" value="資料請求" />資料請求<INPUT type="checkbox" name="check[]" value="至急" />至急<INPUT type="checkbox" name="check[]" value="質問" />質問</p> <br /> <p><label for="massage">メッセージ:</label></p> <p><textarea name="message" cols="50" rows="20"></textarea></p> <p><input type="submit" value="内容の確認"></p> </form> check_inquiry.php <?php $title = htmlspecialchars($_POST['title'], ENT_QUOTES); $message = htmlspecialchars($_POST['message'], ENT_QUOTES); $m_check = $_POST['check']; ?> ■内容を確認してください。 <br> <form action="send_inquiry.php" method="POST"> <input type="hidden" name="title" value="<?php echo $title; ?>" /> <input type="hidden" name="message" value="<?php echo $message; ?>" /> <input type="hidden" name="check" value="<?php for($i=0; $i<sizeof($m_check); $i++){ echo "【${m_check[$i]}】"; } ?>" /> <br /> お名前: <br /> <?php echo $title; ?> <br /> 問い合わせ内容: <?php for($i=0; $i<sizeof($m_check); $i++){echo "【${m_check[$i]}】"; }; ?> <br /> メッセージ詳細: <br /> <?php // 改行部分にBRタグを埋め込む echo nl2br($message); ?> <br /> <input type="submit" value="お問い合わせ内容の送信"> </form> send_inquiry.php <?php $title = htmlspecialchars($_POST['title'], ENT_QUOTES); $message = htmlspecialchars($_POST['message'],ENT_QUOTES); $m_check = $_POST['check']; //日本語UTF8 mb_language('ja'); mb_internal_encoding('UTF8'); //自動送信<送信元のアドレス $name = '自動送信'; $email = 'メールアドレス'; $header = 'From: '. mb_encode_mimeheader($name) . '<' . $email .'>'; // メール送信 $result = mb_send_mail($email, $title, $message, $header, $m_check); //メール送信の確認 if ($result) { // メール送信の成功 echo '■管理人へ送信しました。'; } else { // メール送信の失敗 echo '■管理人への送信に失敗しました。'; } ?> チェックボックスにチェックを入れないと送信出来ますが チェックを入れると送信に失敗します。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • チェックボックスのon/offで

    VB2008EEです。 チェックボックスにチェックを入れると指定したボタン上のテキストが「aaa」、 オフにすると「bbb」と切り替わるように出来るでしょうか? チェックボックスをオフにすると指定したラジオボタンがグレーアウトして 押せないようにして、オンにするとグレーアウトが解除されて選択できるように出来るでしょうか?

  • チェックボックスを画像アイコンでOffに。

    ある操作をするために、チェックボックスのOn/Offで動作を分岐させています(そのやり方はできています)。本題ですが、普通に開くと、そのチェックボックスはOn状態になっています。それを、画像アイコン(無論、Form内に置くことはOK)をクリックすることで、Offにしたいと思っています。 しかし、どのようにしたらよいか、やり方がわからず、行き詰っています。 ご教授のほど、よろしくお願いします。

  • チェックボックスのオンオフ

    チェックボックスを配置して、チェックボックスがオンになった時に 測定器と通信して数値データを表示するプログラムを作っています。 数値データは刻一刻と変化するので、チェックボックスがオンの時は Loopで数値データを取得するようにしています。 数値データの取得を止めたいときはチェックボックスを再度クリックして 終了したいのですが、Loopの中に入っているとチェックボックスを クリックしても反応しません。 何か方法はありませんか?チェックボックス以外のボタンを配置して Loopを抜けるようにしないと駄目ですか? Private Sub Checkbox1_Click() If Checkbox1= 1 Then Do 数値データを取得して、画面上に表示するプログラム(チェックボックスのクリックが効かない) Loop End If End Sub