フォームの選択リストで表示用とデータベース用に値を分けたい

このQ&Aのポイント
  • phpのformでプルダウンメニューを作成し、mysqlに値を格納する方法について教えてください。
  • プレビュー画面で表示する値とデータベースに格納する値を別々に設定する方法について教えてください。
  • フォームの選択リストで表示用とデータベース用の値を分ける方法を教えてください。
回答を見る
  • ベストアンサー

フォームの選択リストで表示用とデータベース用に値を分けたい

phpのformで下記のようなプルダウンメニューを作成しました。 <select size="1" name="category"> <option value="1">1課</option> <option value="2">2課</option> <option value="3">3課</option> </select> nameのcategoryはmysqlのフィールド名で、valueはそれぞれ数字を割り当てました。 mysqlにvalueの値を格納したいのですが、次のプレビューページで見ると <?php echo $category?> valueの値がそのまま表示されてしまいます。プレビュー画面では1課と表示したいのですが、1が表示されてしまいます。 データベース格納用とPHP表示用をどのようにして組み込むことができますでしょうか?

  • yes87
  • お礼率74% (29/39)
  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • tomcat55
  • ベストアンサー率27% (5/18)
回答No.1

プレビューページでみてわかるように、 $categoryにはvalue値がはいっていますので、 value値を元に、表示用のデータを取得、設定しなければいけません。 1.課をつける <?php echo $category?>課 とする 手っ取り早いですが、1課ってのは例ですよね。。 2.場合わけで表示させる valueが1の場合、1課と表示する valueが2の場合、2課と表示する : 3.mysqlに問い合わせた結果を表示させる value値にあてはまるフィールド名を表示する。 No|Name 1|1課 2|2課 : というようなマスタテーブルがありますよね? そのNameを表示するようにすればいいと思います。 3.が恒久的でいいかと思いますが、 変更の予定がない、いちいちDBに問いあわせるまでもない、というのであれば2でもかまわないと思います。

yes87
質問者

お礼

どうもありがとうございました。 教えて頂いた 2.の方法で対処することができました。 私もtomcat55さんのように対処方法がすぐに浮かぶようになりたいです。

