• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:自身をSubmitを、UPDATEした際、古い結果が表示される。)

UPDATEした際、古い結果が表示される

このQ&Aのポイント
  • PHPでメンバーのプロフィール編集の画面を作成し、テキストボックスの内容を変更して「更新」ボタンを押すと、更新されたデータを表示する方法について質問したいです。
  • UPDATE文は正しく実行され、テーブルは更新されますが、画面には更新前の古いデータが表示されてしまいます。
  • UPDATE文実行後の最新の結果を即座に表示するには、どのような方法がありますか?別のページを作成してそこから戻る方法がベターでしょうか?

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

  • ベストアンサー
  • BellBell
  • ベストアンサー率54% (327/598)
回答No.1

古いデータが表示されるのは、ブラウザがキャッシュを保存し、それを表示している為と考えられます。 キャッシュしないようにするには、すべての出力の前に以下のようなヘッダ内容を事前に出力する事がセオリーとなっています。 header('Last-Modified: '.gmdate( 'D, d M Y H:i:s').' GMT'); header('pragma: no-cache'); header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // 過去の日付 一部の行儀の悪いブラウザは(IE5~6あたりの一部のバージョン)、これを無視してキャッシュする事もあるため完全ではないです。 あくまで、キャッシュしないでね、とお願いしているだけですので。 それでも、上記だけで(最近のブラウザでは)OKでしょう。 他に気になることと言えば、一般的にはJavaScriptと連動させて更新作業をするという事は行われません。 JavaScriptはOffにできるからという理由です。 JavaScriptがOffの環境でも、更新ができるようにするために、すべてHTMLの基本機能(送信等)とPHPだけで作成します。 そのうえで、入力必須項目がすべて入力されているか否かなど、ユーザーにとっての便利機能をJavaScriptで埋め込む事はやります。 ※仮にJavaScriptがOffの場合でも便利機能が使えないだけで、すべてのシステム機能はJavaScriptがなくても動作するため。 入力値チェック(必須項目の抜けがないか等)がないかを確認するため、自分自身に投げて確認する事は一般的に行われます。 項目の抜けや、メールアドレスの形式、電話番号の形式が合っているかなどを確認して、ダメならエラーを表示して再入力を求めるというのが楽だからです。 チェックが通れば、別画面に飛ばして『更新しますよろしいですか?』と表示して、OKで更新処理をする画面を付ける事が多いですが。 ちなみに、一般的にはデータベースの更新系のインターフェイスは。 メンバーデータの一覧ページ。表形式で何人ものデータが一覧できる(名前と代表的な情報のみ)。人数が多ければ『次の20人』のリンクが表示されるなど。 メンバーデータの表示ページ。一覧ページから、メンバーの名前をクリックして表示されるページ、メンバーのすべての情報が一覧されている。表示のみ。 メンバーデータ編集ページ-更新確認ページ(よろしいですか?) 質問で言われているページ(メンバーデータの新規入力を兼用する事もある) わざわざ、一般的なものを紹介するのは、編集-更新が終わった後に飛ぶページは、一般的には編集ページではなく表示ページだとの説明の為です。 更新ページを表示と兼ねるのは、間違ってデータをさわってしまい、しかも更新してしまう可能性を考えてよろしくないと思いましたので、念のために長々と書きました。 一般的かどうかを中心に書いていますので、別に一般的であろうがなかろうが気にしないというスタンスもありですが。

wendy0303
質問者

お礼

BellBellさん、お世話になっております。 前回の質問に続き、ありがとうございます。 最新の表示自体は、キャッシュの件のみでクリアできそうですが、 入力画面と表示画面を分けるという一般例とその理由が非常に参考になりました。 確かにその通りですね。。 加えてJavaScriptに記載するか、PHPに記述するかの基準も参考になりました。 これまで、「ボタン動作はJavaScriptに記載してしうものだ」としか考えていませんでしたが (むしろ考える余裕がなかった)ユーザーの意思でON/OFFできるものに その書き方は適切ではない事、むしろ基本を無視している事だと知りました。 おそらくは実際の開発では基本的な事なのだと思いますが、 JavaScriptやHtml、PHPの本を読んでいては気付けない事を教えていただき、 ありがとうございます。

関連するQ&A