質問: $_post['address']; update実行 更新フラグを0に初期化 if閉じる) //------------------------------------------- セレクト実行 結果行数を取得(エラー判定の為) 取得データを表示の為の各変数にセット ?> "; exit; if終了 ?> 【self.js】 function clickupd() { document.update_mstedit.submit(); }
回答: 古いデータが表示されるのは、ブラウザがキャッシュを保存し、それを表示している為と考えられます。 キャッシュしないようにするには、すべての出力の前に以下のようなヘッダ内容を事前に出力する事がセオリーとなっています。 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人』のリンクが表示されるなど。 メンバーデータの表示ページ。一覧ページから、メンバーの名前をクリックして表示されるページ、メンバーのすべての情報が一覧されている。表示のみ。 メンバーデータ編集ページ-更新確認ページ(よろしいですか?) 質問で言われているページ(メンバーデータの新規入力を兼用する事もある) わざわざ、一般的なものを紹介するのは、編集-更新が終わった後に飛ぶページは、一般的には編集ページではなく表示ページだとの説明の為です。 更新ページを表示と兼ねるのは、間違ってデータをさわってしまい、しかも更新してしまう可能性を考えてよろしくないと思いましたので、念のために長々と書きました。 一般的かどうかを中心に書いていますので、別に一般的であろうがなかろうが気にしないというスタンスもありですが。