【问题标题】:Why the current year is not selected? [closed]为什么没有选择当年? [关闭]
【发布时间】:2013-09-04 04:20:59
【问题描述】:
<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>'; 
    } 
    }

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

【问题讨论】:

  • &lt;option value="2013" selected="selected"&gt;2013&lt;/option&gt; 我。究竟是什么问题?
  • 附带说明:您也可以倒退并避免第二个 foreach 循环,例如:for ($i = date('y'); $i &gt;= 1990; --$i) {}
  • @AmalMurali,2013 被选中了吗?不敢相信。试了几百次,清缓存……
  • 为我工作:phpfiddle.org/lite/code/mtd-7q4,点击运行,它会告诉你运行时会发生什么。

标签: php html select option


【解决方案1】:

获取选定值的最佳方法是: 我正在使用非串联方法:

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

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

【讨论】:

    【解决方案2】:

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

    将你的函数包裹在&lt;?php // function etc. ?&gt; 中,它就会起作用。这就是我怀疑正在发生的事情。

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

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

    【讨论】:

      【解决方案3】:

      它应该可以正常工作。 这不是一个答案 - 只是一个重写你的两个循环的建议

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

      Demo.

      输出:

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

      【讨论】:

        【解决方案4】:

        代码如下:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-05-29
          • 2014-11-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多