如何获得适当的日期下拉格式

时间:2013-07-11 17:59:45

标签: php html forms

以下是我在表单中接受日期的代码:     

$month_array = array( "January", "February", "March", "April", "May", "June",
                  "July", "August", "September", "October", "November", "December");

echo "<select name='Resolved_date1' style='color:black; font-family: Verdana; font-weight: bold; font-size: 12px; background-color:beige;'>";
$i = 1;
while ( $i <= 31 ) {
echo "<option value=".$i.">".$i."</option>";
$i++;
}

echo "</select>";

echo "<select name='Resolved_date2' style='color:black; font-family: Verdana; font- weight: bold; font-size: 12px; background-color:beige;'>";
$i = 0;
while ( $i <= 11 ) {
echo "<option value=".$i." name='Resolved_date2'>".$month_array[$i]."</option>";      
$i++;
}
echo "</select>";
echo $_POST['Resolved_date2'];
echo "<select name='Resolved_date3' style='color:black; font-family: Verdana; font-    weight: bold; font-size: 12px; background-color:beige;'>";
$i = 2013;
while ( $i <= 2050 ) {    
echo "<option value=".$i.">".$i."</option>";    
$i++;
}
echo "</select>";
echo $_POST['Resolved_date3'];
?>

问题是以下语句打印月份编号而不是月份名称:     echo $ _POST ['Resolved_date2']; 有什么方法可以解决这个问题吗?另外我们如何根据月份来定制天数...如果我选择1月份,我会在下拉菜单中获得31天,当我选择6月时,我只能在下拉菜单中获得30天?请帮忙......

3 个答案:

答案 0 :(得分:1)

如果您需要知道月份名称,请使用:

// first option
"<option value=" . $month_array[$i] 
    . " name='Resolved_date2'>" . $month_array[$i] . "</option>";

// second option
echo $month_array[$_POST['Resolved_date2']];

正确计算天数:

$num_of_days = date('t', /*you month here*/);
$i = 1;
while ($i <= $num_of_days)
    // your code

编辑:获取天数,更难一点。

// first - we nned to get year
$year = date('Y'); // or as string 2013, 2012 or 2010
// now we form a string that represents the first day of a month
$first_day = '1 ' . $month_array[$i] . ' ' . $year;
// now convert it to Unix timestamp
$first_day = strtotime($first_day);
// and finally:
$num_of_days = date('t', $first_day);
// check:
echo $num_of_days

答案 1 :(得分:0)

POSTed信息是选项的值,而不是其文本。如果你想要文本,你可以:

echo "<option value=".$month_array[$i]." name='Resolved_date2'>".$month_array[$i]."</option>";

要根据所选月份限制天数,您必须在客户端使用javascript或最好使用其中一个框架(如jQuery)来执行此操作。

答案 2 :(得分:0)

要解决你的其他问题,请改变它:

$ month_array [] = array( 'name'=&gt; “一月”,“天”=&gt; 31, );
并在剩下的几个月里做其余的事情。

这样你就会得到带有关联数组的数组,所以获得$ month_array [0] ['name']将给出1月和$ month_array [0] ['days']将包含天数31。