HTMLフォームからチェックボックスデータを受け取る方法

このQ&Aのポイント
  • HTMLフォームからチェックボックスデータを受け取る方法について説明します。
  • フォームのチェックボックスデータを配列として受け取る方法をご紹介します。
  • 配列として受け取ったチェックボックスデータを処理する方法について解説します。
回答を見る
  • ベストアンサー

チェックボックスからデータ受け取り

htmlフォーから <input type="text" name="name"> <input type="checkbox" name="check[]" value="softbank">ソフト <input type="checkbox" name="check[]" value="docomo">ドコモ <input type="checkbox" name="check[]" value="au">Au foreach(${"_" . $_SERVER["REQUEST_METHOD"]} as $k=>$v) {  ${$k}=$v; //一括サニタイズ処理します。 } $_POSTのデータは$sample的な使い方ですが、 echo $name; →は表示OK 問題はチェックボックスデータですが、配列では上のforeachの処理では、受け取れません。上のforeach処理のような方法で、配列を$sample[]としても受け取るにはどのようにすればいいかアドバイス下さい。 当然$sample[]で受け取った後は、foreachとかでデータを取得処理します。

  • PHP
  • 回答数2
  • ありがとう数0

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

  • ベストアンサー
  • junkoh
  • ベストアンサー率40% (9/22)
回答No.2

foreach(${"_" . $_SERVER["REQUEST_METHOD"]} as $k=>$v) { if($k == "check") { $sample = $v; } else {  ${$k}=$v; } //一括サニタイズ処理します。 } なんだか意味がよくわかならいのですが、 $sampleに入れたいのであればこんな感じで可能だと思います。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

ユーザーから送られてくるデータはすべて悪意に満ちています。 それを前提に細心の注意をするのであればextract()でいけます。 <form method="post"> <input type="text" name="name" value="hoge"> <input type="checkbox" name="check[]" value="softbank">ソフト <input type="checkbox" name="check[]" value="docomo">ドコモ <input type="checkbox" name="check[]" value="au">Au <input type="submit" value="go"> </form> <?PHP extract($_REQUEST); if(isset($name))print $name; if(is_array($check))print_r($check); ?>

関連するQ&A

  • チェックボックスのうちひとつでもチェックがなければエラー

    チェックボックスが複数個(5~6個)あります。 hajime.html <form action="niban.php" method="post"> <input type="checkbox" value="A" name="CHK1" /> <input type="checkbox" value="B" name="CHK2" /> <input type="checkbox" value="C" name="CHK3" /> <input type="checkbox" value="D" name="CHK4" /> <input type="checkbox" value="E" name="CHK5" /> <input type="checkbox" value="F" name="CHK6" /> </form> ●このA~Fのうち、ひとつでもチェックされていなければ チェックしてください。とエラー表示させたいのですが… ●次のページではこのようにデータを受取していします。 niban.php// フォームの値取得は下記のように行っています。 if ($_SERVER["REQUEST_METHOD"] == "POST") { foreach($_POST as $k => $v){ if (get_magic_quotes_gpc()) { $v = stripslashes($v); } $v = htmlspecialchars($v); $v = addslashes($v); $$k = $v; } } else { exit(); } $ErrFlg = 0;(エラーの時は$ErrFlgを1にします) ●エラー構文のサンプル↓ if ($name == "" ) { echo "<p>名前を入力してください。"; $ErrFlg = 1; } どうぞお力をおかしください

    • 締切済み
    • PHP
  • 複数のチェックボックス項目があり、そのチェック状態によって

    複数のチェックボックス項目があり、そのチェック状態によって 処理を分岐したいのですが、スマートなjavascriptの書き方が あれば教えてください! 【例】 <input type="checkbox" name="koumokuA" value="A1" /> <input type="checkbox" name="koumokuA" value="A2" /> <input type="checkbox" name="koumokuA" value="A3" /> <input type="checkbox" name="koumokuA" value="A4" /> <input type="checkbox" name="koumokuA" value="A5" /> <input type="checkbox" name="koumokuB" value="B1" /> <input type="checkbox" name="koumokuB" value="B2" /> <input type="checkbox" name="koumokuB" value="B3" /> <input type="checkbox" name="koumokuB" value="B4" /> <input type="checkbox" name="koumokuC" value="C1" /> <input type="checkbox" name="koumokuC" value="C2" /> <input type="checkbox" name="koumokuC" value="C3" /> <input type="checkbox" name="koumokuC" value="C4" /> もし【koumokuA】のA2とA3、【koumokuB】のB1とB4が選択された場合 同項目ではor条件、他項目ではand条件で処理したいので 考え方としては、 if(koumokuA=="A2" || koumokuA=="A3"){ if(koumokuB=="B1" || koumokuB=="B4"){ 実行内容 } } こんな感じなのですが、 実際にはチェックボックスの値は配列になるのでこのスクリプトでは動かない点と 効率よく複数のチェックボックスの選択結果を判定して、スクリプトを実行する 組み方があればご教授ください。 実行結果は、データが格納された配列の中から、選択項目に対応したデータを 表示するようにしたいのです。 よろしくお願いします。

  • チェックボックスの戻り

    チェックボックスのvalue値に数字を入れてPOSTしています。 DB登録の前にその値を足し算してDBに登録しています。 <input type="checkbox" name="cb[0]" value="1"> <input type="checkbox" name="cb[1]" value="2"> <input type="checkbox" name="cb[2]" value="4"> <input type="checkbox" name="cb[3]" value="8"> <input type="checkbox" name="cb[4]" value="16"> ・・・のようにしています。DBの値を読み取ってcheckedを付ける際はどのようにしたら効率よく処理できるでしょうか?switchを使うとすごくチェックボックスの数が増えると厄介です。困っています。教えてください。

    • ベストアンサー
    • PHP
  • データによってチェックボックスを操作

    csvファイルをデータバインドを使ってHTMLに表示するとき、読み出したデータをそのまま表示するのではなく、データによってチェックボックスを操作できるようにしたいのですが、どうやったら出来るのかさっぱり分かりません。 <input name="c1" type="checkbox" value="">有 <input name="c2" type="checkbox" value="">無 <input name="c3" type="checkbox" value="">撤去 となっている時、データが1なら「有」にチェックを、0なら「無」にチェック、-1なら「撤去」にチェックを入れた状態で表示し、且つ値もセットしたいのですが、javascriptだけで可能でしょうか? 可能ならば、どういったスクリプトを書けばいいのでしょうか? ご教授お願い致します。

  • チェックボックスのデータの受け取り方について

    以下のようなチェックボックスを作ったとき、 test.phpではどうやって受け取ればよいのでしょうか? nameがそれぞれ違う場合は分かるのですが... 教えてください。 <form method="POST" action="test.php"> <input type="checkbox" name="color" value="red">赤</input> <input type="checkbox" name="color" value="blue">青</input> <input type="checkbox" name="color" value="white">白</input> <input type="checkbox" name="color" value="black">黒</input> <input type="submit" value="送信" > </form>

    • ベストアンサー
    • PHP
  • 配列で渡されたチェックボックスの値の処理

    POST元のページから <input type="checkbox" name="hoge[23]" value="1"> <input type="checkbox" name="hoge[31]" value="0"> <input type="checkbox" name="hoge[33]" value="1"> ・・・ のような形でデータが渡されます。 要素一つに付き、ONなのか、OFFなのか、表示されていないのかの判別が必要なため、このような形になっています。 受けるPHP側で、hogeの配列番号と一致したものがあればそれに対する処理を行う必要があります。 $buff=array(20,30,31); となっているとして、 $_POST["hoge"]の配列の値と$buff内の数字が一致したら~ (上記例だと31が一致) の書き方はどう書けばいいでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 特定のチェックボックスをチェックするには

    特定のチェックボックス「白」を CHECKEDにする方法を教えて下さい。 #数と位置が変動するので配列は取得できません。 #「もしもcolorの値が白なら CHECKED」のような関数にしたい。 <INPUT TYPE="CHECKBOX" NAME="color" VALUE="おまかせ"> <INPUT TYPE="CHECKBOX" NAME="color" VALUE="白"> <INPUT TYPE="CHECKBOX" NAME="color" VALUE="ピンク"> <INPUT TYPE="CHECKBOX" NAME="color" VALUE="緑">

  • チェックボックス連結

    MySQLで、perlを使ってチェックボックスでデータを送信するのですが、 カラムを分けずに、チェックボックスで複数選択されたデータを、;などの仕切りで同一フィールドへ記録したいのですが、やり方がわかりません。 <input type = checkbox name = col1 value="1"> <input type = checkbox name = col1 value="2"> <input type = checkbox name = col1 value="3"> <input type = checkbox name = col1 value="4"> 結果 col1 |col2 | +-------------- 1;2;3;4| | のような感じです。よろしくお願いします。

    • ベストアンサー
    • MySQL
  • チェックボックスの全選択

    <input type="checkbox" name="chk" value=1> <input type="checkbox" name="chk" value=2> <input type="checkbox" name="chk" value=3> <input type="checkbox" name="chk" value=4> <input type="checkbox" name="chk" value=5> このように同一名称のチェックボックスに対して ボタンを押下された時全てのチェックボックスを チェックするJavaScriptの 書き方を教えて貰えないでしょうか

  • 複数のチェックボックスをチェックしたい

    質問させてください。 複数のチェックボックスを項目別に全てチェックするようなjqueryの書き方をご教授いただきたいです。 <table> <tr> <td> <input type="checkbox" name="" />まとめてチェック </td> </tr> <tr> <td> <li><input type="checkbox" name="" value="" />a</li> <li><input type="checkbox" name="" value="" />b</li> <li><input type="checkbox" name="" value="" />c</li> <li><input type="checkbox" name="" value="" />d</li> </td> </tr> <tr> <td> <input type="checkbox" name="" />まとめてチェック </td> </tr> <tr> <td> <li><input type="checkbox" name="" value="" />e</li> <li><input type="checkbox" name="" value="" />f</li> <li><input type="checkbox" name="" value="" />g</li> <li><input type="checkbox" name="" value="" />h</li> </td> </tr> <tr> <td> <input type="checkbox" name="" />まとめてチェック </td> </tr> <tr> <td> <li><input type="checkbox" name="" value="" />i</li> <li><input type="checkbox" name="" value="" />j</li> <li><input type="checkbox" name="" value="" />k</li> <li><input type="checkbox" name="" value="" />l</li> </td> </tr> </table> 上記のようにそれぞれの項目に「まとめてチェック」のチェックボックスがあり、 そこに該当するチェック項目は全てチェックorチェックを外す っという挙動の実装を考えています。 jqueryでやりたいのですが、javascript、jqueryがかなり苦手でいまいちいきません。 ググって $(function(){ $('#all').click(function(){ if(this.checked){ $('#check input').attr('checked','checked'); }else{ $('#check input').removeAttr('checked'); } }); }); このソースを見つけたのですが、これだと一つの項目でしか実装できず 項目分このjqueryを書くのも余り良い書き方だと思えません。 どなたか、ご教授お願いいたします。