人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpやhtml初心者です。
自己参照時にGET値をphpで読み取って、htmlの内容書き換えてみてます。
今回、

[毎日/毎週]モード決定用のフォーム

<form name="mode_set" action="httpなんたら" method="GET">
<select name="mode_main" onchange="document.forms['mode_set'].submit()">
...
</select>
</form>


[毎日/毎週]のモードごとで別な情報設定用のフォーム

<form name="dairy_set" action="httpなんたら" method="GET">
<select name="month" onchange="document.forms['dairy_set'].submit()">
...
</select>
</form>

といった感じにしようと思ったのですが。

しかしながら、日付の方のフォームをsubmitしてページジャンプしたときに、mode_mainの値がとれてしまいます。
form部分はそれぞれ別のphpで作成しており、出来れば別に扱いたいのですが、
ページを分ける他、何かいいアイディアはありませんでしょうか。
よろしくお願いします。

●質問者: 匿名質問者
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● 匿名回答2号

<select name="mode_main"... と <select name="month"... って別物ですよね?
selectで選択ならそれぞれにも<select name="mode_main"... 付けてoptionタグにselected属性つけてデフォルト値にしとく必要あるでしょ。
そうしないと間違えて選択したら直せないし。

または直せなくて良いならhiddenで渡すか。
その場合はボタンつかってもリンク使っても作りは同じですよね。
一度リンクで作ってどう画面遷移出来るようにすべきか整理したら良いのでは。

本当はsubmitせず、javascriptで表示非表示切り替えるだけにするのが何かと良いけど。


匿名質問者さんのコメント
ご回答ありがとうございます。 文字数制限から省きましたが実際にはGETの値を元に1つをseleted指定したoptionタグをphpにて生成しております。

質問者から

ご回答ありがとうございます。返信が遅れ申し訳ありません。
もう少しソースに踏み込みますと
form「mode_main」によって「ある1日のデータ」あるいは「ある一週間データ」を指定し、
そのGET値を元に(設定されていなければ「ある1日のデータ」とする)
「ある1日のデータ」であれば
year, month, dayを指定出来るform「dairy_set」を生成する。
その全ての結果を元にHighChartsで表示する(この部分はphpによってかなり無理やりやっています)。
ここまでを1ページのhtmlで実現させたい、ということになります。

質問の要点を言いますと
日付側のformをsubmitした際に、
[URL]/?year=2015&month=2&day=2
ではなく
[URL]/?mode_main=dairy&year=2015&month=2&day=2
といった形をGETに入れてやることは出来ないか、という質問になります。

出来るだけリンクがわかりやすく、リンクだけで共有し合えるものを目指しています。
よろしくお願いします。


2 ● 匿名回答2号
ベストアンサー

ここまでを1ページのhtmlで実現させたい、ということになります。

これと

質問の要点を言いますと
: 省略
といった形をGETに入れてやることは出来ないか、という質問になります。

これは別の話になります。

「1ページのhtmlで実現させたい」場合、「onchange="document.forms['mode_set'].submit()"」とセレクタで選んだ場合にリロードするのではなく、1つのページに2つのフォームを置きます。
そしてそれぞれのフォームにinput hiddenでmode_mainの値を渡します。
しかし、デザイン的に2つのフォームを置きたくない場合、セレクタを用意してjavascriptで片方のフォームを隠します。
「フォーム切り替え」とかでググると良いですかね。
http://5am.jp/javascript/form_change_javascript/
http://www2010.chin3.net/tech/javascript/012.html
これやるならjavascriptやjqueryとか学ばないとだめですね。

もう一つの「mode_main=dairy」を入れたいというのは、先に回答したようにselect要素と「GETの値を元に1つをselected指定したoptionタグ」などがあれば入ります。
実際URLに入ってないなら、なにか勘違いやタイプミスなどをしています。
ブラウザ上にはちゃんとセレクタが表示されていますか?
formタグで囲まれた中にありますか?


匿名質問者さんのコメント
返信が遅れて申し訳ないです。 望んでいたことは2つ目のフォームに1つ目の値をinputタグのhidden属性で与えるという単純なことでしたが、 沢山の言葉を頂いたお陰でようやく辿りつけました。大変有難うございます。 色々な指針も示したいただけましたので、それらを元にJavascriptなど含め勉強していきたいと思います!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