PHP下拉选择函数动态创建月份

Posted

技术标签:

【中文标题】PHP下拉选择函数动态创建月份【英文标题】:PHP dropdown select function to dynamically create months 【发布时间】:2013-08-01 16:56:19 【问题描述】:

我在该月的最后一天一直遇到问题,除了此代码可以正常显示从当前月份开始的所有 12 个月。在这个月的最后一天,我得到了一些月份的副本,而其他月份则根本没有显示。任何帮助,将不胜感激。谢谢。

<select id="month" name="month">


<?php

//lists months

    for ($i = 0; $i <= 11; ++$i) 
        
            $time = strtotime(sprintf('+%d months', $i));
            $value = date('m', $time);
            $label = date('F', $time);

//if month is set stay on that month

            if($month==$value)
                 printf('<option value="%s" selected="selected">%s</option>' , $value, $label);
                
            else
                printf('<option value="%s">%s</option>', $value, $label);
        

?>

//first month shows instead of blank

    $("#target option:first")

</select>

【问题讨论】:

你在哪里设置 $month 的值? 另外,你能检查一下你在不同情况下得到的 $time 值是否正确吗? 【参考方案1】:

您可能会遇到一个问题,即从 X 个月后的今天开始跳过一个月。 而不是

   strtotime(sprintf('+%d months', $i));

尝试使用

    strtotime(sprintf('first day of +%d month', $i));

【讨论】:

【参考方案2】:
<?php

    function months($selctedMonth='january')

        $months='<select name="month" size="1">';
        for ($i = 12; $i > 0; $i--) 
            $time = strtotime(sprintf('-%d months', $i));   
            $label = date('F', $time); 
            $selctedM = strtolower($selctedMonth) == strtolower($label) ? 'selected' : '';
            $months.="<option value='$label'  $selctedM >$label</option>";
          
        $months.="</select>";
        return $months;
    

     echo months(); 


?>

默认情况下,一月将显示为选中状态。

如果你写&lt;?php echo months('march'); ?&gt;,那么march将默认被选中。

【讨论】:

以上是关于PHP下拉选择函数动态创建月份的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 和 Ajax 中从数据库数据动态创建下拉列表

使用 php 变量创建动态 mysql 查询

根据下拉选择创建动态下拉选项 - 卡住

动态下拉菜单

在jsp中如何实现加一个动态下拉框选择年份,并在当前页面显示相应的月份值?

当每个下拉列表动态创建ID时,jquery选择选项数据和值[关闭]