CREATE TABLE `tbl_atn` (
`atn_id` int(15) NOT NULL AUTO_INCREMENT,
`eng_id` int(15) DEFAULT NULL,
`visit` varchar(50) DEFAULT NULL,
`travel` varchar(50) DEFAULT NULL,
`start_time` varchar(50) DEFAULT NULL,
`mile` varchar(50) DEFAULT NULL,
`end_time` varchar(50) DEFAULT NULL,
`comments` varchar(100) DEFAULT NULL,
`actual` varchar(50) DEFAULT NULL,
`total_job` varchar(50) DEFAULT NULL,
`regular` varchar(50) DEFAULT NULL,
`over` varchar(50) DEFAULT NULL,
`total_hrs` varchar(50) DEFAULT NULL,
`pay` varchar(50) DEFAULT NULL,
`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`atn_date` date DEFAULT NULL,
PRIMARY KEY (`atn_id`)
)
私がやりたいことは、毎月の月次レポートを作成することです。すべての特定の日付が表示され、レコードがない場合は上の表のレコードが表示され、空の場合
上は私のテーブルです。このアプリケーションを作成しようとしていますが、このシートが原因で行き詰まっています。まず第一に、これは MySQL クエリを使用してのみ達成できますか? そうでない場合は、最初にすべての日付を生成する必要があります。次に、日付ごとにデータベースからレコードを取得し、別のクエリを実行してそれらを合計する必要があります。そのためのクエリを作成できません。
何か助けはありますか?
$now = date('Y-m-d');
$month = date("m",strtotime($now));
$year = date("Y",strtotime($now));
$first = date('Y-m-d', mktime(0, 0, 0, $month, 1, $year));
$last = date('Y-m-t', mktime(0, 0, 0, $month, 1, $year));
$thisTime = strtotime($first);
$endTime = strtotime($last);
while($thisTime <= $endTime)
{
$thisDate = date('Y-m-d', $thisTime);
echo $thisDate."<br>";
$thisTime = strtotime('+1 day', $thisTime); // increment for loop
}
このコードを動的に作成しました。指定された月と年が指定された任意の月のすべての日付を取得できるようになりました。ここで行うことは、すべての日付をループし、クエリをデータベースに送信してデータが見つかった場合に検索する関数を作成することです。そうでなければゼロの値は正しいアプローチですか?