プロフィール更新ページで複数のセレクトボックスにDBへ登録されているデータを反映させる方法についてです。
↓さらっと見て頂ければ...
<?php class Skilletc { static function getAgreement($get){ $options = array( '未定', 'すぐにでも', '1ヶ月以内', '2ヶ月以内', '3ヶ月以内', '6ヶ月以内'); for ($i=0; $i < count($options); $i++) { $selected = $get == $options [$i] ? ' selected' : ''; echo "<option value=".$options[$i].$selected.">".$options[$i]."</option>"; } } } $sql = "SELECT * FROM user_data WHERE id=200"; $stmt = $pdo->query($sql); $rowData=$stmt->fetch(); $sql = "SELECT * FROM user_skill WHERE user_id = ? "; $stmtSkills = $pdo->prepare($sql); $stmtSkills->execute([$rowData['id']]); $sql = "SELECT * FROM user_quali WHERE id= ? "; $stmtQualis = $pdo->prepare($sql); $stmtQualis->execute([$rowData['id']]); $sql = "SELECT * FROM user_lang WHERE id= ? "; $stmtLangs = $pdo->prepare($sql); $stmtLangs->execute([$rowData['id']]); $sql = "SELECT * FROM user_pr WHERE id= ? "; $stmtPrs = $pdo->prepare($sql); $stmtPrs->execute([$rowData['id']]); $rowPr = $stmtPrs->fetch(); ?> <td>契約可能日</td> <td> <select style="" name="cont_date"> <?php echo Skilletc::getAgreement($rowPr['cont_date']); ?> </select> </td>
本日質問させていただいた回答からこのような形で、DBに登録されている内容を選択されている状態にできることが分かりました。
問題はここからで、会員登録するときはjsで要素追加させているのですが、ここにDBへ登録されているものを画像のような形式で表示させるところでどうしたらいいか彷徨っています。
今までは
<?php echo Skilletc::getAgreement($rowPr['cont_date']); ?> <?php echo Skilletc::getAgreement(filter_input(INPUT_POST,cont_data)); ?>とかでメソッドに引数を渡すことで対応できてました。
基本はこれと変わらないと思うのですが、
例えばスキルを3つもってる人なら3つ表示をさせなければならないので
それに合わせてjsも働かせる必要があるのですが、、、
「プログラム言語」「経験年数」のところはこうなってます。
<tr id="skill_select" class="skill_select"> <td> <select name="programs1_[]"> <?php echo Skill::getSkill(); ?> </select> </td> <td> <select name="programs_year1_[]"> <?php echo Skill::getYear(); ?> </select> </td> </tr> <tr id="skill_selectAdd"> <td colspan="2"> <input type="button" value="追加" onClick="skill_selectAdd()"> <input type="button" value="削除" onClick="skill_selectDel()" id="skill_select_btnDel" disabled="true"> </td> </tr>
そもそもの作りがまずかったのかここで躓いています。
プロフィール更新ページなので
プログラム言語とセレクトボックスの間に
DBへ登録されているスキル1 削除
DBへ登録されているスキル2 削除
DBへ登録されているスキル3 削除
という風にすればいいかもしれませんが、(上の3つはセレクトボックス表示ではなく単にテキスト表示)
これでは削除オンリーで
JAVA 2年を
JAVA 3年に変更したい場合にも
一度JAVA 2年を削除して
新たにJAVA 3年を登録しないといけません。
なにか知恵をお借りできればと思います...
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/02 10:16