1

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

$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']; 有没有办法解决这个问题?另外,我们如何根据月份自定义天数..ike 如果我选择 1 月,我会在下拉列表中获得 31 天,而当我选择 6 月时,我只会在下拉列表中获得 30 天?请帮忙...

4

3 回答 3

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
于 2013-07-11T18:07:22.240 回答
0

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

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

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

于 2013-07-11T18:07:12.617 回答
0

为了解决你的其他问题,像这样改变它:

$month_array[] = array('name' => "January", 'days' => 31, );
在剩下的几个月里做剩下的事情。

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

于 2013-07-11T18:10:14.657 回答