匿名質問者
匿名質問者匿名質問者とは「匿名質問」を利用して質問した質問者。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら

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で作成しており、出来れば別に扱いたいのですが、
ページを分ける他、何かいいアイディアはありませんでしょうか。
よろしくお願いします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2015/02/01 17:33:49
  • 終了:2015/02/06 01:01:07

ベストアンサー

匿名回答2号 No.2

匿名回答2号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2015/02/03 12:34:40

ここまでを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など含め勉強していきたいと思います!

2015/02/06 01:03:59

その他の回答(1件)

匿名回答2号 No.1

匿名回答2号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2015/02/02 12:46:30

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

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

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

匿名質問者

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

2015/02/03 07:39:43
匿名質問者

質問者から

匿名質問者2015/02/04 18:21:03

ご回答ありがとうございます。返信が遅れ申し訳ありません。
もう少しソースに踏み込みますと
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号 No.2

匿名回答2号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2015/02/03 12:34:40ここでベストアンサー

ここまでを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など含め勉強していきたいと思います!

2015/02/06 01:03:59
  • 匿名回答1号
    匿名回答1号 2015/02/02 10:26:38
    ソース全部書いちゃったほうがいいかもね。
    そしたら2分で解決しそうな気がする。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません