prepare("SELECT * FROM monitoring_pelanggan WHERE id_pelanggan = :id AND YEAR(waktu) = :tahun AND MONTH(waktu) = :bulan"); $stmt->bindParam(':id', $id, PDO::PARAM_INT); $stmt->bindParam(':tahun', $tahun); $stmt->bindParam(':bulan', $bulan); $stmt->execute(); $monitor = $stmt->fetchAll(PDO::FETCH_ASSOC); // Memeriksa apakah data ditemukan if (!empty($monitor)) { $status = []; $waktu = []; $status[] = 4; $waktu[] = date('Y-'.$bulan.'-01 00:00:01'); $days = date('d') - 1; // Mendapatkan jumlah hari dalam bulan // Saya ingin data per harinya ada sesuai dengan status hari sebelumnya for ($day = 2; $day <= $days; $day++) { $wak = date('Y-'.$bulan.'-'.str_pad($day, 2, '0', STR_PAD_LEFT)); $found = false; foreach ($monitor as $row) { if (substr($row['waktu'], 0, 10) == $wak) { $status[] = $row['status']; $waktu[] = $row['waktu']; $found = true; // break; } } if (!$found) { $status[] = 4; // Status default $waktu[] = $wak . ' 00:00:00'; // Waktu default $status[] = 4; // Status default $waktu[] = $wak . ' 09:00:00'; // Waktu default $status[] = 4; // Status default $waktu[] = $wak . ' 18:00:00'; // Waktu default } } // Tambahkan status dan waktu saat ini $status[] = 4; // Menambahkan status sekarang if (date('m') == $bulan) { $waktu[] = date('Y-m-d H:i:s'); // Menambahkan waktu saat ini } else { $date = new DateTime('last day of previous month'); $waktu[] = $date->format('Y-m-d 00:00:00'); } // Mengisi data ke dalam array hasil $data = [ 'status' => $status, 'waktu' => $waktu, ]; } else { // Jika tidak ada data ditemukan $d1 = date('Y-'.$bulan.'-01 00:00:01'); $d2 = date('Y-'.$bulan.'-t H:i:s'); // Menggunakan 't' untuk hari terakhir dalam bulan $data = [ 'status' => [4, 4], 'waktu' => [$d1, $d2], ]; } // Mengirimkan data sebagai JSON echo json_encode($data); ?>