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

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

ただいまの
回答率

90.47%

  • PHP

    20870questions

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

検索ページで検索条件をURL以外に保存する方法

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 190

msx2

score 149

Webアプリケーションで検索結果一覧から詳細を表示し、詳細ページから検索結果に戻るという処理があります。

この検索結果に戻る処理についての質問です。

検索条件はgetで送信してURLに含んでいるのでブラウザの戻るで戻れば検索結果の続きが表示されますが、「一覧に戻る」みたいなリンクから戻る場合は予めURLに含めておく必要があります。

もちろんこの処理は前のページから検索条件を送信させるなどして実現できているものの少し面倒です。

もう少しお手軽に実現する方法はないでしょうか?

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+3

一瞬セッションかなとおもったんですが、詳細を別ウィンドウなりモーダルで表示すれば済む話では?
いらなくなったら閉じるだけです。
モーダルで処理する場合はajaxでデータを受け取ることになると思いますので
クロスドメインだとちょっとめんどうかもしれません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/24 19:20

    検索結果を残しておけば解決しますね!
    この方法ありだと思います。

    キャンセル

+3

お手軽かどうかは分かりませんが、セッションを使うと良いです。
もちろんどこかでその検索条件を保持するセッションを破棄する必要はありますが。

  • 検索フォーム自体から送信された情報をセッションに$_POSTをほぼそのまま保存する
  • 検索条件のWhere句についてはセッションから取り出して作るようにする

です。
「検索フォーム自体から送信」はGETでもPOSTでも良いですが、
GETであってもセッションで持っておけばクエリストリングなしに詳細ページから一覧ページに戻って来た際に
セッションに検索条件があれば検索条件つきのURLにリダイレクトさせるような仕組みが可能かと(ただし無限ループにならないような配慮が必要)

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/24 11:32

    ありがとうございます。
    なるほど、getの場合はURL自体をセッションに持っておいてリダイレクトしてしまうと。
    無限ループにならないようにする配慮がすぐには思いつかないのですがどういう処理になるのでしょうか?

    キャンセル

  • 2018/05/24 11:38

    一番簡単なのはコントローラー的なphpを挟む方法です。

    詳細ページ コントローラ用PHPにリンクで遷移

    切り替え用PHPでセッション有無を判断し、クエリストリングをつけたURLを生成し送信

    ただ、これだと戻り先URLが一覧ページのものではない・・・というので気になるのでしたら
    一覧へのリンクをセッションから読み出して生成するのもありですね。

    キャンセル

  • 2018/05/24 11:47

    戻り先を別ページにしてしまう方法ですね。
    これだとわかりやすくてよさそうです。
    ありがとうございます!!

    キャンセル

  • 2018/05/24 11:56

    いずれにしてもセッションの有無とその解析、そこからURLの生成は変わらないので詳細ページでのリンク生成時に解析用からURLを生成するユーザ関数作ってリンクにくっつけるだけの方が分かりやすいかもしれません。

    キャンセル

  • 2018/05/24 12:12

    現状もそういう感じでURLを生成していますが、セッションから取り出す方がシンプルに実現できそうなのでやってみます。

    キャンセル

+2

一般的にはセッションを使います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/24 11:25

    ありがとうございます。
    セッションはほとんど使ってこなかったので試してみます。

    キャンセル

関連した質問

同じタグがついた質問を見る

  • PHP

    20870questions

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