- 締切済み
php selectbox hidden
formでselectboxを作っています。 入力画面→確認画面→DB登録という流れになっており、 selectboxもDB内からひっぱりforeachで回しています。 入力画面 <select name="cat" id="cat" class="postform"> <option value="0">-- 選択してください --</option> <?php foreach ($categories as $category) { echo '<option value="' .$category->term_id. '">' .$category->cat_name. '</option>'."\n"; } </select> のようにしています。 DBの接続は省かせていただきます。 確認画面 echo $_POST['cat']; としていますが、このままだとvalueの値のみ($category->cat_nameのid)が表示されます。 確認画面では$category->cat_nameと表示され登録時には$category->term_idとしたいです。 どなたかおわかりの方がいらっしゃいましたらよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
foreach ($categories as $category) { echo '<option value="' .$category->term_id. '">' .$category->cat_name. '</option>'."\n"; $_SESSION["category"][term_id]=$category->cat_name; } でセッションに渡しておいて、確認画面では echo $_SESSION["category"][$_POST['cat']]; してみるとか・・・
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 確認ページにterm_idの値を送信し、そこでcat_nameに該当する値を取得すれば良いのではないでしょうか。 表示する部分は取得した名称で、確認画面からDB登録ページに遷移するときにはhidden(セッション?)に保持したterm_idを送信すればよいと思います。 確認ページ.php(接続部分やセキュリティの考慮レコードからの取得は端折ってます) // DBから取得 $term_id = $_POST['term_id']; $sql = "select cat_name from TABLE where term_id='$term_id'; // 取得して$cat_nameにカテゴリ名をセット カテゴリ名:<?= $cat_name ?> <input type="hidden" name="term_id" value="<?= $term_id ?>"> 上記のような感じにすれば、確認画面での表示はカテゴリ名、実際の登録はterm_idになります。 または入力画面にてJavaScriptを利用すれば確認画面でのDBからの取得は行わなくても済みますが、JavaScriptに対応していない端末では動きません。 (方法としては、送信ボタン押下時にあらかじめ用意しておいた<input type="hidden" name="cat_name">に現在選択されているカテゴリ名をセットしてあげれば確認画面では$_POST['cat_name']で取得可能になります)