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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

7031閲覧

セレクトボックスで選択した際、そのときのパラメータも一緒に渡したい

chapp

総合スコア233

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/06/18 11:18

編集2018/06/18 11:40

お世話になります。

GETで渡されたパラメータを基に検索結果を返しているページがあります。この時のデータをA群とします。

そのページ内にセレクトボックスを設け、セレクトボックスが選択されたら、A群と併せGETでデータを渡したいのですが、以下のようなスクリプトだとA群が渡せません。

<form method="GET" action="<?php echo $_SERVER["REQUEST_URI"]; ?>"> <select name="office1" onChange="this.form.submit()">   <option value="test1" selected>test1</option>   <option value="test2">test2</option>   <option value="test3">test3</option> </select> <select name="office2" onChange="this.form.submit()">   <option value="100">100</option>   <option value="10">10</option> </select> </form>

A群で渡された一覧データのソートを、セレクトボックスを変更したく、このような形になっているのですが、A群のデータを渡せずにおります。

お忙しい中恐縮ですが、ご指導いただければ幸いです。
よろしくお願い申し上げます。

追記:A群のデータ

以下は実際のA群のデータの一例です。

List.php?gakku3_data[]=230&gakku3_data[]=239&gakku3_data[]=240&gakku3_data[]=241&type=1&gakku2=9&search=school

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

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

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

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

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

yambejp

2018/06/18 11:30

A群自体が例示されていないですよね?具体的にどのようなデータを想定しているのでしょうか?
chapp

2018/06/18 11:38

yambe.jpさま ご質問ありがとうございます。不備あり申し訳ありません。質問の編集で追記いたします。
guest

回答3

0

formの中にinput hiddenを書いて、
GETされてきた値を次のページに引き継いであげればいいだけだと思いますよ。

php

1 <?php foreach ($_GET["gakku3_data"] as $gakku3_data) { ?> 2 <input type="hidden" name="gakku3_data[]" value="<?php echo $gakku3_data ?>"> 3 <?php } ?> 4 <input type="hidden" name="type" value="<?php echo $_GET["type"] ?>"> 5 <input type="hidden" name="gakku2" value="<?php echo $_GET["gakku2"] ?>"> 6 <input type="hidden" name="search" value="<?php echo $_GET["search"] ?>">

投稿2018/06/18 17:41

shun-K

総合スコア508

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

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

chapp

2018/06/19 00:46

ご親切なアドバイスをありがとうございます。 渡すべくデータが多くあり、必ずしも一定ではないので、(知識も乏しいので)「簡単な(スマートな)スクリプトはないかな?」と思っていたのですが、やはりこの方法が適切なのでしょうか・・。 改めて設定してみます。 ご親切な書込みをありがとうございました。
shun-K

2018/06/19 13:32

どうしてもGETで渡さなきゃいけない事情がないなら セッションも検討してみるといいですよ。
chapp

2018/06/21 11:52

ありがとうございます。ケースバイケースで対応していくべきですね。 解決後にも関わらず、ご親切な書込みをありがとうございました!
guest

0

shun-Kさんの回答に近いのですが、渡ってくるデータが一定でないのであればgetを丸々hiddenにセットしてしまうとか。

PHP

1<? foreach ($_GET as $key => $value) : ?> 2 <? if ( is_array($_GET[$key]) ) : ?> 3 <? foreach($_GET[$key] as $v) : ?> 4 <input type="hidden" name="<?= $key ?>[]" value="<?= $v ?>"> 5 <?endforeach; ?> 6 <? else : ?> 7 <input type="hidden" name="<?= $key ?>" value="<?= $value ?>"> 8 <? endif; ?> 9<?endforeach; ?>

投稿2018/06/19 01:10

mayoi_maimai

総合スコア1583

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

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

chapp

2018/06/19 05:18

ご親切なアドバイスをありがとうございます。 試してみました。とてもスマートなスクリプトで動くのですね! ただ、動作は全く問題ないのですが、繰り返し行うと、同じname属性のデータが複数送られてしまいます。 とはいえ、考え方等とても参考になりました。 貴重なアドバイスに感謝いたします。 ありがとうございました。
mayoi_maimai

2018/06/19 05:52

formのアクション先が<?php echo $_SERVER["REQUEST_URI"]; ?>になっているので来た時のパラメータを引きついてしまっているのですね。 アクション先を/パス/List.phpにすれば重複は解除されると思います。
chapp

2018/06/21 11:51

確かに仰る通りですよね!解決後にも拘らずご親切な書込みをありがとうございました!
guest

0

ベストアンサー

どこまでの処理を想定しているかによりますが、location.searchを利用して
formの要素を作成するとかでしょうか?

※一部調整しました

javascript

1window.addEventListener('DOMContentLoaded', function(e){ 2 var s1=location.search.substr(1); 3 var s3=[]; 4 if(s1!==""){ 5 var s2=s1.split("&"); 6 s3=s2.map(function(x){return x.split("=");}); 7 } 8 [].forEach.call(document.querySelectorAll('[name=office1],[name=office2]'),function(x){ 9 x.addEventListener('change',function(e){ 10 var v1=document.querySelector('[name=office1]').value; 11 var v2=document.querySelector('[name=office2]').value; 12 if(v1 && v2){ 13 var f=e.target.form; 14 s3.forEach(function(x){ 15 if(x[0]!=="office1" && x[0]!=="office2"){ 16 var n=document.createElement("input"); 17 n.setAttribute("type","hidden"); 18 n.setAttribute("name",x[0]); 19 n.setAttribute("value",x[1]); 20 n.classList.add("dummy"); 21 f.appendChild(n); 22 } 23 }); 24 f.submit(); 25 } 26 }); 27 }); 28});

html

1<form method="GET"> 2<select name="office1"> 3<option value="">-----</option> 4<option value="test1">test1</option> 5<option value="test2">test2</option> 6<option value="test3">test3</option> 7</select> 8 9<select name="office2"> 10<option value="">---</option> 11<option value="100">100</option> 12<option value="10">10</option> 13</select> 14</form> 15<hr> 16<a href="?gakku3_data[]=230&gakku3_data[]=239&gakku3_data[]=240&gakku3_data[]=241&type=1&gakku2=9&search=school">link</a>

投稿2018/06/18 12:11

編集2018/06/18 12:26
yambejp

総合スコア114761

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

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

chapp

2018/06/19 00:42

お世話になっております。 ご親切なご指導ありがとうございます。 色々と試しているのですが、上手く行きません。 現状のご報告ですが、セレクトボックスを選択するとデータが送られるのですが、配列部の表記が gakku3_data[]=173 ではなく、gakku3_data%255B%255D=173 となってしまいます。 セレクトボックスの下のアンカータグの部分をurldecodeしてみたところ、1度検索にて表示させた後であれば、アンカータグをクリックした後でのセレクトボックス選択も可能なのですが、現状では上手く行きません。 なにか、設定が不足しているところありましたらご教示いただけると幸いです。 よろしくお願いいたします。
yambejp

2018/06/19 01:05

すみません。nameとvalueにはデコード処理が必要ですね n.setAttribute("name",decodeURI(x[0])); n.setAttribute("value",decodeURI(x[1]));
chapp

2018/06/19 05:20

お世話になっております。 正常に動くまで確認させていただきました。 修正含め、最後までお付き合いいただき感謝です。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問