0
<select name="year"><?=ddY()?></select>  


function ddY(){
        for($i=1900;$i<=date('Y');$i++)
        $arr[] = $i;
        $arr = array_reverse($arr);
        foreach($arr as $year){ 
         if($year == date('Y')) {
         echo '<option value="'.$year.'" selected="selected">'.$year.'</option>';

         } else {
            echo '<option value="'.$year.'">'.$year.'</option>';
        }



        //echo'<option value="'.$year.'">'.$year.'</option>'; 
    } 
    }

下拉列表填充良好,但未选择当前年份。

4

4 回答 4

1

获得选定值的最佳方法是:我使用的是非连接方法:

<option value="<?php echo $year; ?>" <?php if($year == date('Y')) { echo "selected"; } ?>  ><?php echo $year; ?></option>

还要检查您的变量是否为您提供了适当的值。

于 2013-08-31T15:53:07.867 回答
1

我怀疑您正在尝试根据您发布的问题在屏幕上“如图所示”运行您的代码,它会在“未定义函数”中生成一个错误,如Call to undefined function ddY().

将你的函数包裹在里面<?php // function etc. ?>,它就会工作。这就是我怀疑正在发生的事情。

重新格式化的代码:(已测试)

<select name="year"><?=ddY()?></select>  

<?php

function ddY(){
        for($i=1900;$i<=date('Y');$i++)
        $arr[] = $i;
        $arr = array_reverse($arr);
        foreach($arr as $year){ 
         if($year == date('Y')) {
         echo '<option value="'.$year.'" selected="selected">'.$year.'</option>';

         } else {
            echo '<option value="'.$year.'">'.$year.'</option>';
        }



        //echo'<option value="'.$year.'">'.$year.'</option>'; 
    } 
    }

?>

输出:

<select name="year">
<option value="2013" selected="selected">2013</option>
<option value="2012">2012</option>
<option value="2011">2011</option>
<option value="2010">2010</option>
<option value="2009">2009</option>
<option value="2008">2008</option>
<option value="2007">2007</option>

等等

于 2013-08-31T16:00:25.873 回答
1

它应该工作得很好。这不是一个答案 - 只是一个重写你的两个循环的建议

<select name="year">
    <?php
        $currentYear = (int)date('Y');
        for ($i = $currentYear; $i >= 1900; $i--) {
            echo '<option value="' . $i . '"' . ($i == $currentYear ? ' selected="selected"' : '') . '>' . $i . '</option>';
        }
    ?>
</select>

演示

输出:

<select name="year">
    <option value="2013" selected="selected">2013</option>
    <option value="2012">2012</option>
    <option value="2011">2011</option>
    <option value="2010">2010</option>
    ...
    <option value="1903">1903</option>
    <option value="1902">1902</option>
    <option value="1901">1901</option>
    <option value="1900">1900</option>
</select>
于 2013-08-31T16:01:36.477 回答
1

这是代码:

<option value="<?php echo $year; ?>" <?php echo ($year == date('Y')) ? "selected":""; } ?>  ><?php echo $year; ?></option>
于 2013-08-31T16:02:42.217 回答