对此有一些答案,但它们似乎都有基于应用程序的不同解决方案。
在我的PHP代码中,我有一个for循环创建用于HTML select的变量:
$today_select = new DateTime();
$day1 = new DateTime();
$day1_value = $day1->format('Y/m/d');
for($i = 2; $i < 8; $i++) {
${'day' . $i} = $today_select->modify('+1 day');
${'day' . $i . '_select'} = ${'day' . $i}->format('l, jS F Y');
${'day' . $i . '_value'} = ${'day' . $i}->format('Y/m/d H:i:s');
}
此循环声明变量并将日期设置为值,逐周递增。
然后我选择了日期:
<select name="nd_date" id="nd_date">
<option value="'.$day1_value.'" value='.($nd_delivery_date == '').' selected>Today '.$day1_value.'</option>
<option value="'.$day2_value.'" value='.($nd_delivery_date == '').' >Tomorrow'.$day2_value.'</option>
<option value="'.$day3_value.'" value='.($nd_delivery_date == '').' >'.$day3_select.' '.$day3_value.'</option>
<option value="'.$day4_value.'" value='.($nd_delivery_date == '').' >'.$day4_select.' '.$day4_value.'</option>
<option value="'.$day5_value.'" value='.($nd_delivery_date == '').' >'.$day5_select.' '.$day5_value.'</option>
<option value="'.$day6_value.'" value='.($nd_delivery_date == '').' >'.$day6_select.' '.$day6_value.'</option>
<option value="'.$day7_value.'" value='.($nd_delivery_date == '').' >'.$day7_select.' '.$day7_value.'</option>
</select>
这会将值分配给$ nd_delivery_date,然后将其写入数据库。数据库中的日期一直是日期和日期时间的变化,并且都没有用。
我尝试在for循环中转换strtodate,我也尝试在for循环中使用日期而不是日期时间而没有快乐。
任何帮助都会非常感谢!
答案 0 :(得分:2)
DATE
列格式为YYYY-MM-DD
,而DATETIME
列格式为YYYY-MM-DD HH:MM:SS
(MySql Datetime Documentation)
您的DateTime值变量正在将日期时间格式化为YYYY/MM/DD HH:MM:SS
我建议您在约会时间内将\
更改为-
。
编辑:
此外,如评论中所示,您不应在一个value
中使用多个<option>
属性。我不确定你想要用第二个值实现什么,但我建议你删除它!
第二次编辑:
与$day1
相比,您的$day2-7
个变量也有所不同:
$day1_value = $day1->format('Y/m/d');
对于所有其他日期,您的$day{X}_value
变量设置为不同的日期格式。
我建议你只需在代码顶部设置一个模式作为变量并使用它。
E.g。
$datetime_pattern = 'Y-m-d H:i:s';
...
$day1_value = $day1->format($datetime_pattern);
...
${'day' . $i . '_value'} = ${'day' . $i)->format($datetime_pattern);
答案 1 :(得分:0)
所以,上面我们了解到,选项中的值设置,错误的代码以及错误地认为我正在将值分配给变量是一个非常糟糕的主意。
实际上将值设置为变量是什么?
<select name="nd_date" id="nd_date">
<option value="'.$day1_value.'" value='.($nd_delivery_date == '').' selected>Today '.$day1_value.'</option>
选择名称!所以这被称为nd_date,而我实际上是在关心将值设置为nd_delivery_date的变量。
<select name="nd_delivery_date" id="nd_date">
<option value="'.$day1_value.'" selected>Today'.$day1_value.'</option>
我的代码非常错误,复制您不完全理解的代码的缺陷在这里突出显示!