如何在循环中重复几个月?

时间:2013-07-25 11:46:35

标签: php mysql loops

我想将动态月份插入数据库,如果用户选择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]."')";

}

3 个答案:

答案 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)

您的问题应说明您为什么要在数据库中使用这一系列月份,因为没有人通常会这样做。通常,人们将事务/事件记录上的时间戳放入数据库中,然后报告它们。