= 70';
} elseif ($priority === 'sedang') {
$where[] = 'p.skor_prioritas BETWEEN 40 AND 69';
} elseif ($priority === 'rendah') {
$where[] = 'p.skor_prioritas < 40';
}
$sql = "
SELECT p.*, r.nama AS rumah_ibadah_nama
FROM penduduk_miskin p
LEFT JOIN rumah_ibadah r ON p.ibadah_id = r.id
";
if ($where) {
$sql .= ' WHERE ' . implode(' AND ', $where);
}
$sql .= ' ORDER BY p.skor_prioritas DESC, p.id DESC';
$stmt = $pdo->prepare($sql);
$stmt->execute($params);
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
$summary = [
'total' => count($rows),
'tinggi' => count(array_filter($rows, fn($r) => (int)$r['skor_prioritas'] >= 70)),
'belum' => count(array_filter($rows, fn($r) => $r['status_bantuan'] === 'Belum dibantu')),
'luar' => count(array_filter($rows, fn($r) => (int)$r['is_blank_spot'] === 1)),
];
function e(?string $value): string
{
return htmlspecialchars((string)$value, ENT_QUOTES, 'UTF-8');
}
?>
Total Data= $summary['total'] ?>
Prioritas Tinggi= $summary['tinggi'] ?>
Belum Dibantu= $summary['belum'] ?>
Luar Radius= $summary['luar'] ?>
Keterangan: Skor prioritas dihitung dari status bantuan, jumlah tanggungan, lansia/balita,
penghasilan, kondisi rumah, kebutuhan mendesak, dan posisi terhadap radius layanan.
| No |
Kepala Keluarga |
Prioritas |
Kebutuhan |
Status |
Tindak Lanjut |
Rumah Ibadah |
Jarak |
Catatan |
$row): ?>
| = $i + 1 ?> |
= e($row['kk_nama']) ?>
= e($row['alamat']) ?>
|
= (int)$row['skor_prioritas'] ?>
= e(getPriorityLabel((int)$row['skor_prioritas'])) ?>
|
= e($row['kategori_kebutuhan'] ?: 'Belum diisi') ?> |
= e($row['status_bantuan']) ?> |
= e($row['tindak_lanjut'] ?: 'Belum disurvei') ?> |
= e($row['rumah_ibadah_nama'] ?: '-') ?> |
Lurus: = e((string)$row['jarak_m']) ?> m
Rute: = e((string)($row['jarak_rute_m'] ?? '-')) ?> m
|
= e($row['catatan_survei'] ?: $row['deskripsi_kebutuhan'] ?: '-') ?> |
| Tidak ada data sesuai filter. |