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

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

新規登録して質問してみよう
ただいま回答率
85.46%
タグ

特殊な記法により文書に埋め込む形で記述される付加情報をタグと呼びます。文書構造や書式、文字飾りなどを指示したり、画像や他の文書へのリンクを埋め込むことができる。

PHP

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

1007閲覧

PHP optionタグが配列に入らない

cerasusflorere

総合スコア13

タグ

特殊な記法により文書に埋め込む形で記述される付加情報をタグと呼びます。文書構造や書式、文字飾りなどを指示したり、画像や他の文書へのリンクを埋め込むことができる。

PHP

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/10/06 00:58

編集2021/10/06 06:36

前提・実現したいこと

PHPでWebアプリのようなものを作成しています。
ドロップダウンメニューを作成しており、DBから値を取ってこようと思っています。
DBとの接続、値取得まではできたのですが、肝心の<option>タグが配列の中に組み込めません。

発生している問題

drop_positions配列として、DBより値を取得後、foreach文でdrop_position配列に<option></option>として組み込もうと思っています。
しかし、ドロップダウンメニュー内に表示されないので、drop_position配列を出力されたところ、<option></option>タグは表示されず、DBで取得した値のみが出力されました。

どのようにすれば、<option>タグを配列内に組み込めるのでしょうか?

該当のソースコード

html

1 <select name='position'> 2 <option value='All'></option> 3 <?php 4 echo $drop_position; ?> 5 </select>

PHP

1 $result = $mysqli->query("SELECT position FROM position"); 2 while ($row = $result->fetch_assoc()){ 3 $drop_positions[$drop_position_count] = $row["position"]; // $drop_position_countは0から大きくなっていくだけ 4 $drop_position_count++; 5 } 6 $result->close(); 7 8 foreach($drop_positions as $position){ 9 $drop_position .= "<option value='{$position}'>{$position}</option>"; // ここの2回目の$positionのみが表示される 10 }

省いていますが、SQL文はtry~catch文内にいれています。

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

PHP Version 8.0.11

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

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

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

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

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

guest

回答2

0

ベストアンサー

optionタグだけでは何もしません。
プルダウンしたいのでしたら親にselectタグが必要です。
そしてbrタグは不要です。

<option>: HTML 選択肢要素

HTML の <option> 要素は、 <select> 要素、<optgroup> 要素、<datalist> 要素内で項目を定義するために使われます。

投稿2021/10/06 02:06

編集2021/10/06 02:08
m.ts10806

総合スコア80861

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

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

cerasusflorere

2021/10/06 02:28

ご回答いただきありがとうございます。 htmlの記述をつけ忘れたのですが、selectタグ中にPHPでdrop_position配列を出力しています。 今回書いたforeach文内のehco出力はdrop_position配列が正しく作成されているか確認するために記述したものです。 分かりにくい書き方をしてしまい、申し訳ございません。 後ほど修正致します。
m.ts10806

2021/10/06 03:12

>drop_position配列が正しく作成されているか確認するために それならループさせず配列ごとvar_dumpで良いのでは。 実際にoptionタグだけだとラベル表示になるので、紛らわしいといえば紛らわしいですね。 コードは原則全て提示してくださいね。質問に書かれた内容が全てです。
cerasusflorere

2021/10/06 06:39

html部分も記載いたしました。もしお時間ありましたら、どこが間違っているのか教えていただけると幸いです。
m.ts10806

2021/10/06 06:49

ちなみに $drop_positions をvar_dumpするとどうなりますか?
m.ts10806

2021/10/06 06:51

あと、現状の実行結果をブラウザのソースを表示から取得したhtmlを提示願います。 可能ならブラウザの画面キャプチャも欲しいですね。
cerasusflorere

2021/10/06 07:04

すみません。 >あと、現状の実行結果をブラウザのソースを表示から取得したhtmlを提示願います。 開発ツールことかなと思い、開発ツールを開いたら、optionタグつきでvar_dumpの結果が出ていました。 html内の警告文に$drop_positionがないと表示されていたので、htmlとphpを入れ替えたところ、ドロップダウンメニューに$drop_positionが表示されていました。 phpはソースを上から読み込んでいくため、先にhtmlが書かれていると、あとからphpでoptionタグを作っても認識されないということでしょうか? ということは、php→htmlの順番になっていると、html内のボタンからphpで処理を実行させることはできないのでしょうか?
m.ts10806

2021/10/06 07:11

Chromeなら右クリック「ページのソースを表示」 要は今の「想定通り動いてない」状態でhtmlがどう出てるのかを確認してほしいのです。 せめて、他者がコピペで再現できるか、全体の流れがわかるようにコード提示してもらえればと。 今の内容だと別ファイル、もしくは全く関係ない場所に書かれてる印象を受けます。
cerasusflorere

2021/10/06 07:41

html部分とphp部分を入れ替えたところ、想定通り動くようになりました。 これは、phpファイルはコードを上から読み込んでいくため、先にhtmlが書かれていると、あとからphpでoptionタグを作っても認識されなかったということでしょうか? ということは、php→htmlの順番になっていると、html内のボタンからphpで処理を実行させることはできないのでしょうか? 言語ごとに分けることが重要なのだと思っておりました。申し訳ございません。
m.ts10806

2021/10/06 08:06

全体のコードがないとなんとも。 事実としてあるのは、PHPはリクエストに対してレスポンスを返しているだけで、ブラウザに解釈できるhtml形式の文字列を出力しているということです。 htmlを解析するのはブラウザの仕事。
cerasusflorere

2021/10/08 02:42

全体のコードによって変わるのですね。 では上手くいかなくなったらまた質問を立てようと思います。 ありがとうございました。
guest

0

$drop_positionsや$drop_positionの初期化はしていますか?
0から連番の配列をつくるならこれで良いです。

PHP

1$drop_positions[$drop_position_count] = $row["position"]; 2$drop_position_count++; 3↓↓↓ 4$drop_positions[] = $row["position"];

投稿2021/10/06 01:40

yambejp

総合スコア115012

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

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

cerasusflorere

2021/10/06 02:23

ご回答いただきありがとうございます。 while文で回す場合の添字の付け方がわからなかったのですが、そう書くのですね。 修正いたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問