我想将动态月份插入数据库,如果用户选择March,那么我需要从3月到2月插入12个月的记录。我正在变得充满活力,但当我试图将其插入数据库时,它只会在前12个月插入。如果用户点击添加更多按钮,我需要在3月到2月再次重复循环。这是我的代码:
$months = array();
$date="august";
$year= '2014';
//$y= (int)$year;
$currentMonth= date('m', strtotime($date));
$currentyear= date('Y', strtotime('+1 year'));
for($x = $currentMonth; $x < $currentMonth+12; $x++)
{
$months[] = date('F Y', mktime(0, 0, $currentyear, $x,1));
}
//print_r($months);
for($i=0; $i<=23 ; $i++)
{
echo $insert= "insert into month(month_name) values('".$months[$i]."')";
}
答案 0 :(得分:0)
由于您的月份数组只有12个值,因此您无法在该数组中转到值23。您可以做的是从0到11两次运行数组,如下所示:
for($j=0; $j<2 ; $j++)
{
for($i=0; $i<12 ; $i++)
{
echo $insert= "insert into month(month_name) values('".$months[$i]."')";
}
}
或克莱德表示你可以使用模数运算符,这不会让你浪费2个循环,因此更快:
for($i=0; $i<24 ; $i++)
{
echo $insert= "insert into month(month_name) values('".$months[$i % 12]."')";
}
答案 1 :(得分:0)
也许您可以使用DateTime对象来执行此操作。
$string = '01-08-2013'; //input string from user
$StartDate = new DateTime($string);
$StopDate = new DateTime($string);
$StopDate->modify('+1 year');
while($StartDate < $StopDate) { //loop as long as $StartDate is smaller than $StopDate
echo "inserting " . $StartDate->format('d/m/Y') . ' into database ' . "<br/>";
//execute mysql query;
$StartDate->modify('+1 month');
}
答案 2 :(得分:0)
您的问题应说明您为什么要在数据库中使用这一系列月份,因为没有人通常会这样做。通常,人们将事务/事件记录上的时间戳放入数据库中,然后报告它们。