diff --git a/laporan.php b/laporan.php new file mode 100644 index 0000000..3a77f4a --- /dev/null +++ b/laporan.php @@ -0,0 +1,377 @@ + 0) $where .= " AND MONTH(b.tanggal_bantuan) = $bulan"; + if ($tahun > 0) $where .= " AND YEAR(b.tanggal_bantuan) = $tahun"; + + $query = mysqli_query($conn, " + SELECT + b.id, + b.tanggal_bantuan, + p.nama AS nama_penerima, + p.nik, + p.alamat, + p.kategori_kemiskinan, + b.jenis_bantuan, + b.jumlah_bantuan, + b.keterangan + FROM bantuan b + LEFT JOIN penduduk_miskin p ON b.penduduk_id = p.id + $where + ORDER BY b.tanggal_bantuan DESC + "); + + $nama_bulan_arr = ['','Januari','Februari','Maret','April','Mei','Juni','Juli','Agustus','September','Oktober','November','Desember']; + $label = ($bulan > 0 ? $nama_bulan_arr[$bulan] . '_' : 'Semua_Bulan_') . $tahun; + + header('Content-Type: text/csv; charset=UTF-8'); + header('Content-Disposition: attachment; filename="Laporan_Bantuan_' . $label . '.csv"'); + header('Pragma: no-cache'); + echo "\xEF\xBB\xBF"; // BOM UTF-8 agar Excel terbaca benar + + $out = fopen('php://output', 'w'); + fputcsv($out, ['No', 'Tanggal', 'Nama Penerima', 'NIK', 'Alamat', 'Kategori', 'Jenis Bantuan', 'Jumlah Bantuan', 'Keterangan'], ';'); + + $no = 1; + while ($row = mysqli_fetch_assoc($query)) { + fputcsv($out, [ + $no++, + $row['tanggal_bantuan'], + $row['nama_penerima'] ?? '-', + $row['nik'] ?? '-', + $row['alamat'] ?? '-', + $row['kategori_kemiskinan'] ?? '-', + $row['jenis_bantuan'], + $row['jumlah_bantuan'], + $row['keterangan'] ?? '-', + ], ';'); + } + fclose($out); + exit; +} + +// ==================== AMBIL DATA UNTUK PREVIEW ==================== +$bulan_filter = isset($_GET['bulan']) ? intval($_GET['bulan']) : date('n'); +$tahun_filter = isset($_GET['tahun']) ? intval($_GET['tahun']) : date('Y'); + +$where = "WHERE b.tanggal_bantuan IS NOT NULL"; +if ($bulan_filter > 0) $where .= " AND MONTH(b.tanggal_bantuan) = $bulan_filter"; +if ($tahun_filter > 0) $where .= " AND YEAR(b.tanggal_bantuan) = $tahun_filter"; + +$query = mysqli_query($conn, " + SELECT + b.id, + b.tanggal_bantuan, + p.nama AS nama_penerima, + p.nik, + p.alamat, + p.kategori_kemiskinan, + b.jenis_bantuan, + b.jumlah_bantuan, + b.keterangan + FROM bantuan b + LEFT JOIN penduduk_miskin p ON b.penduduk_id = p.id + $where + ORDER BY b.tanggal_bantuan DESC +"); + +// Statistik ringkasan +$stats = []; +$statQuery = mysqli_query($conn, " + SELECT jenis_bantuan, COUNT(*) as jumlah + FROM bantuan b + $where + GROUP BY jenis_bantuan + ORDER BY jumlah DESC +"); +while ($r = mysqli_fetch_assoc($statQuery)) $stats[] = $r; + +$totalQuery = mysqli_query($conn, "SELECT COUNT(*) as total FROM bantuan b $where"); +$totalRow = mysqli_fetch_assoc($totalQuery); +$totalBantuan = $totalRow['total']; + +$nama_bulan_arr = ['','Januari','Februari','Maret','April','Mei','Juni','Juli','Agustus','September','Oktober','November','Desember']; +?> + + +
+ +| No | +Tanggal | +Nama Penerima | +NIK | +Alamat | +Kategori | +Jenis Bantuan | +Jumlah | +Keterangan | +
|---|---|---|---|---|---|---|---|---|
| = $no++ ?> | += htmlspecialchars($row['tanggal_bantuan'] ?? '-') ?> | += htmlspecialchars($row['nama_penerima'] ?? '-') ?> | += htmlspecialchars($row['nik'] ?? '-') ?> | += htmlspecialchars($row['alamat'] ?? '-') ?> | += htmlspecialchars($row['kategori_kemiskinan'] ?? '-') ?> | += $jenis ?> | += htmlspecialchars($row['jumlah_bantuan'] ?? '-') ?> | += htmlspecialchars($row['keterangan'] ?? '-') ?> | +
Laporan dibuat pada: = date('d/m/Y H:i') ?> Β· Dibuat oleh: = htmlspecialchars($_SESSION['username']) ?>
+ +Sistem pemetaan rumah ibadah dan pendataan penduduk miskin berbasis geografis.
+Masuk ke dashboard admin WebGIS
+ + β οΈ Username dan password wajib diisi!