質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

5回答

12066閲覧

プルダウン選択時にMySQLの値を参照し、2つ目のプルダウンに表示させたい

RhymeLight

総合スコア12

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/08/29 06:57

編集2016/08/29 10:04

###前提・実現したいこと
・MySQLのデータとphpを使って連動式プルダウンを作りたい
###発生している問題・エラーメッセージ
現在phpとMySQLの勉強中です。
MySQLのデータをプルダウンに表示し、表示することは出来たのですが、連動式プルダウンを作成する方法がいまいちわか、ご教授頂ければ幸いです。

修正版

<html lang="ja"> <head> <title></title> </head> <body> <?php // 接続設定(サーバ/データベース/ユーザ/パスワード) define("DBSV", "xxxx"); define("DBNAME", "xxxx"); define("DBUSER", "xxxx"); define("DBPASS", "xxxx"); //ni_set( 'display_errors', 1 ); // 文字コード設定 define("ENCDISP", "UTF-8"); //表示文字コード define("ENCDB", "UTF-8"); //データベース文字コード // 選択リストの値を取得 $exprice = "price"; $exprice2 = "price2"; echo "<br>"; echo $_POST["price"]; # => JPY echo "<br>"; echo $_POST["price2"]; # => USD echo "<br>"; //$rate = "SELECT" $exprice2 "FROM exchange2 where price"=$exprice; $rate = "SELECT" $exprice2 "FROM exchange2 where price"=$exprice; $val = $_POST["$exprice"]; $kekka = $_POST["yen"] * $rate; // データベースに接続 $conn = conndb(); ?> <form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>"> <table> <tr> <td><input type="text" name="yen" size="20" value="" />円を</td> <td><?php echo disp_list($conn, "exchange2", "price", "country", $val, $exprice); ?>から</td> <td><?php echo disp_list($conn, "exchange2", "price", "country", $val, $exprice2); ?>へ</td> <td><input type="submit" value="変換"></td> </tr> </table> </form> <b><?php echo $kekka; ?></b> </body> </html> <?php // データベース接続の解除 closedb($conn); ?> <?php //------------------------------ // 関数 //------------------------------ // 選択リストを出力する関数 // パラメータ:接続/テーブル名/リスト値/表示値/選択値/リスト名 function disp_list($conn, $table, $value, $text, $selected_value = "", $m_name) { // DBから製品情報を取り出す $sql = "SELECT * FROM " . $table . " ASC" . $value; $res = mysql_query($sql, $conn) or die("データが取得できませんでした"); // 取り出した製品情報をプルダウンリストに表示する echo "<select name=\"" . $m_name . "\">"; while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { echo "<option "; if ($selected_value == $row[$value]) { echo " selected "; } echo " value=\"".$row[$value]."\">"; echo cnv_dispstr($row[$text])."</option>"; } echo "</select>"; } // DB接続 function conndb() { $conn = mysql_connect(DBSV, DBUSER, DBPASS) or die("DBに接続できませんでした"); mysql_select_db(DBNAME) or die("DBに接続できませんでした"); return $conn; } // DB接続解除 function closedb($conn) { mysql_close($conn); } // 表示用の文字コードに変換 function cnv_dispstr($string) { //文字コードを変換 $det_enc = mb_detect_encoding($string, ENCDB . ", " . ENCDISP); if ($det_enc and $det_enc != ENCDISP) { return mb_convert_encoding($string, ENCDISP, $det_enc); } else { return $string; } } ?>

mysql> SELECT * FROM exchange;
+------+--------------------------+-----------+-------+
| id | country | price | money |
+------+--------------------------+-----------+-------+
| 1 | 日本 | 1 | JPY |
| 2 | 韓国 | 11.15546 | KRW |
| 3 | 中国 | 0.06624 | CNY |
| 4 | インドネシア | 131.64439 | IDR |
| 5 | インド | 0.66647 | INR |
| 6 | サウジアラビア | 0.03734 | SAR |
| 7 | 欧州連合 | 0.00883 | EUR |
| 8 | フランス | 0.00883 | EUR |
| 9 | ドイツ | 0.00881 | EUR |
| 10 | イタリア | 0.00881 | EUR |
| 11 | イギリス | 0.00754 | GBR |
| 12 | カナダ | 0.01286 | CAD |
| 13 | メキシコ | 0.18282 | MXN |
| 14 | アメリカ合衆国 | 0.00995 | USD |
| 15 | アルゼンチン | 0.14773 | ARS |
| 16 | ブラジル | 0.03216 | BRL |
| 17 | ロシア | 0.64162 | RUB |
| 18 | トルコ | 0.0292 | TRY |
| 19 | 南アフリカ共和国 | 0.14092 | ZAR |
| 20 | オーストラリア | 0.01306 | AUD |
+------+--------------------------+-----------+-------+

↓MySQL 新DB
mysql> SELECT * FROM exchange2; +--------------------------+-------+------------+-------------+----------+--------------+-----------+----------+----------+----------+----------+-----------+----------+-----------+----------+-----------+----------+-----------+----------+ | country | price | JPY | KRW | CNY | IDR | INR | SAR | EUR | GBP | CAD | MXN | USD | ARS | BRL | RUB | TRY | ZAR | AUD | +--------------------------+-------+------------+-------------+----------+--------------+-----------+----------+----------+----------+----------+-----------+----------+-----------+----------+-----------+----------+-----------+----------+ | 日本 | JPY | 1.000000 | 11.015620 | 0.065500 | 11.015620 | 0.659340 | 0.036830 | 0.008770 | 0.007480 | 0.012750 | 0.182360 | 0.009820 | 0.147150 | 0.032060 | 0.635520 | 0.028990 | 0.139380 | 0.012970 | | 韓国 | KRW | 0.090940 | 1.000000 | 0.005950 | 11.774410 | 0.059850 | 0.003340 | 0.000800 | 0.000680 | 0.001160 | 0.016590 | 0.000890 | 0.013290 | 0.002910 | 0.057530 | 0.002640 | 0.012780 | 0.001180 | | 中国 | CNY | 15.290160 | 168.171190 | 1.000000 | 1980.116360 | 10.065830 | 0.562340 | 0.133850 | 0.114160 | 0.195130 | 19.006420 | 0.149950 | 2.234290 | 0.489560 | 9.699290 | 0.442760 | 2.141180 | 0.198570 | | インドネシア | IDR | 0.007710 | 0.084960 | 0.000510 | 1.000000 | 0.005090 | 0.000280 | 0.000060 | 0.000100 | 0.000100 | 0.001410 | 0.000100 | 0.001130 | 0.000250 | 0.004900 | 0.000220 | 0.001080 | 0.000100 | | インド | INR | 1.518020 | 16.751560 | 0.099400 | 197.721180 | 1.000000 | 0.055850 | 0.013300 | 0.011350 | 0.019380 | 0.277000 | 0.014890 | 0.221920 | 0.048620 | 0.965050 | 0.044010 | 0.213370 | 0.019750 | | サウジアラビア | SAR | 27.186740 | 299.752010 | 1.782620 | 3542.572200 | 17.898190 | 1.000000 | 0.238020 | 0.203190 | 0.346790 | 4.959010 | 0.266660 | 3.973230 | 0.870480 | 17.278130 | 0.788030 | 3.817470 | 0.353480 | | EU | EUR | 114.034500 | 1256.160390 | 7.469530 | 14784.946240 | 75.187050 | 4.200380 | 1.000000 | 0.852600 | 1.454410 | 20.795250 | 1.120070 | 16.779790 | 3.656030 | 72.470880 | 3.306230 | 15.893820 | 1.479280 | | イギリス | GBP | 133.847770 | 1474.934380 | 8.764830 | 17423.884510 | 88.083990 | 4.921390 | 1.171650 | 1.000000 | 1.707610 | 24.417190 | 1.312340 | 19.553810 | 4.283990 | 85.016010 | 3.877300 | 18.786880 | 1.740550 | | メキシコ | MXN | 5.487480 | 60.438140 | 0.358910 | 713.379700 | 3.609090 | 0.201560 | 0.048000 | 0.040970 | 0.069960 | 1.000000 | 0.053750 | 0.800830 | 0.175460 | 3.480690 | 0.158830 | 0.769680 | 0.071330 | | アメリカ合衆国 | USD | 101.953000 | 1124.100000 | 6.685000 | 13285.000000 | 67.120000 | 3.750100 | 0.892600 | 0.762000 | 1.300500 | 18.596800 | 1.000000 | 14.900000 | 3.264400 | 64.794700 | 2.955200 | 14.315900 | 1.325600 | | アルゼンチン | ARS | 6.850870 | 75.476510 | 0.448150 | 890.939600 | 4.507380 | 0.251680 | 0.059940 | 0.051160 | 0.087340 | 1.248610 | 0.067110 | 1.000000 | 0.219090 | 4.345190 | 0.198280 | 0.960650 | 0.089040 | | ブラジル | BRL | 31.190830 | 343.586290 | 2.043070 | 4043.993750 | 20.565240 | 1.148890 | 0.273520 | 0.233200 | 0.397810 | 5.687940 | 0.306360 | 4.589630 | 1.000000 | 19.822310 | 0.904320 | 4.347290 | 0.404610 | | ロシア | RUB | 1.573000 | 17.304990 | 0.102900 | 203.756020 | 1.037800 | 0.057860 | 0.013790 | 0.011760 | 0.020060 | 0.286030 | 0.015430 | 0.229910 | 0.050400 | 1.000000 | 0.045520 | 0.220820 | 0.020410 | | トルコ | TRY | 34.490820 | 379.937670 | 2.259230 | 4471.847690 | 22.741040 | 1.270450 | 0.302460 | 0.257880 | 0.439900 | 6.289720 | 0.338780 | 5.075210 | 1.105800 | 21.919510 | 1.000000 | 4.807240 | 0.447420 | | 南アフリカ共和国 | ZAR | 7.114710 | 78.541270 | 0.465380 | 21.919510 | 4.684700 | 0.261740 | 0.062320 | 0.053210 | 0.090820 | 1.297910 | 0.069800 | 1.039960 | 0.227840 | 4.499910 | 0.206170 | 1.000000 | 0.092540 | | オーストラリア | AUD | 77.011990 | 848.224380 | 5.032950 | 9994.722160 | 50.629570 | 2.827490 | 0.673150 | 0.574610 | 0.980920 | 14.024810 | 0.753980 | 11.234260 | 2.461360 | 48.815050 | 2.228000 | 10.790550 | 1.000000 | | カナダ | CAD | 78.383030 | 863.741160 | 5.132800 | 10203.658160 | 51.583150 | 2.882030 | 0.686140 | 0.585610 | 1.000000 | 14.299030 | 0.768520 | 11.450970 | 2.508760 | 49.786500 | 2.270600 | 11.001840 | 1.019290 | +--------------------------+-------+------------+-------------+----------+--------------+-----------+----------+----------+----------+----------+-----------+----------+-----------+----------+-----------+----------+-----------+----------+

