0

私は以下のコードを正しく取得していませんが、下にこれらの値を表示したい場所の下にドロップダウンメニューがあります:

1
1/2
2
2/3
3
3/4
4
4/5

...

10

送信後にオプションを選択したままにしたいので、以下のコードを試しましたが、問題は表示値1/2, 2/3, 3/4, 4/5...などだけであるということです.

foreach ($years as $year) {
    if ($validSubmission && $year == $getduration) {
         if ($year != $max_year) {
         $nextYear = $year + 1;
      $durationHTML .= "<option value='" . $year . "' selected='selected'>$year/$nextYear</option>".PHP_EOL;      
     }else{
    $durationHTML .= "<option value='" . $year . "' selected='selected'>$year</option>".PHP_EOL;  
}
}else{
         if ($year != $max_year) {
         $nextYear = $year + 1;
    $durationHTML .= "<option value='" . $year . "'>$year/$nextYear</option>".PHP_EOL;
}else{
    $durationHTML .= "<option value='" . $year . "'>$year</option>" . PHP_EOL;
     }
}
}

元のコードは次のとおりで、正しいオプションを表示しますが、ページを送信した後にオプションが選択されたままにならないように $validSubmission 変数を実行しませんでした。

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

/以下のコードは、送信後にオプションを表示したままにしますが、値の間に値を表示しません。

 foreach ($years as $year) {
        if ($validSubmission && $year == $getduration) {
            $durationHTML .= "<option value='" . $year . "' selected='selected'>$year</option>" . PHP_EOL;
        } else {
            $durationHTML .= "<option value='" . $year . "'>$year</option>" . PHP_EOL;
        }
    }

しかし、両方のコードを結合しようとしても機能せず、それが私が抱えている問題です

4

1 に答える 1

0

この修正/簡略化されたコードを試してください。三項比較を使用して- $var = condition ? if_true : if_false- 属性を設定するとselected='selected'、コードを最小限に抑えることができます (~17 行から ~9 行まで)。

foreach ($years as $year) {

    //Gets the single years - 1,2,3...
    $sel =($validSubmission && $year == $getduration)? " selected='selected'": "";
    $durationHTML .= "<option value='$year'$sel>$year</option>".PHP_EOL;

    //Gets the double years - 1/2,2/3,3/4...
    if ($year != $max_year) {
    $nextYear = $year + 1;
    $sel =($validSubmission && ($year.'/'.$nextYear) == $getduration)? " selected='selected'": "";
    $durationHTML .= "<option value='$year/$nextYear'$sel>$year/$nextYear</option>".PHP_EOL;  
    }
}
于 2012-12-08T06:09:23.803 に答える