ここから本文です

PHPで、データベースのレコードと一致するチェックボックスを選択済みにする

kal********さん

2013/5/2714:21:25

PHPで、データベースのレコードと一致するチェックボックスを選択済みにする

いつもお世話になっています。
現在、CRUDシステムのUpdate(更新)の部分を制作しています。
そこで、編集元のレコードをあらかじめ表示させておきたいと思っています。
テキストエリアは、URLのパラメータを使ってそのIDのデータを参照し、値を取ってくるということは成功しました。
ですが、チェックボックスやセレクトボックスの値は、データベースの方のSET型で入っており、取り出した後どう処理すればいいのかわかりません。そもそも可能なのでしょうか?

以下コード--------------------------------------

<?php
$connect = mysql_connect($host,$user,$pass) or die('接続に失敗しました。'.mysql_error());
$select = mysql_select_db($db);
$char = mysql_set_charset("utf8");

$val = $_GET['id']; // パラメータのIDを取得

$sql = mysql_query('SELECT * FROM table1 WHERE id=' . $val); // そのIDのデータを参照
$row = mysql_fetch_assoc($sql);
?>

<form action="update_do.php" method="post" onsubmit="return ssCheck(this)">
<label>名称</label>
<input type="text" name="name" class="input-xxlarge" value="<?php echo $row['name']; ?>"> // ここはできている

<label>メーカー</label> // セレクトボックス
<select name="maker">
<option value="">なし</option>
<option value="a">A</option>
<option value="b">B</option>
<option value="c">C</option>
</select>

<label>タイプ</label> // チェックボックス
<label>
<label class="checkbox inline">
<input type="checkbox" name="sol[]" value="d">D
</label>
<label class="checkbox inline">
<input type="checkbox" name="sol[]" value="e">E
</label>
<label class="checkbox inline">
<input type="checkbox" name="sol[]" value="f">F
</label>
</form>
------------------------------ここまで

このvalue、a b cや、d e fがそれぞれデータベースのメーカー、タイプフィールドの値です。
ここに上で参照した値が当てはまったらselected、checkedを付けたいと思ってるんですが・・・

まだまだ知識不足でお世話になりっぱなしですが、どうか、ご教授頂きたいです。

閲覧数:
1,681
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

mpywさん

2013/5/2715:42:13

こんな感じでいいですか?
http://ideone.com/iMG9La


こっちもよろしくお願いします。
http://note.chiebukuro.yahoo.co.jp/detail/n149597

質問した人からのコメント

2013/5/29 12:17:05

解読するのにだいぶ時間がかかりました(笑)
こんな方法があるんですね、驚きました。自分だけでは絶対にたどり着けないです・・・!
また、下のリンクも大変勉強になりました。これからもがんばっていきたいと思います。
どうもありがとうございました!

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

shimixさん

2013/5/2715:39:24

kalakalamindさん

SET型であればexplodeで分解すればいいのでは?

$array = explode(',' $row['カラム名']);

あとは(たとえば、A,B,Cの値のSET型であれば)

$sel_A = in_array('A', $array) ? ' selected="selected"' : '';
$sel_B = in_array('B', $array) ? ' selected="selected"' : '';
$sel_C = in_array('C', $array) ? ' selected="selected"' : '';

などとしておいて

<input type="checkbox" name="sol[]" value="A"<?=$sel_A; ;> />A

などとして展開してやればいいと思います。

option要素なども同様に

$sel_A = $row{'カラム名] === 'A' ? ' selected="selected"' : '';
$sel_B = $row{'カラム名] === 'B' ? ' selected="selected"' : '';
$sel_C = $row{'カラム名] === 'C' ? ' selected="selected"' : '';

としておいて

<option value="a"<?= $sel_A; ?>>A</option>

などとすればいいです。複数選択可能にしているのであればcheckbox同様にin_arrayでチェックすればいいです。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる