###前提・実現したいこと
・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/ツール等のバージョンなど)
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/30 01:15