0

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>';
4

2 に答える 2

1

これを試して

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 = selected';
        }
        else
        {
            $session = '';
        }
        $dropdown .= '<option value="'.sprintf("%02d", $name).'"'.$session.'">'.sprintf("%02d", $name).'</option>';
    }
    $dropdown .=  '</select>';

    return $dropdown;
}

問題は、「選択済み」でも「オプション」にある場合でも、値が選択され、以前のコードで..「選択済み」がすべての日付に存在するため、「31」と表示されやすいことです。「selected = selected」が保存された値のエコーを取得するようにコードを変更しました。

それがあなたを助けることを願っています

于 2013-03-28T11:11:37.310 に答える
0

if条件がtrueを返さないと大まかに推測すると、

両方の変数の値を確認してみてください。

確認のために、以下のようにコードを置き換えて試してみてください。

if($session_d == sprintf("%02d", $name)){
    $session = 'selected';
}
$dropdown .= '<option value="'.sprintf("%02d", $name).'" selected="'.$session.'">'.sprintf("%02d", $name).'</option>';
于 2013-03-28T11:08:05.403 に答える