1

昨年の各月のデータベースの列の合計を印刷したいと思います。これを行うためにこれまでに持っているコードは次のとおりです。

$month = date("n");
$year  = date("Y");

$loop = 12;
while($loop>1) {
    $first = mktime(0,0,0,$month,1,$year);
    $last = mktime(23,59,00,$month+1,0,$year);

    $spendingData = mysql_query("SELECT * FROM spending WHERE date BETWEEN $first AND $last") or die(mysql_error());
    $totalMonth = 0;
    while($spending = mysql_fetch_array($spendingData))
    {
        $totalMonth = $totalMonth + $spending['amount'];
    }
    print "£".$totalMonth;
    $loop = $loop-1;
    print "<br>";
}

私の質問は、ループ内で、毎月の時間をどのように調整するかです。タイムスタンプから1か月分の秒数をとることを考えましたが、毎月何日あるかわからないため、これが機能するとは思いません。また、これは何年も考慮されないので、月の数字から1を取り続けることはできないと思います。また、新しい月ごとに数値が変わるため、数値をハードコーディングしたくありません。

どうすればこれを達成できますか?

ありがとうございました

4

1 に答える 1

1

MySQLではこれをかなり簡単に行うことができます。

SELECT MONTH(date) AS month, SUM(amount) AS amount
FROM yourtable
WHERE YEAR(date) = $year
GROUP BY MONTH(date)

日付操作にPHPを使用する必要はありません。

于 2013-01-25T15:26:54.220 に答える