query("SELECT id, nama, latitude, longitude FROM rumah_ibadah ORDER BY created_at DESC"); if (!$result || $result->num_rows === 0) { return null; } $nearest = null; while ($row = $result->fetch_assoc()) { $distance = distanceMeters($lat, $lng, (float)$row['latitude'], (float)$row['longitude']); if ($nearest === null || $distance < $nearest['distance']) { $nearest = [ 'id' => (int)$row['id'], 'nama' => $row['nama'], 'distance' => $distance ]; } } return $nearest; } if ($_SERVER['REQUEST_METHOD'] === 'POST') { $id = (int)($_POST['id'] ?? 0); $namaKetuaKk = trim($_POST['nama_ketua_kk'] ?? ''); $jumlahAnggota = (int)($_POST['jumlah_anggota'] ?? 0); $lat = $_POST['latitude'] ?? null; $lng = $_POST['longitude'] ?? null; $rumahIbadahId = $_POST['rumah_ibadah_id'] ?? null; $rumahIbadahNama = trim($_POST['rumah_ibadah_nama'] ?? ''); $jarak = $_POST['jarak_ke_rumah_ibadah_m'] ?? null; if ($id <= 0 || $namaKetuaKk === '' || $jumlahAnggota <= 0 || $lat === null || $lng === null) { echo json_encode(['status' => 'error', 'message' => 'Data penduduk miskin tidak lengkap']); $conn->close(); exit; } $lat = (float)$lat; $lng = (float)$lng; $nearest = findNearestRumahIbadah($conn, $lat, $lng); if (!$nearest) { echo json_encode(['status' => 'error', 'message' => 'Tambahkan rumah ibadah terlebih dahulu']); $conn->close(); exit; } $jarak = $nearest['distance']; $rumahIbadahId = $nearest['id']; $rumahIbadahNama = $nearest['nama']; $stmt = $conn->prepare("UPDATE penduduk_miskin SET nama_ketua_kk = ?, jumlah_anggota = ?, latitude = ?, longitude = ?, rumah_ibadah_id = ?, rumah_ibadah_nama = ?, jarak_ke_rumah_ibadah_m = ? WHERE id = ?"); $stmt->bind_param("siddisdi", $namaKetuaKk, $jumlahAnggota, $lat, $lng, $rumahIbadahId, $rumahIbadahNama, $jarak, $id); if ($stmt->execute()) { echo json_encode(['status' => 'success', 'message' => 'Data penduduk miskin berhasil diperbarui']); } else { echo json_encode(['status' => 'error', 'message' => $stmt->error]); } $stmt->close(); } $conn->close(); ?>