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

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

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

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

HTML

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

Q&A

解決済

5回答

9794閲覧

セレクトボックスの中の値を固定したい。

uverworld101nm

総合スコア172

PHP

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

HTML

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

0グッド

0クリップ

投稿2016/08/30 06:04

以下のコードのセレクトフォームを送信すると、例えば学生、女を選択して送信した場合、セレクトボックスの中身は学生、男となります。つまり、デフォルトに戻ってしまいます。
自分が選択した値を送信した後もセレクトフォームの中に表示するにはどうすればいいですか?

html

1<html> 2<body> 3 <form method="GET"> 4 <select name="work"> 5 <option value="1">学生</option> 6 <option value="2">会社員</option> 7 <option value="3">公務員</option> 8 <option value="4">主婦</option> 9 </select> 10 <select name="sex"> 11 <option value="1"></option> 12 <option value="2"></option> 13 </select> <input type="submit" name="search" value="検索"> 14 </form> 15</body> 16</html>

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

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

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

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

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

guest

回答5

0

おそらく質問者さんは、クライアントとサーバのデータのやりとりをあまり理解していないのではないでしょうか?
HTMLだけを見ていませんか?

フォームを送信したときにページが遷移(リフレッシュ)されますので、もともとのHTMLコードのとおりに表示されてしまいます。
ですからデフォルトの「男」に戻ってしまうのです。

送信した値で固定したければ、送信された値が男か女かによって、次に表示するときに「女」のほうをselectedにしたHTMLコードをサーバから返すようにしないといけません。

投稿2016/08/30 06:27

NatsumiOki

総合スコア1298

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

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

uverworld101nm

2016/08/30 06:31 編集

では、複数の職業を選択する方はどうすればいいですか?
NatsumiOki

2016/08/30 06:33

何ですか?別の質問ですか?
uverworld101nm

2016/08/30 06:35

少し話が逸れますが、職業のセレクトボックスの値も会社員を選ぶと学生に戻ってしまいます。
NatsumiOki

2016/08/30 06:39

それも同じことです。 選択した値を送信する→サーバが受け取る→受け取ったあとに、選択された状態のページを表示する これをPHPで書くか、またはsubmitで送信せずに、ajaxでサーバと通信して画面だけ書きかえるという方法もあります。
uverworld101nm

2016/08/30 07:07

phpで書きたいのですが、どう書けばいいのですか?
NatsumiOki

2016/08/30 07:13

そういうのを丸投げと言います。 何をすればよいのかについては回答しましたので、あらためて自分で実装方法を調べてみてください。 それでつまづいたらまたあらためてPHPタグで質問すると良いですよ。
guest

0

$_GET['sex']には選択されている方の値(1か2)が入っているでしょうから、
1なら男の方にselectedを付けて、2なら女の方にselectedを付けるようにすればよい。

投稿2016/08/30 06:16

ttyp03

総合スコア16998

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

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

uverworld101nm

2016/08/30 06:18

<option value="2" selected>女</option> ですか? これだと、女の値に固定されてしまいます。
ttyp03

2016/08/30 06:19

だから$_GET['sex']を見てって書いてるでしょう?
ttyp03

2016/08/30 06:29

「どういう意味ですか?」ってどういう意味ですか? 何がわからないのですか?
uverworld101nm

2016/08/30 06:32

いや、$_GET['sex']を見ましたが、ここが問題なのですか?
ttyp03

2016/08/30 06:33

問題じゃなくて、その値を見てどっちかにselectedを付けるようにすればよい、というのを回答に書いたのです。
uverworld101nm

2016/08/30 06:37

例えば、職業のセレクトボックスの値の場合はどうすればいいんですか? 会社員を選ぶと学生に戻ってしまいます。 こっちの場合は複数の選択肢があるので
ttyp03

2016/08/30 06:40

>uverworld101nmさん 男女と同じ考え方で。
ttyp03

2016/08/30 06:43

ハッ!今気づいたけど、これはPHPではないのか? HTMLだけで何かしようとしているのであれば、それは無理な話です。
guest

0

ベストアンサー

やり方はいろいろありますが、とりあえずこんな感じでやってみてはどうでしょう?

PHP

1<?php 2 3//初期設定 4$selected["work"]=array_fill_keys([1,2,3,4],''); 5$selected["sex"]=array_fill_keys([1,2],''); 6 7//値セット 8$selected["work"][filter_input(INPUT_GET,"work")]=" selected"; 9$selected["sex"][filter_input(INPUT_GET,"sex")]=" selected"; 10 11print <<<eof 12<html> 13<body> 14<form method="GET"> 15<select name="work"> 16<option value="1"{$selected["work"][1]}>学生</option> 17<option value="2"{$selected["work"][2]}>会社員</option> 18<option value="3"{$selected["work"][3]}>公務員</option> 19<option value="4"{$selected["work"][4]}>主婦</option> 20</select> 21<select name="sex"> 22<option value="1"{$selected["sex"][1]}>男</option> 23<option value="2"{$selected["sex"][2]}>女</option> 24</select> <input type="submit" name="search" value="検索"> 25</form> 26</body> 27</html> 28eof; 29 30?>

#追記
workは複数選択可能にしたいのであればこんな感じで

PHP

1<?php 2 3//初期設定 4$selected["work"]=array_fill_keys([1,2,3,4],''); 5$selected["sex"]=array_fill_keys([1,2],''); 6 7//値セット 8$replacement=array_fill_keys(filter_input(INPUT_GET,"work",FILTER_DEFAULT,FILTER_REQUIRE_ARRAY)?:array(),' selected'); 9$selected["work"]=array_replace($selected["work"],$replacement); 10$selected["sex"][filter_input(INPUT_GET,"sex")]=" selected"; 11 12print <<<eof 13<html> 14<body> 15<form method="GET"> 16<select name="work[]" multiple> 17<option value="1"{$selected["work"][1]}>学生</option> 18<option value="2"{$selected["work"][2]}>会社員</option> 19<option value="3"{$selected["work"][3]}>公務員</option> 20<option value="4"{$selected["work"][4]}>主婦</option> 21</select> 22<select name="sex"> 23<option value="1"{$selected["sex"][1]}>男</option> 24<option value="2"{$selected["sex"][2]}>女</option> 25</select> <input type="submit" name="search" value="検索"> 26</form> 27</body> 28</html> 29eof; 30 31?>

投稿2016/08/30 07:23

編集2016/08/30 07:47
yambejp

総合スコア114769

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

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

0

選んだ方にselectedをつければよいです。
例)<option value="2" selected></option>

投稿2016/08/30 06:08

s.t.

総合スコア2021

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

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

uverworld101nm

2016/08/30 06:13

それだと、男を選んだ場合、セレクトボックスの値は女に固定してしまいます。
guest

0

  1. セレクトボックスを選択した際、クッキーやローカルストレージに選択した値を保存しておく。
  2. ページのロード時に予め保存しておいた値を元に、セレクトボックスの状態を変更する(以前選択していた値にする)

という手順が必要になります。サーバーを介さないにせよ、JavaScriptの処理が必要ですね。

投稿2016/08/30 06:47

yamato_hikawa

総合スコア2092

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

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

uverworld101nm

2016/08/30 06:52

どういう風にコードを書けばいいですか?
yamato_hikawa

2016/08/30 07:30

こういう記事を参考にしてください。 http://qiita.com/mima_ita/items/363fd434f9c655944e3f セレクトボックスを選択した時に任意の処理を行うためには、という話をすると そもそもJavaScriptをどう書くのか、といった話になってくるので、 ご自分で調べて書いてみて、分からなかったら聞くようにしてください。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問