• ベストアンサー

Mysqlの配列のデータをチェックボックスで表示させる方法を教えて下さい。

Mysqlにチェックボックスからのデータとして「0,1,3」というように 配列を登録しました。 それを今度、phpで呼び出して、ホームページ上に表示させる方法を 教えて下さい。 $labels = array("ド短期1日~OK", "週2、3日程度", "月~金曜日","土日祝日のみ", "毎日オールフリー"); データベースのテーブル名は「job」フィールド名は「working_days」です。 この配列のデータを元にチェックボックスに <label><input type="checkbox" name="working_days[]" value="0" checked >ド短期1日~OK</label> <label><input type="checkbox" name="working_days[]" value="1" checked >週2、3日程度</label> <label><input type="checkbox" name="working_days[]" value="2" >月~金曜日</label> <label><input type="checkbox" name="working_days[]" value="3" checked >土日祝日のみ</label> <label><input type="checkbox" name="working_days[]" value="4" >毎日オールフリー</label> というようにする方法を御指導頂けませんでしょうか。 どうぞよろしくお願い致します。

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

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

結局 "0,1,3"で、進めているのですね・・・ まぁいろいろやり方がありますが、チェックボックスにチェックをつけるなら 以下のようなやり方がよろしいかと。 <?PHP $str="0,1,3"; $array=split(",",$str); foreach($array as $val){ $checked["working_days[]"][$val]=" checked"; } $labels = array("ド短期1日~OK", "週2、3日程度", "月~金曜日","土日祝日のみ", "毎日オールフリー"); foreach($labels as $key => $val){ $html.=<<<eof <input type="checkbox" name="working_days[]" value="{$key}" id="hoge{$key}"{$checked["working_days[]"][$key]}><label for="hoge{$key}">{$val}</label><br />\n eof; } print $html; ?>

nicolemen
質問者

お礼

はい。とりあえずyambejp様にご指導を頂いた正規化の方法がわからず とりあえずできることで処理を進めて、正規化は今後の課題と思って 勉強させて頂いております。何せ、「正規化」とは何かということから勉強しないといけないような状態なもので失礼を致しました。 今回ご指導を頂いた内容をそのままアップさせて頂きましたら 期待通りの表示をすることができました。 本当にいつもありがとうございます。 感謝致します。今後ともどうぞよろしくお願い致します。

その他の回答 (2)

  • kiyusa
  • ベストアンサー率40% (10/25)
回答No.2

foreach() を使うとできます。 以下URLを参照してください。 と、回答を書いたのですが、質問を読み直すと不明なところがいくつか出てきました。 チェックボックスのHTMLのところで、value=0とvalue=1がどちらも「checked」に なっていますが、これはタイプミスと言う解釈で良いですか? つまり、あるデータをMySQLから抽出した時に、jobテーブルのworking_daysフィールドの 値に一致するvalue値を持つチェックボックスをcheckedにしたいのではないかと。 だとすれば$labelsの要素の数だけ、for()を回して、その中でif()で一致した場合に 「checked」を追加するようにすれば良いでしょう。

参考URL:
http://jp.php.net/manual/ja/control-structures.foreach.php
nicolemen
質問者

お礼

ありがとうございます。 うまく説明ができておりませんでしたが、 問題を解決することができました。 配列はなかなか自分のレベルでは難関ですか、 頑張って勉強していきます。 御指導ありがとうございました。

  • Rasyuki
  • ベストアンサー率57% (19/33)
回答No.1

ちょっと理解しづらいのですが、 $labels[数値]でその順番で取得ができますよ。

nicolemen
質問者

お礼

ありがとうございます。 無事に皆様のご指導を頂き、問題を解決できました。 今後ともどうぞよろしくお願い致します。