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

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

ただいまの
回答率

88.92%

選択して送信した値をselectedのように、初期選択状態にするには

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 7,791

destrudo

score 119

<form method="get" action="">
<select name="month">
<option value="">--</option>
 <option value="1">01</option>
 <option value="2">02</option>
 <option value="3">03</option>
 <option value="4">04</option>
 <option value="5">05</option>
 <option value="6">06</option>
 <option value="7">07</option>
 <option value="8">08</option>
 <option value="9">09</option>
 <option value="10">10</option>
 <option value="11">11</option>
 <option value="12">12</option>
</select>
<input type="submit"/>
</form>


セレクトボックスで選択し、送信した月を同じページでreloadされた時に初期状態に選択したいのですが、どうすればいいでしょうか。06を選択したら、06が初期状態に選択されているイメージです。

【追記】
wordpressを使っているので、言語はサーバーサイドです。なのでphpです。リロードは、確かに意味が分かりづらいです。form actionで同じページに飛ぶという意味です。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • m.ts10806

    2017/05/29 11:23

    クライアントサイドのみ(HTML,Javascriptなど)ですか?サーバーサイド(PHPなど)もありますか?ご自身の環境やどちらで実現したいかなど詳細を書かれた方がより自分の欲しい回答を得られます。

    キャンセル

回答 3

checkベストアンサー

+2

テンプレートを意識してこういう書き方が汎用的だと思います

$selected["month"]=array_fill(1,12,"");//今回はたまたま連続データなのでこれでいけます
$month=filter_input(INPUT_GET,"month");
$selected["month"][$month]=" selected";
print_r($selected);
print <<<eof
<form method="get">
<select name="month">
<option value="">--</option>
<option value="1"{$selected["month"][1]}>01</option>
<option value="2"{$selected["month"][2]}>02</option>
<option value="3"{$selected["month"][3]}>03</option>
<option value="4"{$selected["month"][4]}>04</option>
<option value="5"{$selected["month"][5]}>05</option>
<option value="6"{$selected["month"][6]}>06</option>
<option value="7"{$selected["month"][7]}>07</option>
<option value="8"{$selected["month"][8]}>08</option>
<option value="9"{$selected["month"][9]}>09</option>
<option value="10"{$selected["month"][10]}>10</option>
<option value="11"{$selected["month"][11]}>11</option>
<option value="12"{$selected["month"][12]}>12</option>
</select>         
<input type="submit" value="go">
</form>
eof;

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/29 14:23

    ありがとうございます。実装できました。

    キャンセル

+2

methodはgetでいいんですよね。
「月」なのであれば1~12と決まっています。
なので、

  1. $_GETで値を受け取る
  2. 1~12をfor
  3. 2.のループの中で$_GET["month"]で一致しているoptionに[selected]を出力
    で良いかと。

ただ、回答者様ご自身がこれまであげてきた質問の回答や解決したやり方を参考にすれば
解決できそうな内容ではありますが・・・。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

仰っているリロードの定義がよくわかりませんが・・・

F5とかそういうリロードを考慮するのであれば、
javascriptで、monthが選択・変更されたというイベント関数を作ってやって、
その関数内でセッションに選択された月とセッションのkeyを保存してやります。

そんでもって、ページがloadされた際にそのセッションの中身を見て、
セッションがなかったり、何もはいっていなければ「--」のoptionタグにselectedを付ける。
入っている場合は該当するoptionタグにselectedを付ける。
そんなイメージでしょうか。

セッションの使い方
【参考URL】
http://portaltan.hatenablog.com/entry/2015/08/05/100655

こんなのもあります
【参考URL】
https://oshiete.goo.ne.jp/qa/6217674.html

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 88.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る