From 84b5db87ecf4f46d9bbc4146bc3b2d5de294dd8e Mon Sep 17 00:00:00 2001 From: TiaraChontesa Date: Wed, 10 Jun 2026 08:57:37 +0000 Subject: [PATCH] Upload files to "Tugas4" --- Tugas4/index.php | 1100 ++++++++++++++++++++++++++++++++++++++++++++ Tugas4/koneksi.php | 18 + Tugas4/proses.php | 235 ++++++++++ 3 files changed, 1353 insertions(+) create mode 100644 Tugas4/index.php create mode 100644 Tugas4/koneksi.php create mode 100644 Tugas4/proses.php diff --git a/Tugas4/index.php b/Tugas4/index.php new file mode 100644 index 0000000..3dd2260 --- /dev/null +++ b/Tugas4/index.php @@ -0,0 +1,1100 @@ + + + + + + WebGIS Poverty Mapping — Sistem Geospasial Pengentasan Kemiskinan + + + + + + + + +
+
+
🗺️
+

WebGIS Poverty Mapping

+

Sistem Geospasial Pengentasan Kemiskinan Berbasis Partisipasi Masyarakat
Pilih peran Anda untuk melanjutkan

+
+
+
🙋
+
Relawan
+
Surveyor lapangan — mendata rumah warga miskin
+
+
+
🕌
+
Pengurus
+
Operator rumah ibadah — kelola titik & radius bantuan
+
+
+
🏛️
+
Pemerintah
+
Dinsos / eksekutif — pantau & analisis data
+
+
+
+
+ + +
+
+ 📍 +
+ WebGIS Poverty Mapping + Universitas Tanjungpura +
+
+ + + +
+ + + + + + +
+ + + + + +
+ + +
+

Legenda

