以下にドロップダウンメニューがあり、フォームに検証エラーがある場合はドロップダウンメニューで選択されたオプションの表示が維持されます。それ以外の場合、フォームにエラーがない場合、ドロップダウンメニューは「」の表示に戻ります。選択してください」オプション:
$validSubmission = isset($_POST['registerbtn']) isset($getyear);
$min_year = 1;
$max_year = 10;
$years = range($min_year, $max_year); // returns array with numeric values of 1900 - 2012
$yearHTML = '';
$yearHTML .= '<select name="year" id="yearDrop">'.PHP_EOL;
$yearHTML .= '<option value="">Please Select</option>'.PHP_EOL;
foreach ($years as $year) {
if ($validSubmission && $year == $_POST['year'] && $numrows != 1) {
$yearHTML .= "<option value='" . $year . "' selected='selected'>$year</option>" . PHP_EOL;
} else {
$yearHTML .= "<option value='" . $year . "'>$year</option>" . PHP_EOL;
}
}
$yearHTML .= '</select>';
上記のドロップダウンの値は次のとおりです。
1
2
3
4
5
...
10
しかし、ドロップダウンには2種類のオプションが含まれているため、同じ方法を下のドロップダウンで使用する際に問題が発生します。1年の単一の数値を含むオプションと、1年の複数の値を/の間に表示するオプションです。 :
1
1/2
2
2/3
3
3/4
4
4/5
5
....
10
私の質問は、フォームにエラーがある場合に選択したオプションを選択したままにするために、下のドロップダウンメニューコードに上記の形式を使用するにはどうすればよいですか?フォームにエラーがない場合は、「選択してください」の値の表示に戻りますドロップダウンメニューで?
$validSubmission = (isset($_POST['createbtn']) && isset($getcourseid) && isset($getcoursename) && isset($getduration));
$durationHTML = '';
$durationHTML .= '<select name="duration" id="durationDrop">'.PHP_EOL;
$durationHTML .= '<option value="">Please Select</option>'.PHP_EOL;
foreach ($years as $year) {
$durationHTML .= "<option>$year</option>".PHP_EOL;
if ($year != $max_year) {
$nextYear = $year + 1;
$durationHTML .= "<option>$year/$nextYear</option>".PHP_EOL;
}
}
$durationHTML .= '</select>';