• ベストアンサー

フレームでページ分かれていてもPOSTやGETする値を保持したい

わたしが3年前に質問したものですが、 http://oshiete1.goo.ne.jp/qa1612121.html このNo2さんの例示をそのまま組み込んでみたのですが、 元質問にあるように、上段フレームでPOSTした検索条件を 下段フレームで受け取ります。 例示の場合、下段フレームでソートをかけると 上段で設定した検索条件がリセットされてしまうわけですが、 どうやったら回避できるでしょうか。 フレームで分けずに一枚のPHPで完結すべきでしょうか? あるいは、POSTされた検索条件をSESSIONなどで保持しなければ だめでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.3

ANo.1です。 生成しているURLのGETパラメータに検索条件をつけるというのではダメでしょうか。 その際検索条件がPOSTで渡ってきたら新規、GETで渡ってきたら引き継ぐような分岐をさせてurlを生成してやればいいと思います。 余談ですが、urlのクエリ部分の生成はhttp_build_query()を使うと少し楽かもしれません。 http://jp2.php.net/manual/ja/function.http-build-query.php

litton101
質問者

お礼

UmJammerさん、アドバイスありがとうございました。 御礼遅くなってすみません。 その後もいろいろ機能の追加も必要になって、 GETで渡した方がよさそうだという結論になりました。 http_build_queryというのも知りませんでしたし、 いただいたアドバイスが大変参考になりそうです。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

最近はフレームは流行ってないように思えます。 HTMLの本質から言ってもあまりフレームはいい技術とはいえません。 私も個人的にいくつかのシステムを組みましたが、基本的には フレームわけしないものがほとんどです。 どうせなら一意性をたかめるためには脱フレームした方がなにかと わかりやすく、問題も減らせるとおもいます。 とはいえ、今回の件はいくつか対応の仕方もあるでしょう。 (1)セッションをつかってデータをとっておく (2)ソートをするトリガーにアンカーを使っているのであれば GET方式でパラメータをつないでいく (3)ボタンもしくはサブミットでのソートであれば、hiddenでデータの 引継ぎをおこなう

litton101
質問者

お礼

yamabejpさん、毎度お世話になってます。 > どうせなら一意性をたかめるためには脱フレームした方がなにかと > わかりやすく、問題も減らせるとおもいます。 アドバイスありがとうございました。 今回だけは、諸事情で、フレームを使わざる得ない状況です。 今後の参考とさせていただきます。 > とはいえ、今回の件はいくつか対応の仕方もあるでしょう。 > (1)セッションをつかってデータをとっておく > (2)ソートをするトリガーにアンカーを使っているのであれば > GET方式でパラメータをつないでいく > (3)ボタンもしくはサブミットでのソートであれば、hiddenでデータの > 引継ぎをおこなう やっぱり、結構ややこしい処理を追加することになりますね。 ご提示のアイデア、大変参考になりました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.1

No2の方の回答が二つあるのですが、ANo.2とANo.3のどちらを参考にしているのでしょうか。

litton101
質問者

補足

