diff --git a/cek_bantuan.php b/cek_bantuan.php
new file mode 100644
index 0000000..69917c3
--- /dev/null
+++ b/cek_bantuan.php
@@ -0,0 +1,460 @@
+ 0) {
+ $hasil = mysqli_fetch_assoc($q);
+
+ // Ambil riwayat bantuan
+ $qb = mysqli_query($conn, "
+ SELECT jenis_bantuan, jumlah_bantuan, tanggal_bantuan, keterangan
+ FROM bantuan
+ WHERE penduduk_id = {$hasil['id']}
+ ORDER BY tanggal_bantuan DESC
+ ");
+ while ($rb = mysqli_fetch_assoc($qb)) {
+ $riwayat[] = $rb;
+ }
+ } else {
+ $error = 'NIK tidak ditemukan dalam sistem. Pastikan NIK yang kamu masukkan sudah benar.';
+ }
+ }
+}
+
+$nama_bulan = ['01'=>'Januari','02'=>'Februari','03'=>'Maret','04'=>'April','05'=>'Mei',
+ '06'=>'Juni','07'=>'Juli','08'=>'Agustus','09'=>'September','10'=>'Oktober',
+ '11'=>'November','12'=>'Desember'];
+
+function formatTanggal($tgl) {
+ global $nama_bulan;
+ if (!$tgl) return '-';
+ $parts = explode('-', $tgl);
+ if (count($parts) !== 3) return $tgl;
+ return $parts[2] . ' ' . ($nama_bulan[$parts[1]] ?? $parts[1]) . ' ' . $parts[0];
+}
+
+function formatRupiah($angka) {
+ return 'Rp ' . number_format((int)$angka, 0, ',', '.');
+}
+
+$jenis_icon = ['Beras'=>'πΎ','Sembako'=>'π','Uang Tunai'=>'π°','Pendidikan'=>'π','Kesehatan'=>'π₯'];
+$jenis_warna = ['Beras'=>'#f39c12','Sembako'=>'#3498db','Uang Tunai'=>'#27ae60','Pendidikan'=>'#9b59b6','Kesehatan'=>'#e74c3c'];
+$kategori_warna = ['Miskin Ekstrem'=>'#e74c3c','Miskin'=>'#e67e22','Hampir Miskin'=>'#f1c40f'];
+$status_warna = ['Sedang'=>'#27ae60','Pernah'=>'#3498db','Belum'=>'#95a5a6'];
+$status_label = ['Sedang'=>'Sedang Menerima','Pernah'=>'Pernah Menerima','Belum'=>'Belum Menerima'];
+?>
+
+
+
+
+
+Cek Status Bantuan - WebGIS Kemiskinan Pontianak
+
+
+
+
+
+
+
ποΈ
+
Cek Status Bantuan
+
WebGIS Kemiskinan Kota Pontianak Β· Masukkan NIK untuk melihat status bantuan Anda
+
+
+
+
+
+
+
+
+
+
+
+
+
β οΈ
+
+ Data tidak ditemukan
+ = htmlspecialchars($error) ?>
+
+ Jika kamu merasa sudah terdaftar, hubungi petugas kelurahan setempat untuk konfirmasi.
+
+
+
+
+
+
+
+
+
+
+
+
+
Alamat
+
= htmlspecialchars($hasil['alamat'] ?? '-') ?>
+
+
+
Pekerjaan
+
= htmlspecialchars($hasil['pekerjaan'] ?? '-') ?>
+
+
+
Penghasilan
+
= formatRupiah($hasil['penghasilan'] ?? 0) ?>/bulan
+
+
+
Anggota Keluarga
+
= (int)($hasil['jumlah_anggota_keluarga'] ?? 1) ?> orang
+
+
+
Jumlah Tanggungan
+
= (int)($hasil['jumlah_tanggungan'] ?? 0) ?> orang
+
+
+
Kategori Kemiskinan
+
+
+
+ = htmlspecialchars($hasil['kategori_kemiskinan'] ?? '-') ?>
+
+
+
+
+
+
Keterangan
+
= htmlspecialchars($hasil['keterangan']) ?>
+
+
+
+
+
+
+
+
+ π Riwayat Bantuan yang Diterima
+ = count($riwayat) ?> kali
+
+
+
+
+ π
+ Belum ada riwayat bantuan yang tercatat.
+ Hubungi petugas untuk informasi lebih lanjut.
+
+
+
+
+
= $icon ?>
+
+
= htmlspecialchars($jenis) ?>
+
Jumlah: = htmlspecialchars($b['jumlah_bantuan'] ?? '-') ?>
+
π
= formatTanggal($b['tanggal_bantuan']) ?>
+
+
π = htmlspecialchars($b['keterangan']) ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/cek_env.php b/cek_env.php
index f183bd8..24c0c9b 100644
--- a/cek_env.php
+++ b/cek_env.php
@@ -1,10 +1,9 @@
";
-echo "DB_HOST = " . (getenv('DB_HOST') ?: '(kosong)') . "\n";
-echo "DB_PORT = " . (getenv('DB_PORT') ?: '(kosong)') . "\n";
-echo "DB_NAME = " . (getenv('DB_NAME') ?: '(kosong)') . "\n";
-echo "DB_USER = " . (getenv('DB_USER') ?: '(kosong)') . "\n";
-echo "DB_PASS = " . (getenv('DB_PASS') ? 'TERISI' : '(kosong)') . "\n";
-echo "";
+header('Content-Type: text/plain; charset=utf-8');
+echo "DB_HOST=" . (getenv('DB_HOST') ?: '(kosong)') . "\n";
+echo "DB_PORT=" . (getenv('DB_PORT') ?: '(kosong)') . "\n";
+echo "DB_NAME=" . (getenv('DB_NAME') ?: '(kosong)') . "\n";
+echo "DB_USER=" . (getenv('DB_USER') ?: '(kosong)') . "\n";
+echo "DB_PASS=" . (getenv('DB_PASS') ? 'TERISI' : '(kosong)') . "\n";
+echo "DB_PASSWORD=" . (getenv('DB_PASSWORD') ? 'TERISI' : '(kosong)') . "\n";
?>
diff --git a/database.sql b/database.sql
index 5f3fed3..6c52244 100644
--- a/database.sql
+++ b/database.sql
@@ -1,5 +1,9 @@
--- Database UAS WebGIS Kemiskinan Tania
--- Cocok untuk Coolify. Database dibuat dari Initial Database, jadi tidak perlu CREATE DATABASE.
+-- ==========================================================
+-- Database WebGIS Kemiskinan Pontianak
+-- Untuk Coolify: gunakan database aktif dari resource MySQL/MariaDB.
+-- Tidak memakai CREATE DATABASE dan USE agar tidak nyasar database.
+-- Akun admin demo: admin / password
+-- ==========================================================
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS bantuan;
@@ -12,37 +16,42 @@ CREATE TABLE admin (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(100) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
- nama_lengkap VARCHAR(150) DEFAULT 'Administrator',
+ nama VARCHAR(150) DEFAULT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE rumah_ibadah (
id INT AUTO_INCREMENT PRIMARY KEY,
nama_rumah_ibadah VARCHAR(150) NOT NULL,
- alamat TEXT,
+ alamat TEXT DEFAULT NULL,
lat DOUBLE NOT NULL,
lng DOUBLE NOT NULL,
jenis_rumah_ibadah ENUM('masjid','gereja') DEFAULT 'masjid',
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE penduduk_miskin (
id INT AUTO_INCREMENT PRIMARY KEY,
nama VARCHAR(150) NOT NULL,
- nik VARCHAR(30) DEFAULT NULL,
- alamat TEXT,
- pekerjaan VARCHAR(100) DEFAULT NULL,
- penghasilan INT DEFAULT 0,
+ nik VARCHAR(32) DEFAULT NULL,
+ alamat TEXT DEFAULT NULL,
+ pekerjaan VARCHAR(120) DEFAULT NULL,
+ penghasilan BIGINT DEFAULT 0,
jumlah_anggota_keluarga INT DEFAULT 1,
jumlah_tanggungan INT DEFAULT 0,
- kategori_kemiskinan ENUM('Miskin','Miskin Ekstrem','Hampir Miskin') DEFAULT 'Miskin',
- status_bantuan ENUM('Belum','Pernah','Sedang') DEFAULT 'Belum',
- keterangan TEXT,
+ kategori_kemiskinan ENUM('Miskin Ekstrem','Miskin','Hampir Miskin') DEFAULT 'Miskin',
+ status_bantuan ENUM('Belum','Sedang','Pernah') DEFAULT 'Belum',
+ keterangan TEXT DEFAULT NULL,
foto VARCHAR(255) DEFAULT NULL,
lat DOUBLE NOT NULL,
lng DOUBLE NOT NULL,
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ INDEX idx_nik (nik),
+ INDEX idx_status_bantuan (status_bantuan),
+ INDEX idx_kategori (kategori_kemiskinan)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE bantuan (
id INT AUTO_INCREMENT PRIMARY KEY,
@@ -50,28 +59,31 @@ CREATE TABLE bantuan (
jenis_bantuan VARCHAR(100) NOT NULL,
jumlah_bantuan VARCHAR(100) DEFAULT NULL,
tanggal_bantuan DATE NOT NULL,
- keterangan TEXT,
+ keterangan TEXT DEFAULT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT fk_bantuan_penduduk
FOREIGN KEY (penduduk_id) REFERENCES penduduk_miskin(id)
- ON DELETE SET NULL ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+ ON DELETE SET NULL,
+ INDEX idx_tanggal_bantuan (tanggal_bantuan),
+ INDEX idx_jenis_bantuan (jenis_bantuan)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-INSERT INTO admin (username, password, nama_lengkap) VALUES
+INSERT INTO admin (username, password, nama) VALUES
('admin', 'password', 'Administrator');
INSERT INTO rumah_ibadah (nama_rumah_ibadah, alamat, lat, lng, jenis_rumah_ibadah) VALUES
-('Masjid Raya Mujahidin', 'Jl. Jenderal Ahmad Yani, Pontianak', -0.042338, 109.343906, 'masjid'),
-('Masjid Jami Sultan Syarif Abdurrahman', 'Kampung Beting, Pontianak Timur', -0.021844, 109.351909, 'masjid'),
-('Gereja Katedral Santo Yosef', 'Jl. Pattimura, Pontianak', -0.027104, 109.342337, 'gereja'),
-('Gereja HKBP Pontianak', 'Pontianak Kota', -0.033862, 109.333546, 'gereja');
+('Masjid Raya Mujahidin', 'Jl. Jenderal Ahmad Yani, Pontianak', -0.05539, 109.34651, 'masjid'),
+('Masjid Jami Sultan Syarif Abdurrahman', 'Pontianak Timur, Kota Pontianak', -0.02386, 109.34458, 'masjid'),
+('Gereja Katedral Santo Yosef', 'Jl. Pattimura, Pontianak', -0.03195, 109.33988, 'gereja'),
+('Gereja HKBP Pontianak', 'Pontianak Kota, Kota Pontianak', -0.04590, 109.33310, 'gereja');
INSERT INTO penduduk_miskin
(nama, nik, alamat, pekerjaan, penghasilan, jumlah_anggota_keluarga, jumlah_tanggungan, kategori_kemiskinan, status_bantuan, keterangan, foto, lat, lng) VALUES
-('Ahmad Supriadi', '6171010101010001', 'Pontianak Kota', 'Buruh Harian', 900000, 5, 3, 'Miskin', 'Belum', 'Membutuhkan bantuan sembako', '', -0.030500, 109.336200),
-('Siti Aminah', '6171010101010002', 'Pontianak Barat', 'Ibu Rumah Tangga', 650000, 4, 2, 'Miskin Ekstrem', 'Sedang', 'Prioritas bantuan pangan', '', -0.025800, 109.315900),
-('Budi Santoso', '6171010101010003', 'Pontianak Timur', 'Nelayan', 1100000, 6, 4, 'Hampir Miskin', 'Pernah', 'Butuh bantuan modal usaha', '', -0.018900, 109.366800);
+('Budi Santoso', '6171010101010001', 'Pontianak Kota', 'Buruh harian', 800000, 5, 4, 'Miskin', 'Pernah', 'Data dummy untuk testing sistem', '', -0.04120, 109.32100),
+('Siti Aminah', '6171010101010002', 'Pontianak Selatan', 'Pedagang kecil', 650000, 4, 3, 'Miskin Ekstrem', 'Belum', 'Prioritas bantuan', '', -0.05500, 109.34500),
+('Rahmat Hidayat', '6171010101010003', 'Pontianak Utara', 'Pekerja tidak tetap', 900000, 6, 5, 'Miskin', 'Sedang', 'Masih dalam proses pendataan', '', -0.00600, 109.33000),
+('Marlina', '6171010101010004', 'Pontianak Barat', 'Ibu rumah tangga', 500000, 3, 2, 'Hampir Miskin', 'Belum', 'Data dummy wilayah Pontianak Barat', '', -0.02000, 109.29500);
INSERT INTO bantuan (penduduk_id, jenis_bantuan, jumlah_bantuan, tanggal_bantuan, keterangan) VALUES
-(2, 'Sembako', '1 paket', CURDATE(), 'Bantuan awal'),
-(3, 'Uang Tunai', 'Rp 300.000', CURDATE(), 'Bantuan sosial');
+(1, 'Sembako', '1 paket', CURDATE(), 'Bantuan sembako bulanan'),
+(3, 'Beras', '10 kg', CURDATE(), 'Bantuan beras untuk keluarga penerima manfaat');