2014-03-26 117 views
1

開始我需要循環通過一年的2012年12月間的月至2017年十一月開始那麼一個月就是12,結束月份是11,起始年是2012年,收官之年的2017年PHP循環遍歷月,在十二月

然後我詢問與日期格式的數據庫爲2014年3月27日00:00:00

我知道我大約4年前做過這樣的事情,但似乎無法能夠螺母現在出來了。 這是我有:

$year_start = 2012; 
$year_end = 2017; 
$month_start = 12; 
$month_end = 11; 

$year = $year_start; 
$month = $month_start; 

$number_of_months = 3; 

if ($month < 13 && $year < $year_end) { 

    $between_year_month = $year.'-'.$month; 
    //echo $between_year_month; 

    $query_total = "SELECT SUM(sales_points) FROM sales_list 
        WHERE user_id ='".$_SESSION['users_id']."' 
        AND sales_date BETWEEN '".$between_year_month."-01 00:00:00' AND '".$between_year_month."-30 23:59:59'"; 

    echo $query_total; 

    $month++; 

    if($month == 13) { 
      $month = 1; 
      $year = $year + 1; 
    } 

    $between_year_month = $year.'-'.$month; 
    //echo $between_year_month; 

}

您的幫助深表感謝。

+1

我發佈了n個答案,然後意識到我不知道你實際上有什麼問題。 –

+0

環路和做什麼?無論如何,您可以將數據庫中的日期截至一年。 – Jonast92

回答

6

你最大的問題是你從來沒有真正執行查詢。我也用DateTime()DateInterval()DatePeriod()簡化你的循環。

$start = new DateTime('2012-12-01'); 
$end  = new DateTime('2017-11-01'); 
$interval = new DateInterval('P1M'); 
$period = new DatePeriod($start, $interval, $end); 

foreach ($period as $dt) { 
    $first_of_month = $dt->modify('first day of this month')->format('Y-m-d H:i:s'); 
    $end_of_month = $dt->modify('last day of this month')->format('Y-m-d H:i:s'); 

    $query_total = "SELECT SUM(sales_points) FROM sales_list 
       WHERE user_id ='".$_SESSION['users_id']."' 
       AND sales_date BETWEEN '".$first_of_month ."' 
       AND '".$end_of_month ."'"; 
    $result = mysqli_query($query_total, $conn); 
    $row = mysqli_fetch_row($result); 
    echo $row[0]; 
} 
+0

感謝約翰,你的解決方案正是我之後。循環遍歷開始和結束限制的日期。我離開了數據庫的mysql_query關閉,因爲它最終是無關的剛通過的日期循環的問題。太棒了。 –