prepare("DELETE FROM penduduk WHERE nik=:nik")->execute([':nik'=>$nik]); logAktivitas($pdo, (int)$_SESSION['user_id'], 'DELETE', 'penduduk', $nik); $msg = "Penduduk NIK $nik dihapus."; } catch(Exception $e) { $err = $e->getMessage(); } } // SAVE if ($canEdit && isset($_POST['save'])) { $nik = trim($_POST['nik'] ?? ''); $nama = trim($_POST['nama_lengkap'] ?? ''); $tgl = $_POST['tanggal_lahir'] ?? ''; $nikEdit = $_POST['nik_edit'] ?? ''; if (!preg_match('/^\d{16}$/', $nik)) $err = 'NIK harus 16 digit.'; elseif (strlen($nama) < 3) $err = 'Nama terlalu pendek.'; else { try { $data = [ ':kk'=>$_POST['id_keluarga']?:(null), ':nama'=>$nama, ':jk'=>$_POST['jenis_kelamin']??'L', ':tgl'=>$tgl, ':sk'=>$_POST['status_keluarga']??'anggota_lain', ':sp'=>$_POST['status_perkawinan']??'belum_kawin', ':sh'=>$_POST['status_hidup']??'hidup', ':ptk'=>$_POST['pendidikan_terakhir']??'tidak_sekolah', ':spd'=>$_POST['status_pendidikan']??'tidak_sekolah', ':pkr'=>$_POST['pekerjaan']??'' ?: null, ':pgn'=>(float)($_POST['penghasilan']??0), ':se'=>$_POST['status_ekonomi']??'rentan', ':kkh'=>$_POST['kondisi_kesehatan']??'sehat', ':ckkh'=>$_POST['catatan_kesehatan']??'' ?: null, ':tlp'=>$_POST['no_telp']??'' ?: null, ':almt'=>$_POST['alamat']??'' ?: null, ':lat'=>$_POST['latitude']??'' ?: null, ':lng'=>$_POST['longitude']??'' ?: null, ]; if ($nikEdit) { $data[':nik'] = $nikEdit; $pdo->prepare("UPDATE penduduk SET id_keluarga=:kk,nama_lengkap=:nama,jenis_kelamin=:jk,tanggal_lahir=:tgl, status_keluarga=:sk,status_perkawinan=:sp,status_hidup=:sh,pendidikan_terakhir=:ptk,status_pendidikan=:spd, pekerjaan=:pkr,penghasilan=:pgn,status_ekonomi=:se,kondisi_kesehatan=:kkh,catatan_kesehatan=:ckkh, no_telp=:tlp,alamat=:almt,latitude=:lat,longitude=:lng WHERE nik=:nik")->execute($data); $msg = "Data penduduk $nama diperbarui."; } else { $data[':nik'] = $nik; $pdo->prepare("INSERT INTO penduduk (nik,id_keluarga,nama_lengkap,jenis_kelamin,tanggal_lahir, status_keluarga,status_perkawinan,status_hidup,pendidikan_terakhir,status_pendidikan, pekerjaan,penghasilan,status_ekonomi,kondisi_kesehatan,catatan_kesehatan,no_telp,alamat,latitude,longitude) VALUES(:nik,:kk,:nama,:jk,:tgl,:sk,:sp,:sh,:ptk,:spd,:pkr,:pgn,:se,:kkh,:ckkh,:tlp,:almt,:lat,:lng)")->execute($data); $msg = "Penduduk $nama berhasil ditambahkan."; } logAktivitas($pdo, (int)$_SESSION['user_id'], $nikEdit?'UPDATE':'CREATE', 'penduduk', $nik); } catch(Exception $e) { $err = $e->getMessage(); } } } $edit = null; if (isset($_GET['edit'])) { $stmt = $pdo->prepare("SELECT * FROM penduduk WHERE nik=:nik"); $stmt->execute([':nik'=>$_GET['edit']]); $edit = $stmt->fetch() ?: null; } // List penduduk $search = trim($_GET['s'] ?? ''); $se = $_GET['se'] ?? ''; $where = []; $params = []; if ($search) { $where[] = '(p.nama_lengkap LIKE :q OR p.nik LIKE :q2)'; $params[':q']='%'.$search.'%'; $params[':q2']='%'.$search.'%'; } if ($se) { $where[] = 'p.status_ekonomi=:se'; $params[':se']=$se; } $whereStr = $where ? 'WHERE '.implode(' AND ',$where) : ''; $rows = $pdo->prepare(" SELECT p.nik,p.nama_lengkap,p.umur,p.jenis_kelamin,p.status_ekonomi,p.kondisi_kesehatan, p.pekerjaan,p.status_hidup,k.no_kk,ri.nama AS nama_ri, (SELECT COUNT(*) FROM histori_bantuan hb WHERE hb.nik=p.nik AND hb.status_penyaluran='disalurkan') AS jml_bantuan FROM penduduk p LEFT JOIN keluarga k ON k.id=p.id_keluarga LEFT JOIN rumah_ibadah ri ON ri.id=k.rumah_ibadah_id $whereStr ORDER BY CASE p.status_ekonomi WHEN 'miskin' THEN 1 WHEN 'rentan' THEN 2 ELSE 3 END, p.nama_lengkap LIMIT 300 "); $rows->execute($params); $rows = $rows->fetchAll(); // Keluarga untuk dropdown $kkList = $pdo->query("SELECT id, no_kk, nama_kk FROM keluarga ORDER BY nama_kk")->fetchAll(); render_header('Manajemen Penduduk'); ?>
👥 Manajemen Penduduk
>
Batal
Reset
data
NIKNamaUmur/JKStatus EkonomiKesehatanBantuanRumah IbadahAksi
†meninggal':'' ?> th / 0 ? "✅ {$r['jml_bantuan']}x" : "⚠️ Belum" ?> Edit Bantu Hapus
Tidak ada data