checkboxの値を取得する方法について

このQ&Aのポイント
  • チェックボックスの値を取得する方法について説明します。チェックボックスをひとつ用意し、チェックがされていれば1、されていなければ0を取得することができます。
  • チェックボックスの値は、HTMLのフォーム要素のname属性とid属性を指定して取得します。取得した値を条件分岐させて、更新処理を行うことができます。
  • なお、チェックボックスが複数存在する場合は、配列として取得されます。各要素の値を確認して、チェックされていれば1、されていなければ0を設定することができます。
回答を見る
  • ベストアンサー

checkboxの値を取得する方法について

チェックボックスをひとつ用意しています。 チェックがされていれば1、チェックされていなければ0を 取得し、最終的には更新処理を行いたいと思っていますが すべてチェックされている状態で更新処理(1)がされてしまいます。 $ABC = $_POST['AAA']; If($ABC[$count] = "1"){ SQL = "1" }else{ SQL = "0" } <input type = "checkbox" checked name="abcKbn[]" id = "AAA" value = "1"> SQLに問題がないと思うので、省略させて頂きます。 value値を配列abcKbn[]に値をセットし、If文でチェックを 行っていますが、この場合だとvalue = "1"のため すべての値が1となり、配列に格納されるかと思っています。(違ったらすいません) そのためIf文もすべて1になるかと・・・。 チェックがされていれば1、チェックがされていなければ0を value値に設定することは可能なのでしょうか? それ以外でもし良いやり方があれば アドバイスお願い致します。

  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

