commit 46d9a9d1a03bf2aba4c662bdf3a83e5edb316af4 Author: Qohh Date: Fri Jun 12 12:00:12 2026 +0700 Initial commit diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b0d1547 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM php:8.2-apache + +RUN docker-php-ext-install mysqli pdo pdo_mysql + +RUN a2enmod rewrite + +COPY . /var/www/html/ + +RUN chown -R www-data:www-data /var/www/html + +EXPOSE 80 \ No newline at end of file diff --git a/ambil.php b/ambil.php new file mode 100644 index 0000000..ede5868 --- /dev/null +++ b/ambil.php @@ -0,0 +1,21 @@ + (int)$row['id'], + "jenis" => $row['jenis'], + "nama" => $row['nama'] ?? '', + "lat" => (float)$row['lat'], + "lng" => (float)$row['lng'], + "radius" => (int)$row['radius'], + "alamat" => $row['alamat'] ?? '' + ]; +} + +echo json_encode($data); +mysqli_close($koneksi); \ No newline at end of file diff --git a/ambil_rumah.php b/ambil_rumah.php new file mode 100644 index 0000000..a57f384 --- /dev/null +++ b/ambil_rumah.php @@ -0,0 +1,38 @@ + (int)$row['id'], + "lat" => (float)$row['lat'], + "lng" => (float)$row['lng'], + "status" => $row['status'], + "alamat" => $row['alamat'] ?? '', + "nik" => $row['nik'] ?? '', + "nama" => $row['nama'] ?? '', + "ttl" => $row['ttl'] ?? '', + "pendidikan" => $row['pendidikan'] ?? '', + ]; + } else { + // Guest / user biasa: nama, NIK, alamat, status + $data[] = [ + "id" => (int)$row['id'], + "lat" => (float)$row['lat'], + "lng" => (float)$row['lng'], + "status" => $row['status'], + "alamat" => $row['alamat'] ?? '', + "nik" => $row['nik'] ?? '', + "nama" => $row['nama'] ?? '', + ]; + } +} + +echo json_encode($data); +mysqli_close($koneksi); \ No newline at end of file diff --git a/auth.php b/auth.php new file mode 100644 index 0000000..144ad10 --- /dev/null +++ b/auth.php @@ -0,0 +1,24 @@ + "error", "message" => "Forbidden: admin only"]); + exit; + } +} \ No newline at end of file diff --git a/config.php b/config.php new file mode 100644 index 0000000..1bbb305 --- /dev/null +++ b/config.php @@ -0,0 +1,13 @@ + \ No newline at end of file diff --git a/edit.php b/edit.php new file mode 100644 index 0000000..458fb39 --- /dev/null +++ b/edit.php @@ -0,0 +1,33 @@ + "error", "message" => "ID tidak valid"]); + exit; +} + +if (isset($_POST['_only_radius'])) { + $stmt = mysqli_prepare($koneksi, "UPDATE tempat_ibadah SET radius=? WHERE id=?"); + mysqli_stmt_bind_param($stmt, "ii", $radius, $id); +} else { + $jenis = $_POST['jenis'] ?? ''; + $nama = $_POST['nama'] ?? ''; + $stmt = mysqli_prepare($koneksi, + "UPDATE tempat_ibadah SET jenis=?, nama=?, radius=? WHERE id=?" + ); + mysqli_stmt_bind_param($stmt, "ssii", $jenis, $nama, $radius, $id); +} + +if (mysqli_stmt_execute($stmt)) { + echo json_encode(["status" => "success"]); +} else { + echo json_encode(["status" => "error", "message" => mysqli_error($koneksi)]); +} + +mysqli_close($koneksi); \ No newline at end of file diff --git a/edit_rumah.php b/edit_rumah.php new file mode 100644 index 0000000..eddf3eb --- /dev/null +++ b/edit_rumah.php @@ -0,0 +1,35 @@ + "error", "message" => "ID tidak valid"]); + exit; +} + +if (!in_array($status, ['miskin', 'tidak_miskin'])) { + echo json_encode(["status" => "error", "message" => "Status tidak valid"]); + exit; +} + +$stmt = mysqli_prepare($koneksi, + "UPDATE rumah SET status=?, nik=?, nama=?, ttl=?, pendidikan=? WHERE id=?" +); +mysqli_stmt_bind_param($stmt, "sssssi", $status, $nik, $nama, $ttl, $pendidikan, $id); + +if (mysqli_stmt_execute($stmt)) { + echo json_encode(["status" => "success"]); +} else { + echo json_encode(["status" => "error", "message" => mysqli_error($koneksi)]); +} + +mysqli_close($koneksi); \ No newline at end of file diff --git a/gis_kemiskinan.sql b/gis_kemiskinan.sql new file mode 100644 index 0000000..75cac95 --- /dev/null +++ b/gis_kemiskinan.sql @@ -0,0 +1,163 @@ +-- phpMyAdmin SQL Dump +-- version 5.2.1 +-- https://www.phpmyadmin.net/ +-- +-- Host: 127.0.0.1:3307 +-- Waktu pembuatan: 11 Jun 2026 pada 12.35 +-- Versi server: 10.4.32-MariaDB +-- Versi PHP: 8.2.12 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +START TRANSACTION; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; + +-- +-- Database: `gis_kemiskinan` +-- + +-- -------------------------------------------------------- + +-- +-- Struktur dari tabel `rumah` +-- + +CREATE TABLE `rumah` ( + `id` int(11) NOT NULL, + `lat` double NOT NULL, + `lng` double NOT NULL, + `status` enum('miskin','tidak_miskin') DEFAULT 'miskin', + `alamat` text DEFAULT NULL, + `nik` varchar(16) DEFAULT '', + `nama` varchar(100) DEFAULT '', + `ttl` varchar(100) DEFAULT '', + `pendidikan` varchar(50) DEFAULT '' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- +-- Dumping data untuk tabel `rumah` +-- + +INSERT INTO `rumah` (`id`, `lat`, `lng`, `status`, `alamat`, `nik`, `nama`, `ttl`, `pendidikan`) VALUES +(2, -0.024156202282737894, 109.32903081178668, 'miskin', 'Gang Bayan, Tengah, Pontianak Kota, Pontianak, West Kalimantan, Kalimantan, 78244, Indonesia', '', '', '', ''), +(3, -0.024164252873410178, 109.32896912097931, 'miskin', 'Gang Bayan, Tengah, Pontianak Kota, Pontianak, West Kalimantan, Kalimantan, 78244, Indonesia', '', '', '', ''), +(4, -0.02418035405476747, 109.32888865470888, 'tidak_miskin', 'Gang Bayan, Tengah, Pontianak Kota, Pontianak, West Kalimantan, Kalimantan, 78244, Indonesia', '', '', '', ''), +(5, -0.024306479975143014, 109.32889670133592, 'miskin', 'Gang Belibis, Tengah, Pontianak Kota, Pontianak, West Kalimantan, Kalimantan, 78244, Indonesia', '', '', '', ''), +(6, -0.024523845922785795, 109.32900398969652, 'tidak_miskin', 'Gang Belibis, Tengah, Pontianak Kota, Pontianak, West Kalimantan, Kalimantan, 78244, Indonesia', '', '', '', ''), +(8, -0.03882407834072974, 109.33314800262453, 'miskin', 'Jalan Ahmad Marzuki, Akcaya, Pontianak Selatan, Pontianak, West Kalimantan, Kalimantan, 78117, Indonesia', '', '', '', ''), +(9, -0.0241514282241702, 109.32919442653657, 'miskin', 'Gang Bayan, Tengah, Pontianak Kota, Pontianak, West Kalimantan, Kalimantan, 78244, Indonesia', '1111111111111111', 'Ahmad', 'Pontianak, 02 Januari 2026', 'SMA/Sederajat'), +(10, -0.04244148341739716, 109.33556199073793, 'tidak_miskin', 'Jalan Syuhada, Akcaya, Pontianak Selatan, Pontianak, Kalimantan Barat, Kalimantan, 78121, Indonesia', '1111111111111112', 'A', 'Pontianak, 1 Januari 2000', 'S1'), +(11, -0.042548771748473165, 109.33563709259035, 'miskin', 'Jalan Syuhada, Akcaya, Pontianak Selatan, Pontianak, Kalimantan Barat, Kalimantan, 78121, Indonesia', '1111111111111113', 'B', 'Pontianak, 1 Januari 2001', 'Tidak Sekolah'), +(12, -0.0388312309510227, 109.33321237564088, 'miskin', 'Jalan Ahmad Marzuki, Akcaya, Pontianak Selatan, Pontianak, Kalimantan Barat, Kalimantan, 78117, Indonesia', '1111111111111114', 'C', 'Pontianak, 1 Januari 2002', 'SMP/Sederajat'); + +-- -------------------------------------------------------- + +-- +-- Struktur dari tabel `tempat_ibadah` +-- + +CREATE TABLE `tempat_ibadah` ( + `id` int(11) NOT NULL, + `jenis` varchar(50) DEFAULT NULL, + `lat` double DEFAULT NULL, + `lng` double DEFAULT NULL, + `radius` int(11) DEFAULT NULL, + `created_at` timestamp NOT NULL DEFAULT current_timestamp(), + `alamat` text DEFAULT NULL, + `nama` varchar(255) DEFAULT '' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- +-- Dumping data untuk tabel `tempat_ibadah` +-- + +INSERT INTO `tempat_ibadah` (`id`, `jenis`, `lat`, `lng`, `radius`, `created_at`, `alamat`, `nama`) VALUES +(11, 'Masjid', -0.024344299151599625, 109.32909250259401, 200, '2026-05-06 01:54:48', 'Gang Belibis, Tengah, Pontianak Kota, Pontianak, West Kalimantan, Kalimantan, 78244, Indonesia', ''), +(12, 'Masjid', -0.04147410027844799, 109.33633446693422, 500, '2026-05-06 03:36:43', 'Mujahiddin, Jalan Mujahidin, Akcaya, Pontianak Selatan, Pontianak, Kalimantan Barat, Kalimantan, 78121, Indonesia', ''), +(13, 'Masjid', -0.05705236443070954, 109.34619426727296, 300, '2026-05-06 03:41:43', 'Universitas Tanjungpura, Jalan Reformasi Untan, Bansir Laut, Pontianak Tenggara, Pontianak, Kalimantan Barat, Kalimantan, 79124, Indonesia', ''), +(14, 'Masjid', -0.05461334353835791, 109.34729933738708, 300, '2026-05-06 03:42:14', 'Masjid Polnep, Jalan Ahmad Yani, Bansir Laut, Pontianak Tenggara, Pontianak, Kalimantan Barat, Kalimantan, 71127, Indonesia', ''), +(15, 'Masjid', -0.05328654474069965, 109.3503624200821, 300, '2026-05-06 03:42:51', 'Universitas Tanjungpura, Vigor Sport Center, Parit Tokaya, Pontianak Selatan, Pontianak, Kalimantan Barat, Kalimantan, 71127, Indonesia', ''), +(16, 'Masjid', -0.058347870748418774, 109.35142725706102, 300, '2026-05-06 03:43:37', 'Al-Azhar, Jalan Sepakat 2, Bansir Darat, Pontianak Tenggara, Pontianak, Kalimantan Barat, Kalimantan, 79124, Indonesia', ''), +(17, 'Masjid', -0.05907653714139404, 109.35188591480257, 300, '2026-05-06 03:43:55', 'Toss, Jalan Ahmad Yani, Bansir Darat, Pontianak Tenggara, Pontianak, Kalimantan Barat, Kalimantan, 79124, Indonesia', ''), +(18, 'Masjid', -0.060203064317339586, 109.34991180896759, 300, '2026-05-06 03:46:06', 'Bansir Laut, Pontianak Tenggara, Pontianak, Kalimantan Barat, Kalimantan, 79124, Indonesia', ''), +(19, 'Gereja', -0.05240141614224753, 109.34470295906068, 300, '2026-05-06 03:48:02', 'Realme Service Center, Vigor Sport Center, Parit Tokaya, Pontianak Selatan, Pontianak, Kalimantan Barat, Kalimantan, 71127, Indonesia', ''), +(20, 'Gereja', -0.051046007065574835, 109.34300243854524, 300, '2026-05-06 03:48:55', 'Sushi Phe, Vigor Sport Center, Parit Tokaya, Pontianak Selatan, Pontianak, Kalimantan Barat, Kalimantan, 71127, Indonesia', ''), +(21, 'Gereja', -0.050502412925482874, 109.34434890747072, 300, '2026-05-06 03:49:38', 'Jalan Ahmad Yani, Parit Tokaya, Pontianak Selatan, Pontianak, Kalimantan Barat, Kalimantan, 71127, Indonesia', ''), +(22, 'Pura', -0.06357191687433154, 109.36737298965456, 300, '2026-05-06 03:51:17', 'Sungai Raya, Kubu Raya, Kalimantan Barat, Kalimantan, 78122, Indonesia', ''), +(23, 'Masjid', -0.02381954295837788, 109.33475732803345, 300, '2026-05-22 05:54:11', 'Jalan Nurali, Tengah, Pontianak Kota, Pontianak, West Kalimantan, Kalimantan, 78112, Indonesia', 'Masjid A'); + +-- -------------------------------------------------------- + +-- +-- Struktur dari tabel `users` +-- + +CREATE TABLE `users` ( + `id` int(11) NOT NULL, + `username` varchar(50) NOT NULL, + `password` varchar(255) NOT NULL, + `role` enum('admin','user') NOT NULL DEFAULT 'user', + `created_at` timestamp NOT NULL DEFAULT current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- +-- Dumping data untuk tabel `users` +-- + +INSERT INTO `users` (`id`, `username`, `password`, `role`, `created_at`) VALUES +(1, 'admin', '$2y$10$Lz6hPjGETnmDrr0VoXwMPugAILtnXybHnakZziDmiodbcIl3kDoUW', 'admin', '2026-05-22 05:43:29'); + +-- +-- Indexes for dumped tables +-- + +-- +-- Indeks untuk tabel `rumah` +-- +ALTER TABLE `rumah` + ADD PRIMARY KEY (`id`); + +-- +-- Indeks untuk tabel `tempat_ibadah` +-- +ALTER TABLE `tempat_ibadah` + ADD PRIMARY KEY (`id`); + +-- +-- Indeks untuk tabel `users` +-- +ALTER TABLE `users` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `username` (`username`); + +-- +-- AUTO_INCREMENT untuk tabel yang dibuang +-- + +-- +-- AUTO_INCREMENT untuk tabel `rumah` +-- +ALTER TABLE `rumah` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13; + +-- +-- AUTO_INCREMENT untuk tabel `tempat_ibadah` +-- +ALTER TABLE `tempat_ibadah` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=24; + +-- +-- AUTO_INCREMENT untuk tabel `users` +-- +ALTER TABLE `users` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2; +COMMIT; + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/hapus.php b/hapus.php new file mode 100644 index 0000000..86d6808 --- /dev/null +++ b/hapus.php @@ -0,0 +1,22 @@ + "error"]); + exit; +} + +$stmt = mysqli_prepare($koneksi, "DELETE FROM tempat_ibadah WHERE id=?"); +mysqli_stmt_bind_param($stmt, "i", $id); + +if (mysqli_stmt_execute($stmt)) { + echo json_encode(["status" => "success"]); +} else { + echo json_encode(["status" => "error"]); +} + +mysqli_close($koneksi); \ No newline at end of file diff --git a/hapus_rumah.php b/hapus_rumah.php new file mode 100644 index 0000000..cff5205 --- /dev/null +++ b/hapus_rumah.php @@ -0,0 +1,22 @@ + "error"]); + exit; +} + +$stmt = mysqli_prepare($koneksi, "DELETE FROM rumah WHERE id=?"); +mysqli_stmt_bind_param($stmt, "i", $id); + +if (mysqli_stmt_execute($stmt)) { + echo json_encode(["status" => "success"]); +} else { + echo json_encode(["status" => "error"]); +} + +mysqli_close($koneksi); \ No newline at end of file diff --git a/index.php b/index.php new file mode 100644 index 0000000..3b2ac4f --- /dev/null +++ b/index.php @@ -0,0 +1,3 @@ + + + + + + + Login โ€“ GIS Kemiskinan + + + +
+

๐Ÿ—บ GIS Kemiskinan

+
Silakan login untuk melanjutkan
+ + +
โš ๏ธ
+ + +
+ + + + + + + +
+ + ๐Ÿ‘ Masuk sebagai Pengunjung (hanya lihat) +
+ + \ No newline at end of file diff --git a/logout.php b/logout.php new file mode 100644 index 0000000..ee222ca --- /dev/null +++ b/logout.php @@ -0,0 +1,5 @@ + + + + + + + GIS Kemiskinan โ€“ Tempat Ibadah + + + + + + + + + + + + +
+
+
+
Mode: Tambah Tempat Ibadah โ€“ Klik di peta
+
+ + +
+ + +
+

๐Ÿ“Š Statistik

+
+
+
0
+
Tempat Ibadah
+
+
+
0
+
Total Rumah
+
+
+
0
+
Rumah Miskin
+
+
+
0
+
Terjangkau Ibadah
+
+
+
+ + +
+

๐ŸŽฏ Tempat Ibadah Dipilih

+
+
+
0 m
+
Radius Jangkauan
+
+ +
50 m2.000 m
+
+ + +
+

๐Ÿ  Rumah dalam Radius (0)

+
+
+
+ + +
+

๐Ÿ—‚ Layer Tempat Ibadah

+
+
+ + +
+

๐Ÿ—‚ Layer Rumah

+
+ ๐Ÿ”ด + Rumah Miskin + 0 + +
+
+ ๐ŸŸก + Rumah Tidak Miskin + 0 + +
+
+ + +
+

๐Ÿ“ Legenda Rumah

+
Rumah Miskin (tidak terjangkau)
+
Rumah Miskin (dalam radius ibadah)
+
Rumah Tidak Miskin
+
+ +
+
+ + + + \ No newline at end of file diff --git a/simpan.php b/simpan.php new file mode 100644 index 0000000..010b272 --- /dev/null +++ b/simpan.php @@ -0,0 +1,30 @@ + "error", "message" => "Data tidak lengkap"]); + exit; +} + +$stmt = mysqli_prepare($koneksi, + "INSERT INTO tempat_ibadah (jenis, nama, lat, lng, radius, alamat) VALUES (?, ?, ?, ?, ?, ?)" +); +mysqli_stmt_bind_param($stmt, "ssddis", $jenis, $nama, $lat, $lng, $radius, $alamat); + +if (mysqli_stmt_execute($stmt)) { + echo json_encode(["status" => "success", "message" => "Data berhasil disimpan"]); +} else { + echo json_encode(["status" => "error", "message" => mysqli_error($koneksi)]); +} + +mysqli_close($koneksi); \ No newline at end of file diff --git a/simpan_rumah.php b/simpan_rumah.php new file mode 100644 index 0000000..bf4e33e --- /dev/null +++ b/simpan_rumah.php @@ -0,0 +1,36 @@ + "error", "message" => "Data tidak lengkap (NIK dan Nama wajib diisi)"]); + exit; +} + +if (!in_array($status, ['miskin', 'tidak_miskin'])) { + $status = 'miskin'; +} + +$stmt = mysqli_prepare($koneksi, + "INSERT INTO rumah (lat, lng, status, alamat, nik, nama, ttl, pendidikan) VALUES (?, ?, ?, ?, ?, ?, ?, ?)" +); +mysqli_stmt_bind_param($stmt, "ddssssss", $lat, $lng, $status, $alamat, $nik, $nama, $ttl, $pendidikan); + +if (mysqli_stmt_execute($stmt)) { + echo json_encode(["status" => "success", "id" => mysqli_insert_id($koneksi)]); +} else { + echo json_encode(["status" => "error", "message" => mysqli_error($koneksi)]); +} + +mysqli_close($koneksi); \ No newline at end of file diff --git a/test.php b/test.php new file mode 100644 index 0000000..4ff069d --- /dev/null +++ b/test.php @@ -0,0 +1,9 @@ + \ No newline at end of file