更新画面での複数のcheckedについて

このQ&Aのポイント
  • 複数チェック可能のチェックボックスにチェックさせ、データベースに格納しています。レコードを更新する際にwebフォームではあらかじめ既に入力された値にはチェックを入れておきたいので以下のように書いています。
  • ユーザがjobに関してチェックするのが1つの時は更新画面でそのとおりにチェックされるのですが、複数個の場合はチェックされません。複数個チェックされているように表示したいのですが、やり方がわかりません。ここを参照しなさい、とかこういう関数を使うとかだけでもご教示いただけると助かります。
  • 環境は以下のとおりです。redhatLinux apache1.3.20 postgres7.0.2 php4.0.6
回答を見る
  • ベストアンサー

更新画面での複数のcheckedについて

複数チェック可能のチェックボックスにチェックさせ、データベースに格納しています。 レコードを更新する際にwebフォームではあらかじめ既に入力された値にはチェックを入れておきたいので 以下のように書いています。 $job1 = pg_result($result,0,"job"); <input type="checkbox" name=job" value="プログラマ"<? if($job == "プログラマ")print "checked";?>>プログラマ (以下プログラマ以外の職業についてinput行を書いています。) ユーザがjobに関してチェックするのが1つの時は更新画面でそのとおりにチェックされるのですが、複数個の場合 はチェックされません。複数個チェックされているように表示したいのですが、やり方がわかりません。 ここを参照しなさい、とかこういう関数を使うとかだけでもご教示いただけると助かります。 よろしくお願いします。 環境は以下のとおりです。 redhatLinux apache1.3.20 postgres7.0.2 php4.0.6

noname#8847
noname#8847
  • PHP
  • 回答数4
  • ありがとう数3

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

  • ベストアンサー
  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.3

すると、複数のjobは文字列として、 $job='プログラマ,SE,プロジェクトマネジャー'; のように格納されているのですね? 本来であれば、explode()等で配列にばらしてチェックするのですが、今回の場合は "checed"を入れることだけが目的ですね。 であれば、if分の内容を書き換えればいいと思います。 if(mb_ereg($job,"プログラマー")) { print "checked"; } と言った感じで。 しかしこれはマルチバイト文字を扱えると言うことが前提です。mbregexは使えますか? 多分これがいちばん簡単ですが、マルチバイトが使えないときは、次を考えましょう(^^;

その他の回答 (3)

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.4

#3 の解答は間違えです よく考えると、職業の項目に ・プログラマー ・Cプログラマー ・Javaプログラマー 等があれば if(mb_ereg($job,"プログラマー")) ではすべてヒットしてしまいますね(^^; やはり配列にばらして、一つずつチェックしないといけません。

noname#8847
質問者

お礼

ありがとうございます! マルチバイトの文字列にパターンマッチを行うということですね。 たまたま職業の項目が プログラマ ライター デザイナー などなど のような感じなので今回はこれでいけると思います。 やってみます。

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.2

いえ(^^; 補足要求の意図が伝わらなかったようです。 > 登録のフォームでは > <input type="checkbox" name="job[]" multiple value="プログラマ">プログラマ > 以下複数のチェックボックスを書き、 > 受け取るphpでは > $job = $HTTP_POST_VARS['job']; ここまではOKです。 > と変数にいれてデータベースでのデータタイプをtextで格納しています。 聞きたかったのは、複数のチェックがあったときに、どの様にDBに格納しているのか…つまりこの後が聞きたかったのです。 ex1) foreach($job as $val) {  pg_query("INSERT INTO table_name VALUES(……,'$val')"); } として、複数のレコードとして入れているのか。 ex2) $n=sizeof($job); for($i=0;$i<$n;++$i) {  $job .=",".$job[$i]; } pg_query("INSERT INTO table_name VALUES(……,'$job')"); として $job="プログラマ,SE,プロジェクトマネジャー"; のように一つのカラムとしてDBに登録しているのか と言うことです。 例1,2以外の方法かもしれませんが。

noname#8847
質問者

補足

すみません、勘違いしてました。 for($i = 0; $i < count($job); $i++){ $job1 = implode($job,","); } $sql = "insert into table value('$job','$name')"; としておっしゃっておられるように一つのカラムとして 格納しています。

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.1

> 複数個チェックされているように表示したいのですが、やり方がわかりません。 まず、複数個チェックされているときには、どうDBに格納されているのですか?

