ドロップダウン リストのあるフォームを使用してフィルターを作成しました。フィルターは、mySQL データベースからの結果をフィルター処理するために使用されます。フォームは結果と同じページで処理されます。結果がフィルタリングされた後、フィルタードロップダウンリストがフィルターパラメーターを保持するようにしたいと思います。
過去にセッションを使用してこれを行ったことがありますが、それは別のページを使用してクエリを処理したときでした。これと同じ理論を適用しようとしましたが、うまくいきません。このサイトと Google を検索しましたが、別の処理ページに関連する回答しか見つかりませんでした。
現在、私が持っているコードは、フォームが 2 回送信された後にのみ事前入力されます。初めて送信されると、「選択...」のデフォルト設定が表示されます
私のコードの関連セクションは次のとおりです。
session_start();
if(isset($_SESSION['submitted_filter_values']))
{
extract($_SESSION['submitted_filter_values']);
}
<form action="#filter" method="post" name="filter">
<table>
<tr>
<td>
<select name="prefix">
<option value="">Select...</option>
<option <?php if(isset($prefix) && $prefix == "PDM"){echo "selected=\"selected\"";} ?> value="PDM">PDM</option>
<option <?php if(isset($prefix) && $prefix == "TB"){echo "selected=\"selected\"";} ?> value="TB">TB</option>
<option <?php if(isset($prefix) && $prefix == "JNL"){echo "selected=\"selected\"";} ?> value="JNL">JNL</option>
</select>
</td>
</tr>
<tr align="center">
<td colspan="2"><input type="submit" class="btn_150x30" name="submit" value="Filter Results"></td>
</tr>
</table>
</form>
$_SESSION['submitted_filter_values'] = $_REQUEST;
セッション変数を別の場所に配置しようとしましたが、うまくいきませんでした。ページを更新するとうまくいくと思いましたが、フォームを2回送信したときのように、フィルターを効果的に削除できると考えました。注意すべき興味深い点は、送信するたびに文字通り機能するという点で非常に一貫性があることです。