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

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

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

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

HTML

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

Q&A

解決済

3回答

16235閲覧

phpで生成したプルダウンリストにselectedを付けるには?

MG1986

総合スコア21

PHP

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

HTML

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

0グッド

2クリップ

投稿2016/06/08 11:47

###前提・実現したいこと
phpで動的に都道府県のプルダウンリストを作ってその初期値を東京にしたい場合どうすればよいでしょうか?

###該当のソースコード

<select name="pref" id="pref"> <?php $options = array('北海道','青森県','岩手県','宮城県','秋田県','山形県','福島県','茨城県','栃木県','群馬県','埼玉県','千葉県','東京都','神奈川県','新潟県','富山県','石川県','福井県','山梨県','長野県','岐阜県','静岡県','愛知県','三重県','滋賀県','京都府','大阪府','兵庫県','奈良県','和歌山県','鳥取県','島根県','岡山県','広島県','山口県','徳島県','香川県','愛媛県','高知県','福岡県','佐賀県','長崎県','熊本県','大分県','宮崎県','鹿児島県','沖縄県'); for ($i=0; $i < count($options); $i++) { echo "<option value=".$options[$i].">".$options[$i]."</option>"; } ?> </select>

静的にhtmlだけの場合なら東京のoptionにselectedつけたらいいのですがphpとなるとどうやっているのでしょうか?

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

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

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

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

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

guest

回答3

0

ベストアンサー

こんな感じです

php

1for ($i=0; $i < count($options); $i++) { 2 $attr = $options [$i] == '東京都' ? ' selected' : ''; 3 echo "<option value=".$options[$i].$attr.">".$options[$i]."</option>"; 4 }

投稿2016/06/08 12:03

oskbt

総合スコア1895

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

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

MG1986

2016/06/08 12:14

回答ありがとうございます。 $attr = $options [$i] == '東京都' ? ' selected' : ''; if使わなくてもできるんですか? ifでしたら ~~だったら~~して、違うなら~~する という風にわかりやすいのですが $options [$i] == '東京都' ? ' selected' : ''; これは文法的にはどうなっているのでしょうか? パッと見、配列が東京都ならselectedを付けるというのはわかりますが 理解したいのです。 ?はなんでしょうか...?
oskbt

2016/06/08 12:45 編集

その一行は三項演算子という式です。 極めてシンプルな判定条件かつ返り値を返してほしいときに、他のifとかよりもとても短く書けるすぐれものです。 分解して解説しますね。 $options [$i] == '東京都' ? ' selected' : '' は (条件判定)?(条件判定でtrueのとき返すもの):(判定がfalseのとき返すもの) という形を取ります。 具体的に書くと (条件判定)→ $options [$i] == '東京都' (trueのとき返すもの) → ' selected' (falseのとき返すもの) → ''  (''は空の文字列です) この式は $options[$i]は東京都かな? もしそうなら ' selected' 違うなら ''  とういう計算をします。 +とか||とか>=などと同じで A?B:C の「?」と「:」は演算子です。 ABCと3つの項があるから3項演算子という名前です。演算子なので返り値があります。返す値は計算結果です。 なので最終的には $attr = (3項演算子の返り値); という単なる代入式になります。
MG1986

2016/06/08 13:30

詳しくありがとうございます! 助かりました!
guest

0

自分だったら…
都道府県を入力にして ' selected' or '' を返す
関数を作ってそれを利用するのかなあ。

投稿2016/06/08 12:03

takasima20

総合スコア7458

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

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

MG1986

2016/06/08 13:30

ありがとうございます!
guest

0

(敢えてコード例は書きません)

  • 東京都の時のみ selected も出力する

という条件分岐をかけたPHPコードをかけばいいですね。


コメント返信後の追記

条件分岐の書き方がわからないんでしょうか。
もしそうであれば非常に基礎的なことなので回答を得るより先にそちらを学習されたほうが良いように思いますが。。

例えばこういった書き方ができるかと思います。

PHP

1echo "<option value=".$options[$i].">".$options[$i]."</option>";

の部分を

PHP

1echo "<option value=".$options[$i]. ($options[$i] == '東京都' ? ' selected' : '') . ">".$options[$i]."</option>";

他の方も既に同様の書き方をされていますが「三項演算子」というのを利用した場合を上げました。


追記

if文を使った例としてはこんな感じにできるかと思います。

PHP

1 2$options = array('北海道','青森県','岩手県','宮城県','秋田県','山形県','福島県','茨城県','栃木県','群馬県','埼玉県','千葉県','東京都','神奈川県','新潟県','富山県','石川県','福井県','山梨県','長野県','岐阜県','静岡県','愛知県','三重県','滋賀県','京都府','大阪府','兵庫県','奈良県','和歌山県','鳥取県','島根県','岡山県','広島県','山口県','徳島県','香川県','愛媛県','高知県','福岡県','佐賀県','長崎県','熊本県','大分県','宮崎県','鹿児島県','沖縄県'); 3 4$selected = '東京都'; // 汎用化のためにはこのように変数化しておいたほうがいいと思います 5 6 for ($i=0; $i < count($options); $i++) { 7// 付与する属性を分岐 8 if($options[$i] == $selected){ 9 $arg = ' selected'; 10 } else { 11 $arg = ''; 12 } 13 echo '<option value="'.$options[$i].'"'.$arg.">".$options[$i]."</option>"; 14 }

もしくは

PHP

1 2$options = array('北海道','青森県','岩手県','宮城県','秋田県','山形県','福島県','茨城県','栃木県','群馬県','埼玉県','千葉県','東京都','神奈川県','新潟県','富山県','石川県','福井県','山梨県','長野県','岐阜県','静岡県','愛知県','三重県','滋賀県','京都府','大阪府','兵庫県','奈良県','和歌山県','鳥取県','島根県','岡山県','広島県','山口県','徳島県','香川県','愛媛県','高知県','福岡県','佐賀県','長崎県','熊本県','大分県','宮崎県','鹿児島県','沖縄県'); 3 4$selected = '東京都'; // 汎用化のためにはこのように変数化しておいたほうがいいと思います 5 6 for ($i=0; $i < count($options); $i++) { 7// 出力箇所そのものを分岐 8 if($options[$i] == $selected){ 9 echo '<option value="'.$options[$i].'" selected>".$options[$i]."</option>"; 10 } else { 11 echo '<option value="'.$options[$i].'">'.$options[$i]."</option>"; 12 } 13 }

蛇足でした。

投稿2016/06/08 11:58

編集2016/06/08 12:52
kaz.Suenaga

総合スコア2037

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

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

MG1986

2016/06/08 12:12

そこはわかっているのですが、コードがわからないのです...
kaz.Suenaga

2016/06/08 12:21

条件分岐をする場合、一般的には - if 文による分岐 - switch文による分岐 - 三項演算子による分岐(というか場合分け) あたりが手段の選択肢としてあがります。
MG1986

2016/06/08 12:28

詳しくありがとうございます! 三項演算子ですね! 深く調べてみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問