+
Rumah Ibadah
+
Radius Bantuan
+
KPM Terjangkau
+
KPM Blank Spot
+
+ + + + + +
+ + + + + + \ No newline at end of file diff --git a/Tugas4/koneksi.php b/Tugas4/koneksi.php new file mode 100644 index 0000000..f692127 --- /dev/null +++ b/Tugas4/koneksi.php @@ -0,0 +1,18 @@ +connect_error) { + http_response_code(500); + die(json_encode([ + 'status' => 'error', + 'message' => 'Koneksi database gagal: ' . $conn->connect_error + ])); +} + +$conn->set_charset('utf8mb4'); \ No newline at end of file diff --git a/Tugas4/proses.php b/Tugas4/proses.php new file mode 100644 index 0000000..90a5962 --- /dev/null +++ b/Tugas4/proses.php @@ -0,0 +1,235 @@ +real_escape_string(htmlspecialchars(strip_tags(trim($str)))); +} + +$aksi = $_REQUEST['aksi'] ?? ''; + +switch ($aksi) { + + // ════════════════════════════════════════════════════════ + // TAMPIL SEMUA — GET + // ════════════════════════════════════════════════════════ + case 'tampil_semua': + $ibadah = []; + $miskin = []; + + $ri = $conn->query("SELECT * FROM rumah_ibadah ORDER BY id ASC"); + while ($row = $ri->fetch_assoc()) $ibadah[] = $row; + + $rm = $conn->query("SELECT * FROM rumah_miskin ORDER BY id ASC"); + while ($row = $rm->fetch_assoc()) $miskin[] = $row; + + echo json_encode(['status' => 'ok', 'ibadah' => $ibadah, 'miskin' => $miskin]); + break; + + // ════════════════════════════════════════════════════════ + // STATISTIK RINGKAS — GET + // ════════════════════════════════════════════════════════ + case 'statistik': + $stats = []; + + $r = $conn->query("SELECT COUNT(*) AS total FROM rumah_ibadah"); + $stats['total_ibadah'] = (int)$r->fetch_assoc()['total']; + + $r = $conn->query("SELECT COUNT(*) AS total FROM rumah_miskin"); + $stats['total_miskin'] = (int)$r->fetch_assoc()['total']; + + $r = $conn->query("SELECT COUNT(*) AS total FROM rumah_miskin WHERE status_bantuan='Terjangkau'"); + $stats['terjangkau'] = (int)$r->fetch_assoc()['total']; + + $r = $conn->query("SELECT COUNT(*) AS total FROM rumah_miskin WHERE status_bantuan='Belum Terbantu'"); + $stats['blank_spot'] = (int)$r->fetch_assoc()['total']; + + $r = $conn->query("SELECT SUM(kuota_bantuan) AS total FROM rumah_ibadah"); + $stats['total_kuota'] = (int)$r->fetch_assoc()['total']; + + echo json_encode(['status' => 'ok', 'data' => $stats]); + break; + + // ════════════════════════════════════════════════════════ + // SIMPAN RUMAH IBADAH — POST + // ════════════════════════════════════════════════════════ + case 'simpan_ibadah': + $nama = bersih($_POST['nama_ibadah'] ?? '', $conn); + $kategori = bersih($_POST['kategori'] ?? 'Masjid', $conn); + $alamat = bersih($_POST['alamat'] ?? '', $conn); + $pengurus = bersih($_POST['nama_pengurus'] ?? '', $conn); + $telp = bersih($_POST['no_telp'] ?? '', $conn); + $kuota = (int)($_POST['kuota_bantuan'] ?? 20); + $radius = (int)($_POST['radius_m'] ?? 300); + $lat = (float)($_POST['lat'] ?? 0); + $lng = (float)($_POST['lng'] ?? 0); + + if (!$nama || !$lat || !$lng) { + echo json_encode(['status' => 'error', 'message' => 'Data tidak lengkap']); + break; + } + + $sql = "INSERT INTO rumah_ibadah + (nama_ibadah, kategori, alamat, nama_pengurus, no_telp, kuota_bantuan, radius_m, lat, lng) + VALUES ('$nama','$kategori','$alamat','$pengurus','$telp',$kuota,$radius,$lat,$lng)"; + + if ($conn->query($sql)) { + echo json_encode(['status' => 'ok', 'id' => $conn->insert_id, 'message' => 'Rumah ibadah berhasil disimpan']); + } else { + echo json_encode(['status' => 'error', 'message' => $conn->error]); + } + break; + + // ════════════════════════════════════════════════════════ + // SIMPAN RUMAH MISKIN (KPM) — POST + // ════════════════════════════════════════════════════════ + case 'simpan_miskin': + $nama = bersih($_POST['nama_kk'] ?? '', $conn); + $nik = bersih($_POST['nik'] ?? '', $conn); + $tanggungan = (int)($_POST['jumlah_tanggungan'] ?? 0); + $pendapatan = (int)($_POST['pendapatan_bulanan'] ?? 0); + $kondisi = bersih($_POST['kondisi_rumah'] ?? 'Tidak Layak', $conn); + $telp = bersih($_POST['no_telp'] ?? '', $conn); + $ket = bersih($_POST['keterangan'] ?? '', $conn); + $lat = (float)($_POST['lat'] ?? 0); + $lng = (float)($_POST['lng'] ?? 0); + + if (!$nama || !$lat || !$lng) { + echo json_encode(['status' => 'error', 'message' => 'Data tidak lengkap']); + break; + } + + $sql = "INSERT INTO rumah_miskin + (nama_kepala_keluarga, nik, jumlah_tanggungan, pendapatan_bulanan, + kondisi_rumah, no_telp, keterangan, lat, lng) + VALUES ('$nama','$nik',$tanggungan,$pendapatan,'$kondisi','$telp','$ket',$lat,$lng)"; + + if ($conn->query($sql)) { + echo json_encode(['status' => 'ok', 'id' => $conn->insert_id, 'message' => 'Data KPM berhasil disimpan']); + } else { + echo json_encode(['status' => 'error', 'message' => $conn->error]); + } + break; + + // ════════════════════════════════════════════════════════ + // UPDATE RADIUS IBADAH — POST + // ════════════════════════════════════════════════════════ + case 'update_radius': + $id = (int)($_POST['id'] ?? 0); + $radius = (int)($_POST['radius'] ?? 300); + + if (!$id) { echo json_encode(['status' => 'error', 'message' => 'ID tidak valid']); break; } + + $conn->query("UPDATE rumah_ibadah SET radius_m=$radius WHERE id=$id"); + echo json_encode(['status' => 'ok']); + break; + + // ════════════════════════════════════════════════════════ + // UPDATE KOORDINAT (DRAG) — POST + // ════════════════════════════════════════════════════════ + case 'update_coords': + $jenis = bersih($_POST['jenis'] ?? '', $conn); + $id = (int)($_POST['id'] ?? 0); + $lat = (float)($_POST['lat'] ?? 0); + $lng = (float)($_POST['lng'] ?? 0); + + $table = ($jenis === 'ibadah') ? 'rumah_ibadah' : 'rumah_miskin'; + $conn->query("UPDATE $table SET lat=$lat, lng=$lng WHERE id=$id"); + echo json_encode(['status' => 'ok']); + break; + + // ════════════════════════════════════════════════════════ + // UPDATE STATUS BANTUAN MASSAL — POST + // Dipanggil setelah kalkulasi radius di frontend + // ════════════════════════════════════════════════════════ + case 'update_status_bantuan': + $updates = json_decode(file_get_contents('php://input'), true); + if (!is_array($updates)) { echo json_encode(['status' => 'error']); break; } + + foreach ($updates as $item) { + $id = (int)$item['id']; + $status = bersih($item['status'], $conn); + $conn->query("UPDATE rumah_miskin SET status_bantuan='$status' WHERE id=$id"); + } + echo json_encode(['status' => 'ok']); + break; + + // ════════════════════════════════════════════════════════ + // EDIT RUMAH IBADAH — POST + // ════════════════════════════════════════════════════════ + case 'edit_ibadah': + $id = (int)($_POST['id'] ?? 0); + $nama = bersih($_POST['nama_ibadah'] ?? '', $conn); + $kategori = bersih($_POST['kategori'] ?? '', $conn); + $alamat = bersih($_POST['alamat'] ?? '', $conn); + $pengurus = bersih($_POST['nama_pengurus'] ?? '', $conn); + $telp = bersih($_POST['no_telp'] ?? '', $conn); + $kuota = (int)($_POST['kuota_bantuan'] ?? 20); + + if (!$id || !$nama) { echo json_encode(['status' => 'error', 'message' => 'Data tidak lengkap']); break; } + + $sql = "UPDATE rumah_ibadah SET + nama_ibadah='$nama', kategori='$kategori', alamat='$alamat', + nama_pengurus='$pengurus', no_telp='$telp', kuota_bantuan=$kuota + WHERE id=$id"; + + $conn->query($sql); + echo json_encode(['status' => 'ok', 'message' => 'Data rumah ibadah diperbarui']); + break; + + // ════════════════════════════════════════════════════════ + // EDIT RUMAH MISKIN — POST + // ════════════════════════════════════════════════════════ + case 'edit_miskin': + $id = (int)($_POST['id'] ?? 0); + $nama = bersih($_POST['nama_kk'] ?? '', $conn); + $nik = bersih($_POST['nik'] ?? '', $conn); + $tanggungan = (int)($_POST['jumlah_tanggungan'] ?? 0); + $pendapatan = (int)($_POST['pendapatan_bulanan']?? 0); + $kondisi = bersih($_POST['kondisi_rumah'] ?? '', $conn); + $telp = bersih($_POST['no_telp'] ?? '', $conn); + $ket = bersih($_POST['keterangan'] ?? '', $conn); + + if (!$id || !$nama) { echo json_encode(['status' => 'error', 'message' => 'Data tidak lengkap']); break; } + + $sql = "UPDATE rumah_miskin SET + nama_kepala_keluarga='$nama', nik='$nik', jumlah_tanggungan=$tanggungan, + pendapatan_bulanan=$pendapatan, kondisi_rumah='$kondisi', + no_telp='$telp', keterangan='$ket' + WHERE id=$id"; + + $conn->query($sql); + echo json_encode(['status' => 'ok', 'message' => 'Data KPM diperbarui']); + break; + + // ════════════════════════════════════════════════════════ + // HAPUS DATA — POST + // ════════════════════════════════════════════════════════ + case 'hapus': + $jenis = bersih($_POST['jenis'] ?? '', $conn); + $id = (int)($_POST['id'] ?? 0); + + if (!$id) { echo json_encode(['status' => 'error', 'message' => 'ID tidak valid']); break; } + + $table = ($jenis === 'ibadah') ? 'rumah_ibadah' : 'rumah_miskin'; + $conn->query("DELETE FROM $table WHERE id=$id"); + echo json_encode(['status' => 'ok', 'message' => 'Data berhasil dihapus']); + break; + + // ════════════════════════════════════════════════════════ + // DEFAULT + // ════════════════════════════════════════════════════════ + default: + echo json_encode(['status' => 'error', 'message' => 'Aksi tidak dikenal: ' . $aksi]); + break; +} + +$conn->close(); \ No newline at end of file