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.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側で時間を取得・生成してそれをウインドウ名にするのならいけそうなきがします。
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() ?>);">
・・・
重ね重ね申し訳ございませんが、ヒントを頂けると幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミング言語で、使える...
-
PHP で画面の一部だけを変えたい。
-
現在時刻を反映させた時刻のプ...
-
phpで分からないエラーが出てし...
-
リンク先のフォームに自動的に...
-
セッションを使わずに遷移先画...
-
変数が表示されない。
-
HTMLのリンクをクリックするこ...
-
記述のおかしいところを教えて...
-
HTMLで前の画面に戻る時、入力...
-
phpでの複数選択チェックボック...
-
チェックボックスによる検索
-
アマゾンのような評価の星を選...
-
画面が更新されてもチェックボ...
-
ラジオボタンをsessionで使いたい
-
postgresからの配列を変数に
-
現在ラジオボタンのデータベー...
-
プログラミングC++のmapについて
-
UPDATEできない
-
PHPのエラーの解消法について教...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プルダウンとCSVの連動
-
「"」(ダブルクォーテーション)...
-
ラジオボタンの値を受け取ってP...
-
<select>文、foreachと初期値設定
-
phpでのセレクトボックスの値を...
-
複数 selectフォームから今回on...
-
php セレクトボックス 値取得
-
複数のセレクトボックスを1つに...
-
2つのプルダウンメニュから受け...
-
phpでのselect値の取得・表記に...
-
foreachで次の行の値を取得して...
-
ウェブ上で選択した複数行の内...
-
CodeIgniter/set_value()
-
ループ処理
-
連動させたいセレクトボックス...
-
PHP で画面の一部だけを変えたい。
-
phpでカレンダー作成
-
現在時刻を反映させた時刻のプ...
-
プルダウンで選択された値を保持
-
プルダウンリスト(コンボボッ...
おすすめ情報