1 ~ 31 日を保持するドロップダウン ボックスがあり、ユーザーがページに戻ったときに以前に選択したものを保存/保存したいと考えています。
ボックスを生成する私の機能は次のとおりです。
public function fetchDDMMYYYYDropdown($select_d,$session_d) {
$days = range (1, 31);
$dropdown .= '<select name="'.$select_d.'">';
foreach($days as $key=>$name){
if($session_d==$name){
$session = 'selected';
}
$dropdown .= '<option value="'.sprintf("%02d", $name).'" selected="'.$session.'">'.sprintf("%02d", $name).'</option>';
}
$dropdown .= '</select>';
return $dropdown;
}
そして私のフォームはこのページにあります:
<?php
session_start();
include("includes/func.class.php");
$dob = $func->fetchDDMMYYYYDropdown('dob_d', $_SESSION['dob_d']);
?>
<form action="t35t_send.php" method="get">
<?php echo $dob;?>
<input type="submit" value="send">
</form>
そして、SESSION変数を保存するためにこれに行きます:
session_start();
$_SESSION['dob_d'] = $_GET['dob_d'];
$dob = $_SESSION['dob_d'];
echo $dob;
$_SESSION['dob_d'] は正しく、関数と初期フォーム ページの両方で出力できるため、保存されていることがわかります。したがって、正しくないはずの次のとおりですが、現時点ではドロップダウン ボックスがリセットされます。保存されたセッションではなく、最初の値に戻ります。
if($session_d==$name){
$session = 'selected';
}
$dropdown .= '<option value="'.sprintf("%02d", $name).'" selected="'.$session.'">'.sprintf("%02d", $name).'</option>';