![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
PHP、JavaScript、共に初心者なので、的を得ていない質問かもしれませんが、是非ともご教授お願い致します。
やりたいこととしては以下の内容で、複数ではなく、1つの別ウィンドウしか表示されずに困っております。
(1)元のウィンドウで、入力や選択を行った後、結果ボタンを押し、"その都度"別ウィンドウを
表示させる。(つまり複数別ウィンドウを表示させたい)
(元のページはそのまま残す)
(2)元ウィンドウの入力値をPOSTデータとして、別ウィンドウに受け渡す。
(3)別ウィンドウでも、常に同一のロジックを必要とするため、都度開く別ウィンドウを同一PHPファイルとしたい。
上記で使用しているソース(主要な部分抜粋)は以下の通りです。
【元ウィンドウ】
<script type="text/javascript">
<!--
function newsubmit() {
window.open("about:blank", "kekka", "WindowStyle");
mainform=top.window.document.motoform;
mainform.action = "kekka.php";
mainform.target = "kekka";
mainform.submit();
}
// -->
</script>
<form name="motoform" method="POST" action="<?= $_SERVER['PHP_SELF'] ?>">
・・・
<input type="button" value="結果" name="kekka" onClick="newsubmit();">
・・・
<select name="no" onchange="this.options[this.selectedIndex].value">
<option value="100">100</option>
<option value="200">200</option>
<option value="300" selected>300</option>
<option value="400">400</option>
<option value="500">500</option>
</select>
・・・
</form>
【別ウィンドウ(kekka.php)】
<form name="subform" method="POST" action="<?= $_SERVER['PHP_SELF'] ?>">
・・・
<?php
print "no: " .$_POST['no']. "<br>\n";
?>
・・・
</form>
POSTデータの受渡しは、出来ています。
別ウィンドウのURLを、001.html、002.html、003.html・・・のように、別々のHTMLにしようとも考えましたが、
それぞれの別ウィンドウでどうしてもPHPの同一ロジックを入れたいため、同一のkekka.phpとしています。
それ故に、既に同じウィンドウ(kekka.php)が表示されているので、別ウィンドウが上書きされてしまい、
1つの別ウィンドウしか表示されません。
同じPHPを使用して、複数、別ウィンドウを表示させる方法、もしくは、別案などございましたら、
ご教授願えますでしょうか。お願い致します。
No.1ベストアンサー
- 回答日時:
submitする際にIDとか連番とか何かユニークになる値をjavascriptに渡してやって、
>window.open("about:blank", "kekka", "WindowStyle");
の"kekka"というwindow名の部分をphpから受け取った値にしてやればいけるのではないでしょうか。
多分現状は固定のwindow名(kekka)になっているから上書きされてしまうんだと思います。
アドバイス、どうもありがとうございます。
参考にさせて頂き、早速試してみました。
ただ、元ウィンドウを更新(F5)しないと、やはり同一別ウィンドウとなってしまいます。
(更新すると、複数別ウィンドウが表示されます。)
キャッシュか何かが原因なのでしょうか?
変更したソースは以下の通りです。
【元ウィンドウ】
・・・
function newsubmit(id) {
window.open("about:blank", id, "WindowStyle");
mainform=top.window.document.motoform;
mainform.action = "kekka.php";
mainform.target = id;
mainform.submit();
}
・・・
<input type="button" value="結果" name="kekka" onClick="newsubmit(<?= (string)time() ?>);">
・・・
重ね重ね申し訳ございませんが、ヒントを頂けると幸いです。
No.3
- 回答日時:
#1です。
追記ですが、submitと同時に元phpをjavascriptでリロードでもいけるっちゃあいけますね(笑)
javascriptで時間生成の方法を取るのであれば、特に正確な時間を出す必要はないので、
function newsubmit(){
ymd = new Date();
yy = ymd.getYear();
mm = ymd.getMonth();
dd = ymd.getDate();
ho = ymd.getHours();
mi = ymd.getMinutes();
se = ymd.getSeconds();
wname = yy + mm + dd + ho + mi + se;
window.open("kekka.php",wname);
mainform=top.window.document.motoform;
mainform.method = "POST";
mainform.action = "kekka.php";
mainform.target = wname;
mainform.submit();
}
こんな感じで大雑把でいいと思います。
どうもありがとうございます。
サンプルを参考に、早速試して、思うように動作致しました。
このような初心者のために、丁寧に教えて頂き、感謝致しております。
それとともに、自身の勉強不足を実感致しました。。。
本当にありがとうござました。
No.2
- 回答日時:
#1です。
>ただ、元ウィンドウを更新(F5)しないと、やはり同一別ウィンドウとなってしまいます。
現在の書き方でtime()の値をウインドウ名にしても、htmlが生成される際にphpが取得する値なので、一旦作られたらウインドウ名は固定でつけたのと同じになってしまいます。
F5を押せばtime()が生成しなおされてウインドウ名が変わるので別ウインドウになるということです。
ですので一意にする値の作り方を変えた方が良いと思います。
kekka.phpに渡したい値で一意になるような値があればその値をウインドウ名にするのがベターかもしれないですね。
もしくはonClickでは特に引数を渡さずにjavascript側で時間を取得・生成してそれをウインドウ名にするのならいけそうなきがします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミング言語で、使える...
-
GET又はPOSTで受け取るデータに...
-
ドロップダウンで送信先を変更...
-
選択したタグ、入力した検索文...
-
連動させたいセレクトボックス...
-
POSTしたデータがリストボック...
-
ローカルにあるhtmlのフォーム...
-
HTMLで前の画面に戻る時、入力...
-
フォームでのリセットを使う方法
-
<input type="hidden" >で配列...
-
POSTでファイルアップロード
-
laravelを利用してコントロール...
-
フォームボタンを押すたびに数...
-
PHP ボタンが押されたら処理を...
-
PHPのフォームの複数選択で。。。
-
VBA で、スペースを含むファイ...
-
$_SERVER['REQUEST_METHOD']と"...
-
phpで、フォームのラジオボタン...
-
HTMLのリンクをクリックするこ...
-
同じページでフォームデータを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プルダウンとCSVの連動
-
2つのプルダウンメニュから受け...
-
MySQLのレコードを検索、...
-
連動させたいセレクトボックス...
-
phpでのselect値の取得・表記に...
-
セレクトしたときに全て初期状...
-
複数 selectフォームから今回on...
-
Smartyで、セレクトボックスが...
-
<select>文、foreachと初期値設定
-
CodeIgniter/set_value()
-
phpでカレンダー作成
-
現在時刻を反映させた時刻のプ...
-
PHP で画面の一部だけを変えたい。
-
奇数や偶数を調べる関数
-
GET又はPOSTで受け取るデータに...
-
複数のセレクトボックスを1つに...
-
プルダウンリンクを外部ファイ...
-
選択されたプルダウンの値を変...
-
input type="hidden"で送る値を...
-
php セレクトボックス 値取得
おすすめ情報