2012-12-08 99 views
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; 
    } 
} 
} 

的origanl代码是下面这样的地方显示正确的选项,但没有执行$ validS ubmission变量,以便它不保存提交页面后选择了该选项:

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

但试图结合这两个代码没有奏效,那就是我的问题

回答

0

试试这个修改/简化的代码。通过使用ternary comparison-$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; 
    } 
}