• ベストアンサー

PHPのcheckbox操作

MySQL上で、値を数字でカンマ区切りで持っているデータがあり、 そのデータをPHPで呼び出して、該当のcheckboxにデフォルトでチェックを入れたいのですが、上手くいきません。 例:カラム上に、「1,5,6」というデータが入っていた場合、 checkboxのvalue値が、「1,5,6」の箇所にデフォルトでチェックを入れたいと思っています。 すみませんが、どなたかわかる方がいらっしゃれば教えて頂きたく。

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

  • ベストアンサー
回答No.1

いろいろやり方はあると思いますが平易なアイデア例を・・・ $input='1,5,6'; というカラムデータだとしますよね。そしたら $arr=explode(',',$input); という感じで、カンマを区切り文字として 配列$arrにできます。(中身は{'1','5','6'}) あとは、例えばfor文で$iを1~10として、チェックボックスを10個だしてるときに、 if (in_array($i,$arr)){echo 'checked';} という感じにすれば、$iが1と5と6のときにcheckedが出力されるようなイメージです。 ご参考: http://www.php.net/manual/ja/function.explode.php http://jp2.php.net/manual/ja/function.in-array.php ※上記ご回答やコードは動かして検証したものではなく、どこかうっかりして  間違っているかもしれませんので、あくまでアイデア的なご参考まで。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 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と配列について

    よろしくお願いします。 以下のようなチェックボックスを利用した 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
  • phpからmysqlの操作について

    phpでmysqlを操作してブラウザー上へレコードの全データをテーブル化して表示したとします。 表示されているレコードから任意のレコードを選択し削除するにはどうすればよいでしょうか。 削除のsqlは解りますが、ブラウザー上に表示されているデータを選択して内容をphpへ送信する方法がわかりません。 フィールドごとにチェックボックスを出力してvalue にフィールドの値をセットしておきsubmit ボタンでvalue値を送信するような方法でしょうか。 Visual Basic などではグッリドコントロールの何処が選択されているか取得できるので簡単ですが, php とブラウザーでそんなことができるとは思えません。 よろしくお願いいたします。 php も sql もWEB上にあります。

    • ベストアンサー
    • PHP
  • checkboxの動作

    HTMLの基本的な話ですがinputのcheckboxに値が入っていない場合は値が飛ばない、チェックがある場合のみ、valueの値がnameと一緒に渡されるという理解でよいのでしょうか?

    • ベストアンサー
    • HTML
  • 大量の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
  • checkboxの文字連結の方法を教えてください

    <INPUT name="ch" type="checkbox" value="1">1 <INPUT name="ch" type="checkbox" value="2">2 <INPUT name="ch" type="checkbox" value="3">3 <INPUT name="ch" type="checkbox" value="4">4 <INPUT name="ch" type="checkbox" value="5">5 選択してボタンを押すとチェックされた文字だけをカンマで連結して <a href="http://xxx.xx.ne.jp/xx.cgi?1,3,5">リンク</a> と表示したいのですがどのように書けばいいのでしょうか。 よろしくお願いします。

  • チェックボックス複数選択 mysql受け渡し

    PHPを習いはじめたのですが分からない所がありましたので質問をさせて頂きました。 チェックボックスを作り複数選択されたデータをMYSQLに受け渡したいのですがどうしてもうまくいきません。受け渡しが出来たかと思えばARRAYのみ表示されてしまい、重要な内容が一切表示されません。 こちらがスクリプトになります。 <tr> <td>(チェックボックス)<br />順番不問</td> <td> <span class="checkbox"><input name="check1[]" type="checkbox" value="aaa" />aaa</span> <span class="checkbox"><input name="check1[]" type="checkbox" value="bbb" />bbb</span> </tr> </td> //mysql $sql = "insert into table values('$check1')"; 多分この$sql分のなにかが間違ってると思うですがいくらやっても 出来ません、、 mysql の設定はカラムはcheck1となっており、text, 値はnullとなっております。 どのなたか複数チェックボックスで表示された項目をMYSQLのデータベースに移行できる方法をご存知の方お伺い出来ませんでしょうか。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • []を付けずに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
  • phpのチェックボックスによる絞込みについて

    PHPとSQLでチェックボックスを使って、複数条件によるデータを抽出するというものを作っています。 データベースの検索対象となるカラムが、以下の様にbakunen,seibetsu,clubとあります。 ―――――――――――――――――――― gakunen   seibetsu   club ―――――――――――――――――――― 1年   男 サッカー 1年   男  野球 2年   女  バスケット 2年   男  野球 3年   女  美術 3年   男  バスケット 3年   女  バスケット チェックボックス側は、 学年:1年□ 2年□ 3年□ 性別:男□ 女□ 部活:サッカー□ 野球□ バスケット□ 美術□ としています。 phpのソースは以下の通りにしています。(一部抜粋) <?php $arr1 = array(); foreach($_POST['gakunen'] as $gakunen){ $arr1[] = "gakunen = '$gakunen'"; } $arr2 = array(); foreach($_POST['seibetsu'] as $seibetsu){ $arr2[] = "seibetsu = '$seibetsu'"; } $arr3 = array(); foreach($_POST['club'] as $club){ $arr3[] = "club = '$club'"; } $a = implode("or" , $arr1); $b = implode("or" , $arr2); $c = implode("or" , $arr3); $query = "SELECT * from fa1 where ($a) and ($b) and ($c)"; $result = mysql_query($query, $link); if (!$result) { echo 'データエラー'; } else { echo '<p>該当した検索結果:<br />'; while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { echo h($row['gakunen']) . ' : ' . h($row['seibetsu']) . ' : ' . h($row['club']) . '<br />'; } echo '</p>'; } } ?> <form method="post" action=""> <input type="checkbox" name="gakunen[]" value="1年" />1年&nbsp; <input type="checkbox" name="gakunen[]" value="2年" />2年&nbsp; <input type="checkbox" name="gakunen[]" value="3年" />3年&nbsp;<br /> <input type="checkbox" name="seibetsu[]" value="男" />男&nbsp; <input type="checkbox" name="seibetsu[]" value="女" />女&nbsp;<br /> <input type="checkbox" name="club[]" value="サッカー" />サッカー&nbsp; <input type="checkbox" name="club[]" value="野球" />野球&nbsp; <input type="checkbox" name="club[]" value="バスケット" />バスケット&nbsp; <input type="checkbox" name="club[]" value="美術" />美術&nbsp; <input type="submit" value="送信する" /> </form> 私が得たい結果は、例えば学年で1年のチェックのみあった場合は性別、部活問わず1年生全てのデータ。 1年と3年とサッカーにチェックがあった場合には性別を問わず1年と3年のサッカーに所属しているデータ。 全てのチェックが無かった場合は全データ表示という具合にしたいのです。 現状は3つのカラム全てに該当するチェックをして、そのデータを表示させることしかできません。gakunen,seibetsu,clubのどれか一つでもチェックを空けるとデータが出てこない状態です。 それはソースを読んでも理解できるのですが、ここからどう変えていいかわからない状態です。色々過去の質問を見たり本で勉強したりはしたのですが、私の理解が足らず問題解決には至っていません。 どのようにすれば良いのか、何卒ご教授をお願いいたします。

    • ベストアンサー
    • PHP
  • PHPで、○番目のカンマの文字を呼び出す方法

    0,123,45,678,999 など、カンマ区切りの情報がある data.txt というファイルがあり、 別のPHPファイルにdata.txtの内容を書き出したい場合、 <?php echo file_get_contents("data.txt"); ?> と書くと全部表示されてしまいます。 data.txtの1行目で、2番目と3番目のカンマの間の数字(上の例ですと123)を書き出すには、どのように書いたらよいか、お分かりになる方教えて頂けませんでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • PHP