フォームを送信すると(フォームに送信ボタンがあると仮定して)、すべてのデータがPHPに送信され、$ _ GET(グローバル変数)内のすべてのデータを取得します。
$_GET['sort']
選択した値が含まれます。
次に、事前に選択する場合は、HTML内にPHPコードを追加するだけです。
<option value="PriceLow" <?php echo ((!empty($_GET['sort']) && $_GET['sort'] == 'PriceLow') ? 'selected="selected"' : '') ?>>Price (Low to High)</option>
選択の各オプションについて同じことを行う必要があります。これにより、最初の送信後に適切なオプションを事前に選択できるようになります。
解決策2:解決策2:
HTMLコード内にあまり多くのPHPを挿入したくない場合は、投稿された値をjavascript var内に保存し、DOMがロードされるときに適切なオプションを選択できます(たとえば、jQueryなどの適切なJSライブラリを使用)
HTMLコード:
<select name="sort" >
<option value="None">None</option>
<option value="PriceLow">Price (Low to High)</option>
<option value="PriceHigh">Price (High to Low)</option>
<option value="NameAZ">Name (A-Z)</option>
<option value="NameZA">Name (Z-A)</option>
</select>
そして<script>
タグのいくつかのJSコード
// Need jQuery !
$(document).ready(function() {
// Generate the selected var in JS using the value in PHP
var selectedOption = '<?php echo $_GET['sort']; ?>';
// Select the selected option and append the selected attribute
$("select[name=sort] option[value=" + selectedOption + "]").attr('selected', 'selected');
});
このコードは、ページが読み込まれると自動的に適切なオプションを選択します。
情報:良い点は、より明確で保守可能なHTMLコードがあることです。悪い点は、クライアントでJavaScriptが有効になっていない場合、自動選択が機能しないことです(PHPを使用してHTMLに「選択済み」を追加する場合は常に機能します)。したがって、賛否両論を評価し、選択する必要があります。
注:「?」の代わりにアクションを空のままにしておくことができます。