0

F5 と同じ方法でページをリロードする方法を見つけるために Stackoverflow を探していました。つまり、次の問題があります。

フォーム (data.php としましょう) と DB データを含むテーブルを含む php ページがあります。フォームは別の php ページを呼び出して、post メソッドを介してアクション (action.php) を実行します。Action.php が呼び出され、DB が更新されます。ここで、data.php に戻り、DB の変更を読み取ってテーブルを更新したいと考えています。

私がしたことは、action.php で次のことを試していたことです。

  1. Header('Location: data.php'): これは data.php に送信されたため機能しませんでしたが、F5 でページを更新する前にテーブルに変更が見られませんでした。php が原因であることがわかりました。サーバー側の言語なので、ブラウザに作用してページをリロードするように指示することはできませんが、それは正しいですか?
  2. Header('Location: data.php?u=reload'): 次に、data.php で $_GET['u'] を制御します。その変数がリロードに等しい場合、data.php でヘッダー data.php を設定してから呼び出します。 jscript の location.reload。繰り返しますが、テーブルに変更はありませんでした。

DB の更新後に data.php テーブルを自動的に更新して、ページを手動でリロードしなくてもユーザーが導入した変更をすぐに確認できるようにしたいのですが、どうすればよいですか?

どうもありがとう!

編集:

実際には次のようになります。画像がフォーム imgID.EXT に保存されているフォルダーと、画像データがフォーム ID、EXT、TEXT に保存されている DB があります。Data.php は、ID によって並べ替えられた画像のリストを独自のテキストと共にロードし、リストを変更するためのボタンを備えています (すべての画像に上へ移動ボタン、下へ移動ボタン、削除ボタンがあるようなもの)。moveup を呼び出すと、action.php に移動し、画像の ID を変更してリスト内で移動し、画像フォルダー内の名前を変更してから、data.php に戻ります。

リダイレクト後、以前と同じ位置に画像が表示されますが、たとえば、画像#5のテキストが画像#4のテキストと正しくスワップされます。F5 (またはページをリロードするブラウザ ボタン) を使用して更新すると、image#5 が image#4 に切り替わり、すべて問題ありません。F5 を使用せずに何かを交換したいのですが、何が問題なのか理解できません。

4

1 に答える 1

0

ユーザーがdata.phpをロードする前に、おそらくmySQLはデータベースへの行の挿入/更新を完了していません。私はこれを一度経験しましたが、ヘッダーリダイレクトの前に sleep(1) を使用して解決しました。

これは最善の解決策ではありませんが、問題は解決します。JavaScript を使用してフォームを処理するか、成功通知を表示した後にユーザーをリダイレクトすることをお勧めします。

于 2013-04-28T12:58:44.510 に答える