数字を入れてプルダウンした国を選択すると日本円→その国の通貨になります。
この状態から新しいDBに換装し、プルダウンを増やして中国→アメリカ通貨のように変えることは可能でしょうか?

###補足情報(言語/FW/ツール等のバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

コメントのソースコードを NetBeans のエディタに貼り付けてみました。

イメージ説明

Syntax Error なんぞ、嫌でも指摘してくれるようなものです。
しょうもないエラーで作業が止まるくらいなら、まともなIDE(統合開発環境)を使って開発すべきです。

投稿2016/08/29 09:55

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RhymeLight

2016/08/30 01:15

返信が遅れて申し訳ございません。 現在研修中でして、作業環境を変えられないのです…
guest

0

PHP

1<html lang="ja"> 2<head> 3 <title></title> 4</head> 5<body> 6 7<?php 8// 接続設定(サーバ/データベース/ユーザ/パスワード) 9define("DBSV", "localhost"); 10define("DBNAME", "conversion"); 11define("DBUSER", "root"); 12define("DBPASS", "fl201504"); 13 14// 文字コード設定 15define("ENCDISP", "UTF-8"); //表示文字コード 16define("ENCDB", "UTF-8"); //データベース文字コード 17 18// 選択リストの値を取得 19$exprice = "price1"; 20$exprice2 = "price2"; 21//$val = $_POST["$exprice"]; 22$val = ""; 23$kekka = ""; 24 25// データベースに接続 26$conn = conndb(); 27 28if(isset($_POST['submit'])){ 29 // POSTで送信された通貨を取得 30 $currency1 = $_POST["price1"]; # 変換元の通貨 31 $currency2 = $_POST["price2"]; # 変換先の通貨 32 //echo "<br />"; 33 //echo "変換元の通貨-> " . $currency1; 34 //echo "<br />"; 35 //echo "変換先の通貨-> " . $currency2; 36 //echo "<br />"; 37 38 // レートをデータベースから取得 39 $result = mysql_query("SELECT $currency2 FROM exchange2 WHERE price = '$currency1'"); 40 41 $row = mysql_fetch_assoc($result); 42 //print('<p>'); 43 //print('id='.$row["$currency2"]); 44 // print(',name='.$row["$currency1"]); 45 //print('</p>'); 46 47 // 入力された値とレートで計算して結果を求める 48 $kekka = $_POST["yen"] * $row["$currency2"]; 49} 50 51?> 52<form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>"> 53 <table> 54 <tr> 55 <td><input type="text" name="yen" size="20" value="" />通貨を</td> 56 <td><?php echo disp_list($conn, "exchange2", "price", "country", $val, $exprice); ?>から</td> 57 <td><?php echo disp_list($conn, "exchange2", "price", "country", $val, $exprice2); ?></td> 58 <td><input type="submit" name='submit' value="変換"></td> 59 </tr> 60 </table> 61</form> 62<b> 63 64<?php 65// 結果を表示 66echo "$kekka"; 67?> 68</b> 69 70</body> 71</html> 72 73<?php 74// データベース接続の解除 75closedb($conn); 76?> 77<?php 78 79//------------------------------ 80// 関数 81//------------------------------ 82 83// 選択リストを出力する関数 84// パラメータ:接続/テーブル名/リスト値/表示値/選択値/リスト名 85function disp_list($conn, $table, $value, $text, $selected_value = "", $m_name) { 86 // DBから製品情報を取り出す 87 $sql = "SELECT * FROM " . $table . " ASC" . $value; 88 $res = mysql_query($sql, $conn) or die("データが取得できませんでした"); 89 90 // 取り出した製品情報をプルダウンリストに表示する 91 echo "<select name=\"" . $m_name . "\">"; 92 while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { 93 echo "<option "; 94 if ($selected_value == $row[$value]) { 95 echo " selected "; 96 } 97 echo " value=\"".$row[$value]."\">"; 98 echo cnv_dispstr($row[$text])."</option>"; 99 } 100 echo "</select>"; 101} 102 103// DB接続 104function conndb() { 105 $conn = mysql_connect(DBSV, DBUSER, DBPASS) or die("DBに接続できませんでした"); 106 mysql_select_db(DBNAME) or die("DBに接続できませんでした"); 107 return $conn; 108} 109 110// DB接続解除 111function closedb($conn) { 112 mysql_close($conn); 113} 114 115// 表示用の文字コードに変換 116function cnv_dispstr($string) { 117 //文字コードを変換 118 $det_enc = mb_detect_encoding($string, ENCDB . ", " . ENCDISP); 119 if ($det_enc and $det_enc != ENCDISP) { 120 return mb_convert_encoding($string, ENCDISP, $det_enc); 121 } 122 else { 123 return $string; 124 } 125} 126 127 128?>

