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']; +?> + + + + +Laporan Bantuan - WebGIS Kemiskinan + + + + +
+

πŸ“‹ Laporan Bantuan β€” 0 ? $nama_bulan_arr[$bulan_filter] . ' ' . $tahun_filter : 'Semua Bulan ' . $tahun_filter ?>

+
+ πŸ—ΊοΈ Kembali ke Dashboard + πŸ–¨οΈ Cetak +
+
+ +
+ + +
+
+ + +
+
+ + +
+ + ⬇️ Download CSV +
+ + +
+
+
+
Total Penyaluran Bantuan
+
+ '🌾','Sembako'=>'πŸ›’','Uang Tunai'=>'πŸ’°','Pendidikan'=>'πŸ“š','Kesehatan'=>'πŸ₯']; + $colors = ['green','orange','purple','green','orange']; + $ci = 0; + foreach($stats as $s): + $icon = $jenis_icon[$s['jenis_bantuan']] ?? 'πŸ“¦'; + $cls = $colors[$ci % count($colors)]; $ci++; + ?> +
+
+
+
+ +
+ + +
+

πŸ“„ Rincian Penyaluran Bantuan

+ +
πŸ˜• Tidak ada data bantuan untuk periode ini.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NoTanggalNama PenerimaNIKAlamatKategoriJenis BantuanJumlahKeterangan
+
+ + +
+ +
+ + + + + \ No newline at end of file diff --git a/login.php b/login.php new file mode 100644 index 0000000..5dde96b --- /dev/null +++ b/login.php @@ -0,0 +1,277 @@ + + + + + + Login Admin - WebGIS Kemiskinan + + + + +
+ +
+ +

WebGIS Kemiskinan
Kota Pontianak

+

Sistem pemetaan rumah ibadah dan pendataan penduduk miskin berbasis geografis.

+ +
+ + +
+

Selamat Datang πŸ‘‹

+

Masuk ke dashboard admin WebGIS

+ + ⚠️ Username dan password wajib diisi!
'; + } elseif ($_GET['error'] == 'wrong') { + echo '
⚠️ Username atau password salah. Coba lagi.
'; + } + } + ?> + +
+
+ +
+ πŸ‘€ + +
+
+ +
+ +
+ πŸ”’ + + πŸ‘οΈ +
+
+ + +
+ + +
+ + + + + + \ No newline at end of file diff --git a/login_process.php b/login_process.php new file mode 100644 index 0000000..3281afc --- /dev/null +++ b/login_process.php @@ -0,0 +1,44 @@ +prepare("SELECT * FROM admin WHERE username = ?"); +$stmt->bind_param("s", $username); +$stmt->execute(); +$result = $stmt->get_result(); + +if ($result->num_rows > 0) { + $admin = $result->fetch_assoc(); + + // Cek password + if ($password === $admin['password']) { + $_SESSION['login'] = true; + $_SESSION['username'] = $username; + + // Redirect ke admin.php + header("Location: admin.php"); + exit; + } +} + +// Login gagal +header("Location: login.php?error=wrong"); +exit; +?> \ No newline at end of file diff --git a/logout.php b/logout.php new file mode 100644 index 0000000..743ec1e --- /dev/null +++ b/logout.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/lupa_password.html b/lupa_password.html new file mode 100644 index 0000000..70961bf --- /dev/null +++ b/lupa_password.html @@ -0,0 +1,98 @@ + + + + + Lupa Password - WebGIS Kemiskinan + + + + +
+

πŸ”‘ Reset Password

+

Masukkan username dan password baru kamu

+ +
+ + + + + + + +
+ + +
+ + + \ No newline at end of file