PHPでドロップダウンリスト(selectタブ)の選択状態を保持する方法について記述します。
検索機能やお問い合わせ画面などを作成する際に、ドロップダウンリスト(selectタブ)を利用する機会があるかと思います。
同画面内で処理をする場合はドロップダウンリストの選択状態を保持した方が利用者にも優しい仕様になります。
ドロップダウンを保持するソースコード
<?php
$conditions = [
['value' => '0', 'text' => '北海道'],
['value' => '1', 'text' => '東京'],
['value' => '2', 'text' => '大阪'],
['value' => '3', 'text' => '鹿児島'],
];
?>
<html>
<body>
<form name="character_search" id="form" method="post" action="">
<h2>ドロップダウンの選択状態を保持する</h2>
<select name="condition">
<?php
foreach ($conditions as $row) {
if ($_POST['condition'] == $row['value']) {
echo '<option value="' . $row['value'] . '" selected>' . $row['text'] . '</option>';
} else {
echo '<option value="' . $row['value'] . '">' . $row['text'] . '</option>';
}
}
?>
</select>
<input type="submit" name="search" value="Submit" class="">
<?php
if(isset($_POST['condition'])){
$html = '<p>[';
$html .= $conditions[array_search($_POST['condition'], array_column($conditions, 'value'))]['text'];
$html .= ']が選択されています。</p>';
echo $html;
} else {
echo '<p>POST情報無し</p>';
}
?>
</form>
</body>
</html>
出力結果
今回は選択内容を出力する処理も実装してみました。
処理に関してはもっと良い方法があるかもしてませんが、
array_searchとarray_columnを利用し多次元の連想配列から対象データを検索しています。
説明は以上となります。
この記事が誰かの助けになれば幸いです。