投稿2016/08/30 09:15

RhymeLight

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

2重投稿の為、削除しました

投稿2016/08/30 09:13

編集2016/08/30 09:21
RhymeLight

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

とりあえず国名リストを2つ表示したいなら

SELECT country,money FROM exchange ORDER BY id ASC;
した上で、optionのvalueにmaneyを、コンテキストにcountryを表示すればよいでしょう。

2つのセレクトボックスから得たmoney1とmoney2から
SELECT $money2 as rate FROM exchange2 WHERE price=$money
のように値を得てください。
この場合$moneyはプレースホルダーで処理できますが$money2は
カラム名のため与えられません。
$money2をバリデートで想定した20個のどれかだったことをチェックし
sprintfなどで渡してやることになると思います

投稿2016/08/29 12:29

yambejp

総合スコア114784

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RhymeLight

2016/08/30 09:11

返信が遅れてしまい、申し訳ございません。 その後、色々と先輩にも教えてもらうことが出来まして、解決いたしました。 わかりやすい回答ありがとうございました。
guest

0

exchangeからexchange2への換装まで実装したんですよね?
何がわからないのでしょうか?
もしくは換装の仕方がわからないというご質問でしょうか?

投稿2016/08/29 09:17

yambejp

総合スコア114784

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RhymeLight

2016/08/29 09:49

exchange2への換装が終了しております。 select from whereを使用してMySQL内の数値を取り出せるようにしたいのです。 その後調べながらやったのですが、 // 選択リストの値を取得 $exprice = "price"; $exprice2 = "price2"; echo "<br>"; echo $_POST["price"]; echo "<br>"; echo $_POST["price2"]; echo "<br>"; $rate = "SELECT" $exprice2 "FROM exchange2 where price"=$exprice; $val = $_POST["$exprice"]; $kekka = $_POST["yen"] * $rate; // データベースに接続 $conn = conndb(); ?> <form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>"> <table> <tr> <td><input type="text" name="yen" size="20" value="" />円を</td> <td><?php echo disp_list($conn, "exchange2", "price", "country", $val, $exprice); ?>から</td> <td><?php echo disp_list($conn, "exchange2", "price", "country", $val, $exprice2); ?>へ</td> <td><input type="submit" value="変換"></td> </tr> </table> </form> <b><?php echo $kekka; ?></b> という風に変更しました。 echo $_POST["price"];とecho $_POST["price2"];の部分ではちゃんとMySQLからpriceを所得することに成功してるのですがselect from whereを使用して数値を出そうとすると、 PHP Parse error: syntax error, unexpected T_VARIABLEとなってしまいました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問