すみません、No2を参考としておりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • $_SERVER["PHP_SELF"]などでURLについているGETの値を引き継ぎたい

    PHP 5.2.2 上下に分かれたフレームページで、上段が検索フォーム、 下段が検索結果リストという構成のサイトを作っています。 検索条件を設定し、GETで下段に送ります。 下段に書き出されたHTMLをIE7の右クリックでプロパティをみると、 URLは、ちゃんと以下のようにパラメータがぶら下がっています。 http://www.example.jp/temp/mypage.php?aaaaa=1&bbbbb=2&ccccc=3 ところが、 echo $_SERVER["PHP_SELF"] とやっても、 /temp/mypage.php としか書き出されません。ここは、 http://www.example.jp/temp/mypage.php?aaaaa=1&bbbbb=2&ccccc=3 と書き出されてほしいのですが。 php.iniの設定を変えるとか、$_SERVER["PHP_SELF"]を別のサーバー変数に するとかで、何とか「?aaaaa=1&bbbbb=2&ccccc=3」この部分を 引き継ぎたいのですが、何か方法はありませんか。 先日、http://oshiete1.goo.ne.jp/qa4397672.htmlのご回答をいただき、 http://oshiete1.goo.ne.jp/qa1612121.htmlのNo2さんのを実装するために 検索条件を引き継ぎたいのです。

    • ベストアンサー
    • PHP
  • ページ移動での値の保持

    PHPカテゴリなら 詳しい方がおられるかな?と思い、質問です。 ブラウザ(フォームとか)から入力した値を 画面を何度切り替えても保持していく方法について、 ふと疑問に思ったことです。 <input type="hidden" name="a" value="<?= $_POST['a'] ?>"> のように仕組んでおくと、前のページからの a の値を次のページに渡せますよね。 この方法と、セッションを使う方法の、どちらがよいやり方でしょう? 1)サーバーとブラウザで キャッチボール式に値を投げっこして保持していくのと、 2)セッションに登録してしまって、サーバーで保持するのと、 どちらがどういいのか気になりました。 もちろん、パスワードの類は前者(1)をやるとよろしくないと思いますが、サーバーの負荷具合とか、速さとか、プログラミング上のこととか、良いところ悪いところを、どうか教えてください。 専門家の意見、個人的な意見、好み、理屈の通った意見、いろいろ待ってます。

    • 締切済み
    • PHP
  • フレーム表示されているページのセッション ID が変わってしまいます。

    はじめまして。 ASP初心者です。 現在ASPにてフレームを使用したページにショッピングカートを作成しています。 フレームは横に上段、中段、下段に分けてあり 中段には縦に左右に分けたページに商品一覧を表示しています。 メインフページ(横に分けているもの)と商品一覧のページは別サーバーになってい ます。 商品一覧で商品を選びカートに入れていくというごく普通のカートです。 商品情報(ID,数量)はセッションIDを取得し"cart" & SessionIDという名称で セッション変数を作成し格納しています。 という仕組みで動作させているのですが、セッションIDが都度取得されてしまい 正常に動作しない場合があります。(問題なく動作するものもあります。) 当方でブラウザを同じ環境(バージョンをあわせる等、IE6です。)で テストしてみたんですが結果が異なりました。 小耳に挟んだんで [インターネットオプション]⇒[全般]⇒インターネット一時ファイルの[設定]の [保存しているページの新しいバージョンの確認]を自動的に確認するにしたりとか してみたけどうまくいきませんでした。 現在は同サーバーにおくことで一時的に回避はしているのですが 近い将来、別フレームで呼び出すことになるので、 もしいい方法があれば皆様の知恵をお借りしたいです。 よろしくお願いします。

  • フレーム間の処理2

    こんにちは! 下でも質問させて頂いたのですが、具体的に行いたい処理を 書かせて頂きます。 今、c.aspがあり、その中身はADOでデータベースを取り込んで処理を したデータ一覧が20行表示されています。それを「前へ」「次へ」 のsubmitボタンで前の20行、次の20行と表示を更新出来るように なっています。 ここで、a.asp、b.aspを作成して、a.aspをフレームで2分割にします。 a.aspの上段フレームにb.asp、下段フレームにc.aspを配置します。 c.aspの中の「前へ」「次へ」のsubmitボタンを上段フレーム に移行します。 で、上段フレームの「前へ」「次へ」のsubmitボタンを押せば 下段フレームの20行が変更するようにしたいのです。 このフレーム間の処理はどのようなプログラムを組めば出来るのでしょうか? ご存知の方、是非ご教授下さい。

  • Strutsでのセッション保持方法について

    StrutsでWebアプリケーションを開発しています。 画面構成は、 検索一覧画面 ⇒ 詳細画面 という遷移になっています。 そのとき、検索一覧画面の検索条件をセッションに保持し、詳細画面から「戻る」ボタンで、検索一覧に戻ってきたとき、検索一覧画面は、検索条件を保持していることをやりたいのです。 そこで、セッションに詰める方法として、 (1)検索条件の項目一つ一つをひとつのオブジェクトにつめて、そのオブジェクトをセッションに詰める方法。 (2)検索一覧画面のFormBeanの結果部分をクリアし、検索条件だけ入っている状態で、セッションに詰める方法。 (1)は、一つ一つセットしなければならないので、ソースコードは、項目の数分、セットしなければなりません。 (2)は、検索条件部分だけが入ったFormBeanなので、セットは、一回のみ。ただし、検索条件以外の項目は、クリアしなければならない。 検索条件の項目は、だいたい5~15個くらいです。 (1)と(2)でどちらがいいのか、ご指導お願いいたします。

    • ベストアンサー
    • Java
  • ページ時のセッション保持

    似たような質問は他にもたくさんあったんですが、どうも肝心の部分が違っていたので新規で失礼します。 http://oshiete1.goo.ne.jp/qa3102414.html ↑ここを参考にlist.phpというファイルを作りました。 【list.php】 session_start(); $thisphp = "list.php"; $key = 'page'; $child = 'ss'; if( array_key_exists($key,$_GET) ){ $no = $_GET[$key]; readfile("$child$no.php");} else{for( $i=1; $i<=2; $i++){ $no = "00$i"; echo "\n<a href='$thisphp?$key=$no'>子ページ($thisphp?$key=$no)</a><br>";}} list.phpを見る前に、まずsubmit.phpでセッションに格納する情報を登録して頂くんですが…。 【submit.php】 <?php session_start(); $_SESSION["name1"] = $_POST['name1']; $_SESSION["name2"] = $_POST['name2']; $thisphp = "submit.php"; ?> <form method="POST" action="<?php echo $thisphp;?>"> name1:<input type="text" name="name1" size="10" maxlength="10"> name2:<input type="text" name="name2" size="10" maxlength="10"> <input type="submit" name="submit" value="登録"></form> 全体の処理の順序は ●submit.phpで情報を登録してlist.phpへ移動。 ●list.phpに表示されている子ページへ移動。 ●子ページ(list.php?page=001など)で、submit.phpで登録した情報を表示する。 というものです。 その子ページの内容は <?php session_start(); ?><html><body> <?php echo $_SESSION["name2"];?> </body></html> というものなのですが、この子ページでだけセッションの情報が反映されません。 『<?php echo $_SESSION["name2"];?>』がソースにもろに表示されている状態です。 説明が解りにくければ追記致します。 改善策が思い当たる方、回答お願いします。

    • ベストアンサー
    • PHP
  • ASP.NET 画面遷移前の状態を保持する?方法

    1.[検索画面]   (画面上段、検索条件。下段、検索一覧。)   ↓   検索一覧をクリック。   ↓ 2.[詳細画面]   ↓   詳細画面を更新。   ↓ 3.[検索画面] 例えばこのような画面遷移を行うとき、1.で入力した検索条件を3.に反映したい。 方法1:検索条件(各項目の値)を持ちまわる。    (検索項目数が多くなるとちょっと面倒。) 方法2:検索画面または詳細画面を別ウィンドウで開く。 の2つを思う浮かべるのですが、みなさんはどのような方法を取られてますか。

  • チェックボックスの値取得

    以前、http://oshiete1.goo.ne.jp/qa2807598.htmlにて、 チェックボックスで配列を使わずに、チェックした値を取り出す方法を質問させていただいたものです。 教えていただいた方法で表示からメール送信、データベースへの格納まで上手く出来ていたのですが、仕様が変更になり、選択項目の量が増えてしまいました。(30~40になってしまいました・・・) 教えていただいた方法で何とか処理できるようなのですが、処理に時間がかかってしまっているような感じです。 <?PHP  session_start();  if (!empty($_POST['key01'])) {   $_SESSION['key'] = $_POST['key01'];  }  if (!empty($_POST['key02'])) {   if (empty($_SESSION['key'])) {    $_SESSION['key'] = $_POST['key02'];   }else{    $_SESSION['key'] .= "\t" . $_POST['key02'];   }  }  if (!empty($_POST['key03'])) {   if (empty($_SESSION['key'])) {    $_SESSION['key'] = $_POST['key03'];   }else{    $_SESSION['key'] .= "\t" . $_POST['key03'];   }  }    ・  ・  ・  ・ といった感じで、keyが30になるくらいまで続きます。 この後、確認メールの送信や、DB格納等の処理が続く予定ですが、どこかで処理が止まっているような感じで上手くいきません。 選択項目が多い場合のやり方は何かありますでしょうか?

    • ベストアンサー
    • PHP
  • 検索結果の出力先を違うフレームに表示したい

    こういうフレーム分割ページがあって、 ┏━━━━━━━ ┃name="A" ┣━━━━━━━ ┃name="B" ┃ ┃ ┃ ┗━━━━━━━ 上段(name="A")に↓のような検索フォームをおきます。 <form method="action" action="list.php"> list.phpが検索結果を出力する際に、このままだと 上段(name="A")に検索結果が展開されてしまうのですが、 下段(name="B")に展開したいのです。 山勘で、 <form method="action" action="list.php" target="B"> とtarget属性をつけてみましたがだめでした。 ここでは、どのように記述したらよいでしょうか。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • セッションを使用したページ遷移

    こんにちは、質問です。 現在趣味で制作しているPHPを利用したシステムで フォームからDBへ多くのデータを登録する処理を記述しています。 計4Pのページをフォームにより遷移しながら最終ページでデータ挿入をする風に考えているのですが セッションとPOSTメソッドを使用してデータの引継ぎを行っていると、ブラウザの「戻る」ボタンを押した時に以前のページが有効期限切れとなってしまい、データを戻って入力しなおしたい時に最初からやり直さなければならない状態になっています。 こういった状況を回避するにはどのような手段がスタンダードなのでしょうか? 確かセッションを使用せずにPOSTメソッドのみで行った場合はブラウザの「戻る」ボタンを使用してもデータが保持されていました よろしくおねがいします 環境はPHP4 MySQL3です!

    • 締切済み
    • PHP