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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

MySQL

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

PHP

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

Q&A

1回答

16512閲覧

MySQLで構築しているデータベースの中身をプルダウンメニューに反映させたいです。

退会済みユーザー

退会済みユーザー

総合スコア0

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

MySQL

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

PHP

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

0グッド

1クリップ

投稿2017/04/01 10:47

編集2017/04/04 08:06

MySQLで構築しているデータベースの中身をプルダウンメニューに反映させたいです。
データベースの中身は今後追加することもあるので、動的なプルダウンメニューを実装したいです。
その後、プルダウンメニューで選択したものを条件に絞り込み機能を実装しようと考えています。
JavaScriptなどを使うよりは、PHP側でfor文を使って値を取れば良いという友人からのアドバイスをいただいたのですが、いまいち処理方法がわからないです...。

参考となるWebサイトも探してみてたのですが、どこを参考にすれば良いのか混乱してしまっている状態です。

追記:友人が作った独自のクラスライブラリ(著作権があるので載せられませんが・・・)を使っています。

データベースは
categoryデータベース
id(主キー)
name

という構成です。

<?php //import require_once("php/pdbc.php"); // mb_internal_encoding("UTF-8"); ini_set("display_errors",On); error_reporting(E_ALL); $mysql = new PDBC("localhost","garden","UTF8","hogeUser","hogehoge"); //mysqlサーバーへのログイン if (isset($_POST["dataSet"])) { // 1. ユーザIDの入力チェック if (empty($_POST["categoryName"])) { // 値が空のとき $errorMessage = '種類名が未入力です。'; } if (!empty($_POST["categoryName"])){ // 入力した種類名を格納 if(strpos("categoryName",'科') !== false){ //'categoryName'のなかに'科'が含まれている場合、科は外す $categoryName = $_POST["categoryName"]; // VALUES(?,?)に入れるための配列を作る // 配列はarrayを使う $newCategory = array(array($categoryName)); }else{ //科をつける $categoryName = $_POST["categoryName"]; $newCategory = array(array($categoryName.'科')); } // データの挿入 $resp = $mysql->insert("INSERT INTO category(name) VALUES (?)",$newCategory); //mysqlに接続、成功したかを$respに格納。戻り値は行 //VALUESにNewUserの中身が入る( if(gettype($resp == "integer") && $resp > 0){ $dataSetMessage = '登録が完了しました。'; } else{ $dataSetMessage = '登録の際にエラーが発生しました: '.$resp; } } print("<!doctype html>"); } ?> <html> <head> <meta charset="UTF-8"> <title>新規登録</title> </head> <body> <h1>栽培データ新規登録</h1> <font color="#ff0000"><?php if(isset($errorMessage)) print($errorMessage); ?></font> <font color="#0000ff"><?php if(isset($dataSetMessage)) print($dataSetMessage);?></font> <form id="loginForm" name="loginForm" action="" method="POST"> <fieldset> <legend>新規登録フォーム</legend> <label for="categoryName">種類名</label><input type="text" name="categoryName" placeholder="種類名を入力"> <br> <input type="submit" id="dataSet" name="dataSet" value="新規登録"> </fieldset> </form> <br> <form action="login.php"> <input type="submit" value="戻る"> </form> </body> </html>

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

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

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

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

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

s8_chu

2017/04/01 10:59

現在のPHPのコードやテーブルの構造を追記すると回答が得られやすくなると思います。
退会済みユーザー

退会済みユーザー

2017/04/01 12:49

アドバイスありがとうございます。追記しました。
kei344

2017/04/04 18:23

質問文のコードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
guest

回答1

0

テーブルの構造

SQL

1CREATE TABLE `sample` ( 2 `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 3 `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' 4) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

そこに入れるデータ

SQL

1INSERT INTO `sample` (`id`, `name`) 2VALUES 3 (NULL, 'name1'), 4 (NULL, 'name2'), 5 (NULL, 'name3'), 6 (NULL, 'name4'), 7 (NULL, 'name5')

とすると、質問者さんが実現したいことは以下のように行えると思います。

PHP

1<?php 2$dsn = "mysql:dbname=database;host=localhost;charset=utf8"; 3$user = "root"; 4$password = "password"; 5$options = [ 6 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 7 PDO::ATTR_EMULATE_PREPARES => false, 8]; 9 10try { 11 $pdo = new PDO($dsn, $user, $password, $options); 12 $sql = "SELECT `name` FROM `sample`"; 13 $stmt = $pdo->query($sql); 14 $result = $stmt->fetchAll(PDO::FETCH_ASSOC); 15} catch (PDOException $exception) { 16 echo $exception->getMessage(); 17 exit(); 18} 19?> 20<!DOCTYPE html> 21<html lang="ja"> 22<head> 23 <meta charset="UTF-8"> 24 <title>タイトル</title> 25</head> 26<body> 27<form> 28 <label> 29 <select name="names"> 30 <?php foreach ($result as $value) { ?> 31 <option value="<?php echo htmlspecialchars($value["name"], ENT_QUOTES, "UTF-8"); ?>"> 32 <?php echo htmlspecialchars($value["name"], ENT_QUOTES, "UTF-8"); ?> 33 </option> 34 <?php } ?> 35 </select> 36 </label> 37</form> 38</body> 39</html>

投稿2017/04/01 11:31

s8_chu

総合スコア14731

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問