If($ABC[$count] = "1"){ if文が根本的に変ですが・・・ If($ABC[$count] == "1"){ じゃないんですか? ( = が1個足りない ) こういったミスを防ぐために、 if( 1 == $a ){ } などのような表記を心がけておくと 万が一タイプミスで if( 1 = $a ){ } となったときにエラー吐いてくれるので助かりますよ。 if( $a == 1 ){ } という癖で書いていると タイプミスで if( $a = 1 ){ } こうなってしまった場合、 if文は常に true を返します。 構文としては合っているのでそのまま動いてしまうのですが、意図としては違った動きをしてしまい、バクの温床にもなります。

NeilMania
質問者

お礼

メッセージありがとうございます。 VBの癖で=とやってしまいました…。 ==にしてみてちょとやってみます。

関連するQ&A

  • []を付けずにcheckboxの値を複数受信

    カテゴリをPHPとするか迷いましたが、 こちらに質問させていただきます。 <input type="checkbox" name="hiragana[]" value="a">あ <input type="checkbox" name="hiragana[]" value="i">い <input type="checkbox" name="hiragana[]" value="u">う とした場合、 $checked=$_POST['hiragana']; print_r($checked); などとして使えることはわかるのですが、 角括弧をつけず、 <input type="checkbox" name="hiragana" value="a">あ <input type="checkbox" name="hiragana" value="i">い <input type="checkbox" name="hiragana" value="u">う としたときに、同様に配列として取得する(すべてのチェックされた項目を取得する) 方法はあるのでしょうか? このようにした場合、 $checked=$_POST['hiragana']; print_r($checked); や print_r($_POST); すると、最後にチェックされた値しか入っていないようです。 (上書きされているようですが...) HTTPヘッダを見ると、 hiragana=a&hiragana=i&hiragana=u のように、すべて送信はされているのは確認できるのですが... 後者のような角括弧をつけていないタイプのcheckboxを使って ちゃんとチェックされた値をすべて受信して動作していると 思われるサイトを目にするので どうすればできるのかと思い質問させて頂きました。 よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • 配列としてMysqlから値を取得する方法を教えて下さい。

    いつも助けていただきましてありがとうございます。 チェックボックスの値をMysqlに登録するところまではできましたが、 今度それを、確認・更新画面に読み込む方法でつまずいています。 どうぞご指導をお願い致します。 Mysqlから「days_id」の値が「0,2,5」と取得されても 実際のチェックが付くのが、「5」のみなってしまいます。 配列としてMysqlから値を取得する方法を教えて下さい。 $res = mysql_query($sql); $i=0; foreach($labels as $label){ while ($row = mysql_fetch_array($res)) { $days_id = $row["days_id"]; } if($i==$days_id){ $checked = " checked"; echo "<label>\n<input type=\"checkbox\" name=\"job_type[]\" value=\"{$i}\" {$checked} />{$label}</label>"; }else{ $checked = ""; echo "<label>\n<input type=\"checkbox\" name=\"job_type[]\" value=\"{$i}\" {$checked} />{$label}</label>"; } $i++; }

    • ベストアンサー
    • PHP
  • チェックボックスの値を(1,0)のようにすべて送信する方法

    formをsubmitすると、チェックボックスの値は、 チェックされた項目のvalue値が配列の形で送信されますよね。 たとえば、 <INPUT TYPE="CHECKBOX" NAME="C_BOX" VALUE="111" CHECKED> <INPUT TYPE="CHECKBOX" NAME="C_BOX" VALUE="222" CHECKED> <INPUT TYPE="CHECKBOX" NAME="C_BOX" VALUE="333" CHECKED> <INPUT TYPE="CHECKBOX" NAME="C_BOX" VALUE="444"> <INPUT TYPE="CHECKBOX" NAME="C_BOX" VALUE="555" CHECKED> だと、 [111,222,333,555] のように。 今回は、表形式でデータを表示し、 チェックされた行の、他の列の値(フィールド)も取得したいのです。 他の列のフィールドは、チェックされていない行でも入力されている可能性があります。 そうすると、そのフィールドの値も配列にして送ってしまうと、 チェックボックスの値と数が合わなくなり、横方向での関連付けが出来なくなってしまいます。 なので、チェックボックスの送信値を、配列の要素数は全件で、 チェックされたかされていないかということが分かるように することは不可能でしょうか? JavaScriptは規約により、使うことが出来ない状況で困っています(><) 何か案があれば教えてください。

    • ベストアンサー
    • HTML
  • checkboxの判定について

    ラジオボタンを2つ用意しそれぞれに値をいれれば容易なことなのですが checkbox1つでチェックの判定をしチェックされていればvalueにyesをいれ チェックが外されていればvalueにno(nullでしょうか?)を入れたいのですが その場合は、どのようなソースにすれば可能でしょうか? 教えてgooの新規会員登録がこのような形式だったので興味がありやってみたのですが なかなかうまくできません・・・ 現状は下記のソースなのですがvalueの値を分岐することで実現できそうなものの いまいちわからない状態です^^; <input type="checkbox" name="magazin" value="yes" <?php if (isset($_SESSION['magazin']) && $_SESSION['magazin'] == 'yes'){ echo 'checked'; }?>>配信メールを希望する。

    • 締切済み
    • PHP
  • checkboxクリックされていないidを取得

    <form id="chkform"> <input type="checkbox" name="check" value="aaa" id="aaa">aaa <input type="checkbox" name="check" value="bbb" id="bbb">bbb <input type="checkbox" name="check" value="ccc" id="ccc">ccc                   ・                   ・                    ・ <input type="checkbox" name="check" value="zzz" id="zzz">zzz </form> チェックボックスの複数の項目の内、チェックされていない全てのIDを取得する方法を教えてください。 よろしくお願いいたします。

  • CheckBoxとTextBoxの値を貼付る方法

    よろしくお願いします。 Dim n As Long Dim r As Range Dim C, buf As String n = Cells(Rows.Count, "A").End(xlUp).Row + 1 Range("A" & n).Select For Each C In Controls If TypeName(C) = "CheckBox" Then If C.Value Then buf = buf & C.Caption & vbCrLf End If Next C ActiveCell.Offset(-1, 16).Value = buf & TextBox9.Value ’buf=チェックされている複数のCheckBoxのCaption ’この時のActiveCell.Offset(-1, 16).ValueにはbufとTextBox9の値も表示されています。 End If で、セルに入力して ActiveCell.Offset(0, 7).Value = ActiveCell.Offset(-1, 16).Value で、セルに貼り付けようとすると、bufの値のみ表示されてTextBox9の値が表示されません。 bufの値とTextBox9の値と両方をコピー表示する方法をお教えください。

  • 大量のcheckboxにcheckedを入れる

    チェックボックスが50個あります。 送信ボタンを押して元のページを再度開きます。 そのときにチェックしたボックスにチェックを入れた状態にしたいです。 inputタグの中に<?php if(isset($checkbox2) && in_array('b2',$checkbox2)){echo ' checked';} ?>を入れていますが単調になってしまいます。 単調にならずにする方法はありますか? <input type="checkbox" name="chk1[]" value="a1" />の場合はインデックスが固定でないのでできませんでした。 その他いけない箇所があれば教えて下さい。 お願いします。 <?php if(isset($_GET["chk1"])){ $checkbox1 = $_GET["chk1"]; for($i=0; $i<sizeof($checkbox1); $i++){ print $checkbox1[$i]."<br />"; } } if(isset($_GET["chk2"])){ $checkbox2 = $_GET["chk2"]; foreach($checkbox2 as $key => $val){ print $val."<br />"; } } ?> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> </head> <body> <form method="get" action="checkbox.php"> <input type="checkbox" name="chk1[]" value="a1" /> <input type="checkbox" name="chk1[]" value="a2" /> <input type="checkbox" name="chk1[]" value="a3" /> <input type="checkbox" name="chk1[]" value="a4" /> <input type="checkbox" name="chk1[]" value="a5" /> <input type="checkbox" name="chk1[]" value="a6" /> <input type="checkbox" name="chk1[]" value="a7" /> <input type="checkbox" name="chk1[]" value="a8" /> <input type="checkbox" name="chk1[]" value="a9" /> <input type="checkbox" name="chk1[]" value="a10" /> <br /> <input type="checkbox" name="chk2['b1']" value="b1" <?php if(isset($checkbox2) && in_array('b1',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b2']" value="b2" <?php if(isset($checkbox2) && in_array('b2',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b3']" value="b3" <?php if(isset($checkbox2) && in_array('b3',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b4']" value="b4" <?php if(isset($checkbox2) && in_array('b4',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b5']" value="b5" <?php if(isset($checkbox2) && in_array('b5',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b6']" value="b6" <?php if(isset($checkbox2) && in_array('b6',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b7']" value="b7" <?php if(isset($checkbox2) && in_array('b7',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b8']" value="b8" <?php if(isset($checkbox2) && in_array('b8',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b9']" value="b9" <?php if(isset($checkbox2) && in_array('b9',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b10']" value="b10" <?php if(isset($checkbox2) && in_array('b10',$checkbox2)){echo ' checked';} ?>/> <br /> <input type="submit" value="送信" /> </form> </body> </html>

    • 締切済み
    • PHP
  • radioボタンの値の取得の仕方?

    こんにちは,よろしくお願いします。 ラジオボタンの値でテキストフィールドのような要素をdisabledにしようと考えています。 そこで <input name="AAA" type="radio" id="AAA_0" value="0" checked="checked" onclick="xxx()"/>選択肢A <input name="AAA" type="radio" id="AAA_1" value="1" onclick="xxx()"/>選択肢B とし,javascriptのxxx functionの中では, if(document.getElementById("AAA").value == 0){ document.getElementById("BBB").disabled = true; }else if(document.getElementById("AAA").value == 1){ document.getElementById("BBB").disabled = false; } } としてみたところ,いつも document.getElementById("AAA").value の値が0のままでいくら選択肢Bをクリックしても切り替わりません。 一体何が悪いのでしょうか。教えてください。よろしくお願い申し上げます。

  • javascriptでチェックボックスの選択状況をチェックする方法につ

    javascriptでチェックボックスの選択状況をチェックする方法について質問です。 チェックボックスを <input type="checkbox" name="chk[]" value="1"> <input type="checkbox" name="chk[]" value="2"> のようにした場合、チェックボックスが1か所以上選択されているかどうかは、 var count = 0; for (var i=0;i<document.myform.elements['chk[]'].length;i++){ if(document.myform.elements['chk[]'][i].checked){ count++; } } if(count==0){ window.alert("チェックしてください!"); } のようにすればチェック可能ですが、inputタグで <input type="checkbox" name="chk1[]" value="1"> <input type="checkbox" name="chk1[]" value="2"> <input type="checkbox" name="chk2[]" value="A"> <input type="checkbox" name="chk2[]" value="B"> のように「name」の配列名が変化する場合はどのようにすればチェック可能でしょうか?

  • checkboxと配列について

    よろしくお願いします。 以下のようなチェックボックスを利用した phpの入力フォームを作成しました --------------------------------------------------------------- 番号 色  欲しい 在庫無し 101 red     □    □ 102 blue     □    □ 103 black    □    □ チェックボックスのソースは以下 欲しい→<input type=checkbox name='want[]' value='$a1'> 在庫無し→<input type=checkbox name='non[]' value='$a1'> ※$a=1です。 チェックボックスは必ずしも「欲しい」と「在庫無し」に 付けるわけではないとします。 それを踏まえて、チェックされたデータをうけるソースは以下です。 $ock=$_POST["want"]; $kck=$_POST["non"]; for($i=0; $i<count($_POST["want"]); $i++){ $as=$ock[$i]; $a=$as-1; $no=$_POST["no"][$a]; $iro=$_POST["iro"][$a]; でこれをmysql文のINSERT~で登録します。 ですが、ここで問題が・・・ 例えば 番号101から103までの「欲しい」にチェックがあり 番号101と103の「在庫無し」にチェックがあったとします。 自分の理想のレコードとしてはもちろん 番号101から103までの「欲しい」に値が入り 番号101と103の「在庫無し」に値が入るのが良いのですが、 これらの配列の中身は当然以下となります 欲しい Array ( [0] => 1 [1] => 2 [2] => 3 ) 在庫無し Array ( [0] => 1 [1] => 3 ) そうなると「欲しい」は各番号に値は当然入りますが、 「在庫無し」は番号101と102に値が入ってしまいます。 この「在庫無し」の値がうまく101と103に入る方法はありますでしょうか? for文でcountしているのが「欲しい」だからでしょうか? もちろん上記の$aがif(($a==1) OR ($a==3))と明示的にすれば理想的に値は入ります。 説明が下手で申し訳ありませんが、上記の問題でうまい方法がありましたらと思います、よろしくお願いします。 環境 WinXP apache2 php5 Mysql5

    • 締切済み
    • PHP

専門家に質問してみよう