関連するQ&A

  • セレクトフォームで選択した複数の値の挿入

    こんにちは。 標題の通りセレクトフォームで複数の値を渡した時のテーブルへのInsertの方法について悩んでいます。 環境はPHP5.1.2、MYSQL5、Apache2です。 やりたいことはセレクトフォームで複数の値を選択した場合、カンマ区切りにしてひとつのフィールドに格納したいということです。 現在つまづいている部分は、カンマ区切りにした値をInsertする部分です。表示するだけならいいのですが、どうしても最後の値しかInsertできません。(ちなみに挿入する値は数値です。フィールドはカンマを入れるのでVarcharにしています) 下にソースを書きましたが、この書き方だと前の値が上書きされているためだということはわかるのですが、どうしても書き方がわかりません。 できれば $value = $id['0'].",".$id['1'].",".$id['2']....; というような形で挿入したいのです。(ほかに同等の形になるよい方法があればこの形にこだわりません) へたな説明で申し訳ありませんがよろしくお願いします。 <<index.php>> <form action="entry.php" method="post"> <select name="bugID[]" multiple> <option value="id1" name="bugid">AA</option> <option value="id2" name="bugid">BB</option> <option value="id3" name="bugid">CC</option> <option value="id4" name="bugid">DD</option> </select> <input type="submit" value="送信"> </form> <<entry.php>> if($_POST["bugID"]){ foreach($_POST["bugID"] as $value){ $bug_id = $value.","; } } mysql_select_db($DB,$mysql) or die ("Entryデータベースの接続に失敗しました\n".mysql_error()); $query = "insert into ".entryTA." (bug_id)"; $query .= " values('{$bug_id}')"; mysql_query($query,$mysql);

    • ベストアンサー
    • PHP
  • プルダウンを選択していないときは、初期値(selected)の値を、選

    プルダウンを選択していないときは、初期値(selected)の値を、選択したときは選択値を、hiddenで渡したい。 ▽プルダウン例 <form> <select> <option value="0" selected>A</option> <option value="4">B</option> <option value="6">C</option> </select> </form> ↑上で選択した値(A or B or C)値を、↓下のvalue=「"hoge"」に渡したいです。 ※選択肢は3つだけではなくて、たくさんあります。 ▽input例 <input name="category_name" value="hoge" type="hidden"> ※formとかselectにid振っても構いません。 ※javascriptでやりたいです。

  • プルダウン 値保持 onchange

    失礼します、現在年月のプルダウンを作成しており プルダウン自体は年月の作成ができなのですが再読み込みした際に プルダウンに選択した値を保持して欲しいです。 現在リダイレクト先を自身にしております。また、onChangeでプルダウンをした際に読み込むようにしています。 ご教授頂きたいです。宜しくお願い致します。 htmlに埋め込んでいるので読みにくいかと思いますがご了承ください <form action="<?php $self ?>" method="POST"> <select name = "year" onChange="javascript:submit()"> <?php for ($y = 2000; $y < date(Y)+1; $y++) :?> <?php if($s == 0) : ?> <option value="<?php echo $y ?>">選択してください</option>; <?php ++$s ?> <?php endif; ?> <option value="<?php echo $y ?>"><?php echo $y ?></option> <?php endfor; ?> </select> <?php $a = array('1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'); ?> <select name = "month" onChange="javascript:submit()"> <?php foreach ($a as $key => $value) :?> <?php $b = $key + 1 ?> <?php if($h == 0) : ?> <option value="<?php echo $y ?>">選択してください</option> <?php ++$h ?> <?php endif; ?> <option value="<?php echo $b ?>"><?php echo $value ?></option> <?php endforeach; ?> </select> </form>

    • ベストアンサー
    • PHP
  • POSTでセレクトフォームの値を渡す

    こんにちは。初めて質問させていただきます。 過去ログを検索して似たような内容の投稿は読んだのですが、どうにも自分がやりたいことへの応用が利かないため投稿させていただきました。環境はPHP4.3.2 DBはMYSQLを使用しています。 やろうとしていることは、入力フォーム上(index.phpとします)で任意(セレクトフォーム)でテーブルを選択し、その選択したテーブルにセレクトフォームの下にあるテキストフォームの値を挿入しようと考えています。 引っかかっている部分はセレクトの値の部分です。(テキストの方はテーブルを固定すると問題なかったので省略します) <<index.php>> <form action="inputdata.php" method="post"> <select name="dblist"> <? $mysql = mysql_connect(SERVER,USER,PASS) or die ("MYSQLに接続できませんでした\n"); mysql_select_db(DB,$mysql) or die ("データベースの接続に失敗しました\n"); $dbresult = mysql_query("SELECT * FROM listtable", $mysql); while($row = mysql_fetch_assoc($dbresult)){ echo "<option value='{$row['list_tb']}'>{$row['list_name']}"; } mysql_close($mysql); ?> </select> //これより下にテキストが入りますが省略します </form> 上記のような渡し方の場合、受け取る側(inputdata.php)を $table = $_POST['dblist']; と書いているのですが、echoで$tableを表示してもなにも表示されませんでした。(nullでした) 受け取り側(inputdata.php)の書き方が悪いのでしょうか?それともそもそもの渡し方(index.php)が悪いのでしょうか? 基礎的なことかもしれないのですが、適切な受け渡し方法があれば教えてください。よろしくお願いします。

    • ベストアンサー
    • PHP
  • フォームへ値の渡し方について

    こんばんわ。 PHPの勉強をしています。 入力されたIDを元にDBから氏名をクエリし、テキストボックスへ表示させようとしていますが、テキストボックスの指定の仕方が分からず、行き詰っています。 各テキストフォームは<?php?>の中に記述しています。 初心者のため簡単にできることなのかもしれませんが、ご教授願います。 <form method="POST" action="hyouji.php"> ID: <?php if($_POST["ID"]){ $id = $_POST["ID"]; echo "<input type=text name=ID onChange = submit() value = '$id'>"; ECHO "YES"; }else{ echo "<input type=text name=ID onChange = submit()>"; ECHO "NO"; } ?> Name: <?php echo "<input size=28 type=text name=Name ><br>"?> /*上記、テキストボックスに値を入力*/ <input type=submit name=bottun1 value=入力> </form> <?PHP $host = 'localhost'; $user = 'root'; $pass = 'root'; $db = 'DB'; if($_POST["ID"]){ $id = $_POST["ID"]; $link=mysql_connect($host,$user,$pass) or die("接続エラー"); mysql_query("SET NAMES sjis") or die("can not SET NAMES sjis"); mysql_select_db($db,$link) or die("接続エラー"); $sql="SELECT * FROM test WHERE id = '$id'"; $res=mysql_query($sql,$link) or die("データ抽出エラー"); $rows = mysql_fetch_array($res,MYSQL_ASSOC); echo "<tr>"; echo "<td>".$rows["user_id"]."</td>"; echo "<td>".$rows["customer"]."</td>"; echo "</tr>"; mysql_close($link); }else{ echo "表示データはなし"; } ?> 以上、長文になりましたがよろしくお願いします。

    • ベストアンサー
    • PHP
  • 2つのプルダウンを連動させて、selectedで選択状態にしたい

    JavaScript初心者です。 今、phpとMySQLとJavaScriptで車の情報を登録する画面を作っています。 1つのプルダウンが選択後、もうひとつのプルダウンを表示するのですが、 入力画面から確認画面へ移って、history.backでもう一度入力画面にもどったときに、 選択された状態で表示したいのです。 下記のmakerは、値をセッションで受け取り、selectedをつける指示を したので、 選択状態にすることができました。 もう一つのcarnameがどうしたらよいか分かりません。 どうかご教授お願い致します。 <head> <script type="text/javascript"> <!-- var area=0; function setArea(n) { area=n; carnameItem = [ //トヨタ ['カローラ','クラウン','セルシオ'], //ニッサン ['シーマ','エルグランド','ローレル'], len = document.form1.carname.options.length; for (i=len-1; i>0; --i)document.form1.carname.options[i] = null; if(n!=0){ document.form1.carname.style.visibility = "visible"; for (i=0; i<carnameItem[n-1].length; i++)document.form1.carname.options[i+1] = new Option(carnameItem[n-1][i]); } setPref(0); } //--> </script> </head> <body> <form name="form1"> <select name="maker" onChange="setArea(this.selectedIndex)"> <option value="0"<?php echo $selected1?>>▼選択してください</option> <option value="1"<?php echo $selected1?>>トヨタ</option> <option value="2"<?php echo $selected2?>>ニッサン</option> </select> <select name="carname" onChange="setPref(this.selectedIndex)"><option value="0" selected>▼選択してください</option></select> </form>

  • セレクトメニューで複数選択した値をpost送信する

    セレクトメニューで下のように、「multiple」を使えばカテゴリA~カテゴリDまでを全て選択する事ができますが、 <form method="post" action="test.php"> <select multiple name="category"> <option value="category_a">カテゴリA</option> <option value="category_b">カテゴリB</option> <option value="category_c">カテゴリC</option> <option value="category_d">カテゴリD</option> </select> </form> そうではなくて、下のように「すべてのカテゴリ」という項目を作って、カテゴリA~カテゴリDまでの値をPOST送信したいのですが、どのように記述すればよいのか四苦八苦しております。 <form method="post" action="test.php"> <select name="category"> <option value="?">すべてのカテゴリ</option>⇒この部分が解らない箇所です。 <option value="category_a">カテゴリA</option> <option value="category_b">カテゴリB</option> <option value="category_c">カテゴリC</option> <option value="category_d">カテゴリD</option> </select> </form> 色々調べてみたのですが、ないものですね。私の勉強不足だとは思いますが、どなたかご助言の程よろしくお願い致します。

    • 締切済み
    • PHP
  • まったく同じ<select>フォームの値を連動させたい

    まったく同じ<select>フォームの値を連動させたい ptpで下記のようなコードがあり、まったく同じselectフォームの値を常に連動させるにはどうしたらよいでしょうか。 本当は、ひとつのform内に二つのSubmitボタンがあってはならないような話を聞いたことがありますが・・・ <html> <head> </head> <body> <?php $btn = "<select name='sorttype'>"; $btn .= "<option value='0'>氏名</option>"; $btn .= "<option value='1'>年齢</option>"; $btn .= "<option value='2'>電話番号</option>"; $btn .= "</select>"; $btn .= "<input type='submit' name='exec' value='保存'>"; ?> <form> <?= $btn ?> ああああ<br> いいいい<br> うううう<br> <?= $btn ?> </form> </body> </html>

  • PHPでフォームからURLへの値の受け渡し

    選択された値をURLとして移動させたいと考えています。 例えば、http://example.com/というページにフォームを設置し、 ドロップダウンメニューから四国を選択すると http://example.com/shikoku/というページが表示されるといった具合です。 他のページを参考しつつ自分で考えてみたのですが、2度送信ボタンを押さなければページが表示されません。 最近になってPHPを触りはじめたので、いまいち何がおかしいのかわからず困っています…。 どなたかご教授お願いします。また、変な部分もあるかと思いますので、よろしければ教えてください。 <?php if($_POST['submit']) {$url = $_POST['tiiki']."/".$_POST['ken'] ;}?> <form action="<?php echo $url ;?>" method="post"> <select name="tiiki"> <?php $tiiki = array("kyusyu"=>"九州","shikoku"=>"四国");?> <?php foreach ( $tiiki as $tiiki1=>$tiiki2 ){?> <option value="<?php echo $tiiki1 ;?>"><?php echo $tiiki2 ;?></option> <?php };?> </select><br /> <select name="ken"> <?php $ken = array("fukuoka"=>"福岡","ehime"=>"愛媛");?> <?php foreach ( $ken as $ken1=>$ken2 ){?> <option value="<?php echo $ken1 ;?>"><?php echo $ken2 ;?></option> <?php };?> </select><br /> <input type="submit" name="submit" value="送信"> </form>

    • ベストアンサー
    • PHP
  • フォーム内の値のチェックについて

    このようなフォーム(aspでセレクトボックスの数は可変になります。)にてSubmit時に 同じ値が選ばれていたらalertを出すJavaScriptを作りたいのですが、 どのようなものを作ればよろしいでしょうか? <FORM name="TestForm" action="" method="POST" target=""> <TABLE border="1" cellspacing="0" cellpadding="0" width="100%"> <TR> <td>1位</td> <TD> <select name="Select1"> <OPTION value="449">[選択なし]</OPTION> <OPTION value="465">あ</OPTION> <OPTION value="466">い</OPTION> <OPTION value="467">う</OPTION> </select> <td>2位</td> <TD > <select name="Select1"> <OPTION value="449">[選択なし]</OPTION> <OPTION value="465">あ</OPTION> <OPTION value="466">い</OPTION> <OPTION value="467">う</OPTION> </select> <td>3位</td> <TD> <select name="Select1"> <OPTION value="449">[選択なし]</OPTION> <OPTION value="465">あ</OPTION> <OPTION value="466">い</OPTION> <OPTION value="467">う</OPTION> </select> </TR> </TABLE> <TR><TD> <INPUT type="submit" value=登録 name=B1 onClick=""> </TD></TR> </FORM>

専門家に質問してみよう