noname#8847
質問者

補足

登録のフォームでは <input type="checkbox" name="job[]" multiple value="プログラマ">プログラマ 以下複数のチェックボックスを書き、 受け取るphpでは $job = $HTTP_POST_VARS['job']; と変数にいれてデータベースでのデータタイプをtextで格納しています。

関連するQ&A

  • 大量の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
  • PHP

    PHPで <p>曜日</p> <p> <input type="checkbox" name="youbi[]" value="1" <?php if(strstr($result[4],'1')) echo"checked"; ?>>月 <input type="checkbox" name="youbi[]" value="2" <?php if(strstr($result[4], '2')) echo"checked"; ?>>火 <input type="checkbox" name="youbi[]" value="3" <?php if(strstr($result[4],'3')) echo"checked"; ?>>水 <input type="checkbox" name="youbi[]" value="4" <?php if(strstr($result[4],'4')) echo"checked"; ?>>木 <input type="checkbox" name="youbi[]" value="5" <?php if(strstr($result[4],'5')) echo"checked"; ?>>金 <input type="checkbox" name="youbi[]" value="6" <?php if(strstr($result[4],'6')) echo"checked"; ?>>土 <input type="checkbox" name="youbi[]" value="0" <?php if(strstr($result[4],'0')) echo"checked"; ?>>日 </p> <p>時間</p> <p> <input type="submit" value="設定" /> とやると日曜日を選択してsubmitするとチェックが外れます。なぜでしょうか?

    • ベストアンサー
    • PHP
  • 複数のチェックボックスをチェックしたい

    質問させてください。 複数のチェックボックスを項目別に全てチェックするような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を書くのも余り良い書き方だと思えません。 どなたか、ご教授お願いいたします。

  • formから送信する値について

    nameを同じくする複数のチェックボックスのチェック項目について valueを「+」や「,」でつなげて送信したいです 例えば <input type="checkbox" name="color" value="red" checked > <input type="checkbox" name="color" value="blue" checked> <input type="checkbox" name="color" value="green" checked > <input type="checkbox" name="option" value="A" checked > <input type="checkbox" name="option" value="B" checked > <input type="checkbox" name="option" value="C" checked > ならば、submitされるURL変数は ?color=red,blue,green&option=A+B+C になるようにしたいのです よろしくお願いします

    • ベストアンサー
    • HTML
  • 複数選択した場合のチェックボックスの受け渡しについて!

    こんばんわっ! 度々質問させていただいてます。 今回、Mysqlより日記のデータの抽出を行いました。 書いたり更新したり削除したりと言う日記です。 書いたり更新したりは無事出来ました。問題は削除です。 セレクトフォーム形式の場合削除できました。 しかしセレクトフォーム形式の場合一個づつの削除になります。 これじゃあんまりだなぁ・・・と思い。 非常に悩みました。 チェックボックス形式にしようと思いましたっ! 抽出結果に↓をループしました。 <input name="checkbox[]" type="checkbox" value="<?=$id?>" /> 表示結果は↓です。 □太郎さんの5月1日の日記 タイトル;ホニャララ □太郎さんの5月2日の日記 タイトル;ホニャララ チェックした日記を削除する。 の様になります。(□はチェックボックスです) 値の受け渡しはこちらです↓ $result =$_POST['checkbox']; foreach($result as $id) 今回チェックボックス形式の削除は初めてです。 チェックボックスにあるname=checkbox[] と vulue の理解できてません(*∩_∩*) 一つの項目は受け渡せました。 しかし複数チェックを行っていても複数の値を受け渡す事出来ません。 vulue= に問題ありますか! 又は値を受け取る $result =$_POST['checkbox'];  foreach($result as $id) にもんだいありますかっ!

    • ベストアンサー
    • 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
  • チェックボックスからデータベースへ複数書き込み

    こんにちは。 現在アンケートサイトを作成しているのですが、チェックボックスを利用した質問の複数選択した回答をデータベースに登録できません。 htmlやphp、PostgreSQLに詳しい方指摘お願いします。 ※sample.html <form method="post" action="sample.php"> <b>7.あなたはどのような資格を持っていますか?</b><br> <input type="checkbox" name="sikaku[]" value="1" checked>ITパスポート <input type="checkbox" name="sikaku[]" value="2">漢字検定3級以上 <input type="checkbox" name="sikaku[]" value="3">英語検定3級以上 <input type="checkbox" name="sikaku[]" value="4">自動車運転免許 <input type="checkbox" name="sikaku[]" value="5">簿記 <input type="checkbox" name="sikaku[]" value="6">宅建 <input type="checkbox" name="sikaku[]" value="7">TOEIC600点以上 <input type="checkbox" name="sikaku[]" value="8">その他<br><br> <input type="submit" name="OK" value="OK"> </form> ※sample.php <?php //htmlから"sikaku"を取得 $sikaku = $_REQUEST["sikaku"]; //dbに接続・dbに書き込みSQL文 $dbconn = pg_connect ("dbname=****** user=********"); $result = pg_query ($dbconn, urldecode("insert into sample03 values('$sikaku');")); //接続を閉じる pg_close($dbconn); ?> ※PostgreSQL(table : sample03) //テーブル作成 ********=> create table sample03( ********(> 資格 int); CREATE TABLE //権限 ********=> grant select on sample03 to ********; GRANT //テーブルの表示 ********=> select * from sample03; 資格 ------ (0 rows)

  • チェックが入っていなかったら処理を行いたい

    いつもお世話になっております。 只今チェックボックスにチェックが入っていなかったらチェックを入れるという処理を Javascript、JQueryで行いたいのですが上手く動作せずに困っております。 if ( $( 'input:checkbox[name="tax_input[pick-up][]"]' ).is( 'checked' ) == false ) { jQuery('input:checkbox[name="tax_input[pick-up][]"]').removeAttr ( 'checked' ); jQuery('input:checkbox[name="tax_input[pick-up][]"]:eq(3)').attr ( 'checked', 'checked' ); } 上記のソースで試したのですが反応が全くありませんでした。 if( $( 'input:checkbox[value="98"]' ).is( ':checked' ) ) { jQuery('input:checkbox[name="tax_input[pick-up][]"]').removeAttr ( 'checked' ); jQuery('input:checkbox[name="tax_input[pick-up][]"]:eq(2)').attr ( 'checked', 'checked' ); } チェックが入っている場合の判定ですが上記の場合は動きました。 記述ミス、根本的に書き方が違うなどございましたらご指摘ください。 ご回答のほどどうぞよろしくお願い致します。

  • ドロップダウンメニューで選択された内容通りにチェックを入れるJS

    ドロップダウンメニューで選択された内容通りにチェックを入れるJS をご教示下さい。 なお、本番環境で対象とするチェックボックスのnameは、全てchkで始まっている法則性があります。 よろしくお願い致します。 <html> <head> <script type="text/javascript"> <!-- // --> </script> </head> <body> <form> <select name="myselect"> <option selected>全てにチェック</option> <option>全てチェック解除</option> <option>奇数だけチェック</option> <option>偶数だけチェック</option> <option>1、6、8番だけチェック</option> <option>3番以降全てチェック</option> </select> <br> <input type="checkbox" value="1" name="chk01" checked>1番<br> <input type="checkbox" value="1" name="chk02" checked>2番<br> <input type="checkbox" value="1" name="chk03" checked>3番<br> <input type="checkbox" value="1" name="chk04" checked>4番<br> <input type="checkbox" value="1" name="chk05" checked>5番<br> <input type="checkbox" value="1" name="chk06" checked>6番<br> <input type="checkbox" value="1" name="chk07" checked>7番<br> <input type="checkbox" value="1" name="chk08" checked>8番<br> <input type="checkbox" value="1" name="chk09" checked>9番<br> <input type="checkbox" value="1" name="chk10" checked>10番 </form> </body> </html>

  • htmlのフォームのチェックボックスを繰り返し文等を使って複数作りたい

    htmlのフォームのチェックボックスを繰り返し文等を使って複数作りたいのですが、どのように書けば良いのかわかりません。 自分はhtml、PHP、Perlの基本的なことはわかります。 例えば、以下のようなチェックボックスを繰り返し文などを使って作るとすると、どのように書けばよいのでしょうか? <input type="checkbox" name="test">test1 <input type="checkbox" name="test">test2 <input type="checkbox" name="test">test3 <input type="checkbox" name="test">test4 <input type="checkbox" name="test">test5 よろしくお願いします。

    • ベストアンサー
    • HTML