ここや他の場所で多くの投稿を検索しましたが、問題の解決策が見つからないようです。データベース エントリを表示するページがあります: database.php。これらのエントリはフォームでフィルタリングできます。それらをフィルタリングして、興味のあるものだけを表示すると、エントリをクリックして(リンクとして)、そのエントリページに移動できます(php GET経由)。そのエントリ ページ (つまり、"view.php?id=1") で戻るボタン (database.php に戻る) を押すと、フィルター フォームはフォームの再送信を確認する必要があります。これを防ぐ方法はありますか?
ここにいくつかの(簡略化された)コード例があります:
データベース.php:
<form>
<select>
<option>1</option>
<option>2
<option>
</select>
<input type="submit" name="apply_filter" />
</form>
<?php
if ( isset( $_POST[ "apply_filter" ] ) ) { // display filtered entries
$filter = $_POST[ "filter" ];
$q = "Select * from table where col = '" . $filter . "'";
$r = mysql_query( $q );
} else { // display all entries
$q = "Select * from table";
$r = mysql_query( $q );
}
while ( $rec = mysql_fetch_assoc( $r ) ) {
echo "<a href='view.php?id=" . $rec[ "id" ] . "'>" . $rec[ "name" ] . "</a><br />"; // this is where the link to the view.php page is...
}
?>
前述のように、リンクをクリックすると、「view.php?id=whatever」に移動します。そのページでは、URL から ID を取得して、その単一のエントリを表示します。
ビュー.php:
<?php
$id = $_GET[ "id" ];
$q = "Select * from table where id = '" . $id . "'";
$r = mysql_query( $q );
while ( ) {
// display entry
}
?>
ここで [戻る] ボタンをクリックすると、database.php のフォーム (DB の結果をフィルター処理するために使用されるフォーム) で再送信の確認が必要になります。これは非常に煩わしいだけでなく、私にとっても役に立ちません。
どうすればこれを修正できますか? コード例と問題の説明が十分であることを願っています。そうでない場合はお知らせください。指定してみます。