initiall commit

This commit is contained in:
unknown
2026-06-10 21:59:59 +07:00
commit cfd55d0dd0
28 changed files with 3442 additions and 0 deletions
+67
View File
@@ -0,0 +1,67 @@
<?php
// ========================================
// FILE: php/ambil_data_masyarakat.php
// Mengambil data masyarakat miskin
// ========================================
include 'koneksi.php';
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
// Kumpulkan filter dulu SEBELUM query dibuat
$filters = [];
$params = [];
$types = "";
if (!empty($_GET['kecamatan'])) {
$filters[] = "kecamatan = ?";
$params[] = $_GET['kecamatan'];
$types .= "s";
}
if (!empty($_GET['status_bpjs'])) {
$filters[] = "status_bpjs = ?";
$params[] = $_GET['status_bpjs'];
$types .= "s";
}
if (!empty($_GET['search'])) {
$filters[] = "(nama LIKE ? OR alamat LIKE ?)";
$searchParam = "%" . $_GET['search'] . "%";
$params[] = $searchParam;
$params[] = $searchParam;
$types .= "ss";
}
// Susun query dengan urutan benar: WHERE dulu, baru ORDER BY
$query = "SELECT * FROM masyarakat_miskin";
if (!empty($filters)) {
$query .= " WHERE " . implode(" AND ", $filters);
}
$query .= " ORDER BY created_at DESC";
$stmt = $conn->prepare($query);
if ($stmt === false) {
sendJSON('error', 'Query prepare gagal: ' . $conn->error);
}
if (!empty($params)) {
$stmt->bind_param($types, ...$params);
}
if (!$stmt->execute()) {
sendJSON('error', 'Query gagal dieksekusi: ' . $stmt->error);
}
$result = $stmt->get_result();
$data = [];
while ($row = $result->fetch_assoc()) {
$data[] = $row;
}
sendJSON('success', 'Data berhasil diambil', $data);
}
?>
+52
View File
@@ -0,0 +1,52 @@
<?php
// ========================================
// FILE: php/ambil_detail.php
// Mengambil detail lengkap data masyarakat + bantuan + BPJS
// ========================================
include 'koneksi.php';
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
$id = intval($_GET['id'] ?? 0);
if ($id == 0) {
sendJSON('error', 'ID tidak ditemukan');
}
// AMBIL DATA MASYARAKAT
$query_masyarakat = "SELECT * FROM masyarakat_miskin WHERE id = $id";
$result_masyarakat = $conn->query($query_masyarakat);
if ($result_masyarakat->num_rows === 0) {
sendJSON('error', 'Data masyarakat tidak ditemukan');
}
$masyarakat = $result_masyarakat->fetch_assoc();
// AMBIL DATA BANTUAN
$query_bantuan = "SELECT * FROM bantuan_riwayat WHERE id_masyarakat = $id ORDER BY tanggal_bantuan DESC";
$result_bantuan = $conn->query($query_bantuan);
$bantuan_list = [];
while ($row = $result_bantuan->fetch_assoc()) {
$bantuan_list[] = $row;
}
// AMBIL DATA BPJS
$query_bpjs = "SELECT * FROM bpjs_record WHERE id_masyarakat = $id";
$result_bpjs = $conn->query($query_bpjs);
$bpjs = null;
if ($result_bpjs->num_rows > 0) {
$bpjs = $result_bpjs->fetch_assoc();
}
$data = [
'masyarakat' => $masyarakat,
'bantuan' => $bantuan_list,
'bpjs' => $bpjs
];
sendJSON('success', 'Detail data berhasil diambil', $data);
}
?>
+16
View File
@@ -0,0 +1,16 @@
<?php
include 'koneksi.php';
$query = "SELECT * FROM fasilitas_jalan ORDER BY nama ASC";
$result = $conn->query($query);
$data = [];
if ($result) {
while ($row = $result->fetch_assoc()) {
$data[] = $row;
}
sendJSON('success', 'Data jalan berhasil diambil', $data);
} else {
sendJSON('error', 'Gagal mengambil data: ' . $conn->error);
}
?>
+16
View File
@@ -0,0 +1,16 @@
<?php
include 'koneksi.php';
$query = "SELECT * FROM fasilitas_polygon ORDER BY nama ASC";
$result = $conn->query($query);
$data = [];
if ($result) {
while ($row = $result->fetch_assoc()) {
$data[] = $row;
}
sendJSON('success', 'Data polygon berhasil diambil', $data);
} else {
sendJSON('error', 'Gagal mengambil data: ' . $conn->error);
}
?>
+16
View File
@@ -0,0 +1,16 @@
<?php
include 'koneksi.php';
$query = "SELECT * FROM fasilitas_spbu ORDER BY nama ASC";
$result = $conn->query($query);
$data = [];
if ($result) {
while ($row = $result->fetch_assoc()) {
$data[] = $row;
}
sendJSON('success', 'Data SPBU berhasil diambil', $data);
} else {
sendJSON('error', 'Gagal mengambil data: ' . $conn->error);
}
?>
+46
View File
@@ -0,0 +1,46 @@
<?php
// ========================================
// FILE: php/ambil_rumah_ibadah.php
// Mengambil data rumah ibadah
// ========================================
include 'koneksi.php';
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
// Susun query dengan urutan benar: WHERE dulu, baru ORDER BY
$query = "SELECT * FROM rumah_ibadah";
$params = [];
$types = "";
if (!empty($_GET['jenis'])) {
$query .= " WHERE jenis = ?";
$params[] = $_GET['jenis'];
$types .= "s";
}
$query .= " ORDER BY created_at DESC";
$stmt = $conn->prepare($query);
if ($stmt === false) {
sendJSON('error', 'Query prepare gagal: ' . $conn->error);
}
if (!empty($params)) {
$stmt->bind_param($types, ...$params);
}
if (!$stmt->execute()) {
sendJSON('error', 'Query gagal dieksekusi: ' . $stmt->error);
}
$result = $stmt->get_result();
$data = [];
while ($row = $result->fetch_assoc()) {
$data[] = $row;
}
sendJSON('success', 'Data berhasil diambil', $data);
}
?>
+43
View File
@@ -0,0 +1,43 @@
<?php
// ========================================
// FILE: php/hapus_data.php
// Menghapus data masyarakat miskin atau rumah ibadah
// ========================================
include 'koneksi.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$tipe = sanitize($_POST['tipe'] ?? '', $conn); // 'masyarakat' atau 'rumah_ibadah'
$id = intval($_POST['id'] ?? 0);
if ($id == 0 || empty($tipe)) {
sendJSON('error', 'Data tidak lengkap');
}
if ($tipe === 'masyarakat') {
$query = "DELETE FROM masyarakat_miskin WHERE id = $id";
} elseif ($tipe === 'ibadah' || $tipe === 'rumah_ibadah') { // To be safe
$query = "DELETE FROM rumah_ibadah WHERE id = $id";
} elseif ($tipe === 'jalan') {
$query = "DELETE FROM fasilitas_jalan WHERE id = $id";
} elseif ($tipe === 'polygon') {
$query = "DELETE FROM fasilitas_polygon WHERE id = $id";
} elseif ($tipe === 'spbu') {
$query = "DELETE FROM fasilitas_spbu WHERE id = $id";
} else {
sendJSON('error', 'Tipe tidak valid');
}
if ($conn->query($query) === TRUE) {
if ($conn->affected_rows > 0) {
sendJSON('success', 'Data berhasil dihapus');
} else {
sendJSON('error', 'Data tidak ditemukan');
}
} else {
sendJSON('error', 'Gagal menghapus: ' . $conn->error);
}
}
?>
+54
View File
@@ -0,0 +1,54 @@
<?php
// ========================================
// FILE: php/koneksi.php
// Konfigurasi Koneksi Database
// ========================================
// CORS HEADERS - Wajib ada agar request dari browser tidak diblok
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, X-Requested-With');
header('Content-Type: application/json; charset=utf-8');
// Handle preflight request (OPTIONS)
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
http_response_code(200);
exit();
}
$host = "localhost";
$username = "root";
$password = ""; // Jika XAMPP, kosongkan
$database = "pemetaan_kemiskinan";
// KONEKSI MYSQLI
$conn = new mysqli($host, $username, $password, $database);
// CEK KONEKSI
if ($conn->connect_error) {
sendJSON('error', 'Koneksi database gagal: ' . $conn->connect_error);
exit();
}
// SET CHARSET UTF-8
$conn->set_charset("utf8mb4");
// FUNCTION UNTUK ESCAPE INPUT
function sanitize($string, $conn) {
return $conn->real_escape_string(strip_tags(trim($string)));
}
// FUNCTION UNTUK RESPONSE JSON
function sendJSON($status, $message, $data = null) {
$response = [
'status' => $status,
'message' => $message
];
if ($data !== null) {
$response['data'] = $data;
}
echo json_encode($response, JSON_UNESCAPED_UNICODE);
exit();
}
?>
+49
View File
@@ -0,0 +1,49 @@
<?php
// ========================================
// FILE: php/setup_db.php
// Skrip Otomatis Impor Database
// ========================================
// Karena koneksi.php sudah memilih database, kita buat koneksi mentah dulu
// untuk memastikan database 'pemetaan_kemiskinan' dibuat jika belum ada.
$host = "localhost";
$user = "root";
$pass = "";
$conn_init = new mysqli($host, $user, $pass);
if ($conn_init->connect_error) {
die("Koneksi gagal: " . $conn_init->connect_error . " (Pastikan MySQL di XAMPP sudah menyala!)");
}
// Buat database jika belum ada
$conn_init->query("CREATE DATABASE IF NOT EXISTS `pemetaan_kemiskinan` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci");
$conn_init->select_db("pemetaan_kemiskinan");
// Baca isi file database.sql
$sql_file = __DIR__ . '/../database.sql';
if (!file_exists($sql_file)) {
die("File database.sql tidak ditemukan di $sql_file");
}
$sql_content = file_get_contents($sql_file);
// Eksekusi semua query sekaligus
if ($conn_init->multi_query($sql_content)) {
do {
// Buang hasil dari setiap statement yang dieksekusi agar bisa lanjut ke statement berikutnya
if ($res = $conn_init->store_result()) {
$res->free();
}
} while ($conn_init->more_results() && $conn_init->next_result());
echo "<div style='background:#dcfce3; color:#166534; padding:20px; border-radius:10px; font-family:sans-serif; text-align:center;'>";
echo "<h1>✅ Database Berhasil Diimpor Otomatis!</h1>";
echo "<p>Seluruh tabel dan titik contoh masyarakat miskin & rumah ibadah sudah dimasukkan ke MySQL.</p>";
echo "<a href='../index.html' style='display:inline-block; padding:10px 20px; background:#16a34a; color:white; text-decoration:none; border-radius:5px;'>Kembali ke Portal</a>";
echo "</div>";
} else {
echo "Gagal mengimpor database: " . $conn_init->error;
}
$conn_init->close();
?>
+43
View File
@@ -0,0 +1,43 @@
<?php
// ========================================
// FILE: php/simpan_bantuan.php
// Menyimpan riwayat bantuan
// ========================================
include 'koneksi.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$id_masyarakat = intval($_POST['id_masyarakat'] ?? 0);
$jenis_bantuan = sanitize($_POST['jenis_bantuan'] ?? '', $conn);
$tanggal_bantuan = sanitize($_POST['tanggal_bantuan'] ?? '', $conn);
$nilai = intval($_POST['nilai'] ?? 0);
$satuan = sanitize($_POST['satuan'] ?? 'Rupiah', $conn);
$keterangan = sanitize($_POST['keterangan'] ?? '', $conn);
$nama_pemberi = sanitize($_POST['nama_pemberi'] ?? '', $conn);
// VALIDASI
if ($id_masyarakat == 0 || empty($jenis_bantuan) || empty($tanggal_bantuan)) {
sendJSON('error', 'Data wajib lengkap');
}
// CEK MASYARAKAT EXIST
$check = $conn->query("SELECT id FROM masyarakat_miskin WHERE id = $id_masyarakat");
if ($check->num_rows == 0) {
sendJSON('error', 'ID Masyarakat tidak ditemukan');
}
// QUERY INSERT
$query = "INSERT INTO bantuan_riwayat
(id_masyarakat, jenis_bantuan, tanggal_bantuan, nilai, satuan, keterangan, nama_pemberi)
VALUES
($id_masyarakat, '$jenis_bantuan', '$tanggal_bantuan', $nilai, '$satuan', '$keterangan', '$nama_pemberi')";
if ($conn->query($query) === TRUE) {
sendJSON('success', 'Riwayat bantuan berhasil disimpan', ['id' => $conn->insert_id]);
} else {
sendJSON('error', 'Gagal menyimpan: ' . $conn->error);
}
}
?>
+64
View File
@@ -0,0 +1,64 @@
<?php
// ========================================
// FILE: php/simpan_bpjs.php
// Menyimpan data BPJS
// ========================================
include 'koneksi.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$id_masyarakat = intval($_POST['id_masyarakat'] ?? 0);
$no_peserta = sanitize($_POST['no_peserta'] ?? '', $conn);
$jenis_bpjs = sanitize($_POST['jenis_bpjs'] ?? 'Kesehatan', $conn);
$tingkat = sanitize($_POST['tingkat'] ?? 'Penerima Bantuan Iuran (PBI)', $conn);
$tanggal_daftar = sanitize($_POST['tanggal_daftar'] ?? '', $conn);
$status_aktif = sanitize($_POST['status_aktif'] ?? 'Aktif', $conn);
$faskes = sanitize($_POST['faskes_tingkat_1'] ?? '', $conn);
// VALIDASI
if ($id_masyarakat == 0 || empty($no_peserta) || empty($tanggal_daftar)) {
sendJSON('error', 'Data wajib lengkap: ID, No Peserta, Tanggal');
}
// CEK MASYARAKAT EXIST
$check = $conn->query("SELECT id FROM masyarakat_miskin WHERE id = $id_masyarakat");
if ($check->num_rows == 0) {
sendJSON('error', 'ID Masyarakat tidak ditemukan');
}
// CEK DUPLIKAT NO PESERTA
$cek_dup = $conn->query("SELECT id FROM bpjs_record WHERE no_peserta = '$no_peserta' AND id_masyarakat != $id_masyarakat");
if ($cek_dup->num_rows > 0) {
sendJSON('error', 'Nomor peserta sudah terdaftar untuk masyarakat lain');
}
// QUERY INSERT atau UPDATE
$existing = $conn->query("SELECT id FROM bpjs_record WHERE id_masyarakat = $id_masyarakat");
if ($existing->num_rows > 0) {
// UPDATE
$query = "UPDATE bpjs_record SET
no_peserta = '$no_peserta',
jenis_bpjs = '$jenis_bpjs',
tingkat = '$tingkat',
tanggal_daftar = '$tanggal_daftar',
status_aktif = '$status_aktif',
faskes_tingkat_1 = '$faskes'
WHERE id_masyarakat = $id_masyarakat";
} else {
// INSERT
$query = "INSERT INTO bpjs_record
(id_masyarakat, no_peserta, jenis_bpjs, tingkat, tanggal_daftar, status_aktif, faskes_tingkat_1)
VALUES
($id_masyarakat, '$no_peserta', '$jenis_bpjs', '$tingkat', '$tanggal_daftar', '$status_aktif', '$faskes')";
}
if ($conn->query($query) === TRUE) {
sendJSON('success', 'Data BPJS berhasil disimpan');
} else {
sendJSON('error', 'Gagal menyimpan: ' . $conn->error);
}
}
?>
+26
View File
@@ -0,0 +1,26 @@
<?php
include 'koneksi.php';
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
sendJSON('error', 'Metode tidak diizinkan');
}
$nama = sanitize($_POST['nama'] ?? '', $conn);
$geojson = $_POST['geojson'] ?? ''; // Don't strip tags for JSON
$tipe = sanitize($_POST['tipe'] ?? '', $conn);
$keterangan = sanitize($_POST['keterangan'] ?? '', $conn);
if (empty($nama) || empty($geojson)) {
sendJSON('error', 'Nama dan Data GeoJSON wajib diisi');
}
$stmt = $conn->prepare("INSERT INTO fasilitas_jalan (nama, geojson, tipe, keterangan) VALUES (?, ?, ?, ?)");
$stmt->bind_param("ssss", $nama, $geojson, $tipe, $keterangan);
if ($stmt->execute()) {
sendJSON('success', 'Data jalan berhasil disimpan');
} else {
sendJSON('error', 'Gagal menyimpan: ' . $stmt->error);
}
$stmt->close();
?>
+26
View File
@@ -0,0 +1,26 @@
<?php
include 'koneksi.php';
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
sendJSON('error', 'Metode tidak diizinkan');
}
$nama = sanitize($_POST['nama'] ?? '', $conn);
$geojson = $_POST['geojson'] ?? ''; // Don't strip tags for JSON
$tipe = sanitize($_POST['tipe'] ?? '', $conn);
$keterangan = sanitize($_POST['keterangan'] ?? '', $conn);
if (empty($nama) || empty($geojson)) {
sendJSON('error', 'Nama dan Data GeoJSON wajib diisi');
}
$stmt = $conn->prepare("INSERT INTO fasilitas_polygon (nama, geojson, tipe, keterangan) VALUES (?, ?, ?, ?)");
$stmt->bind_param("ssss", $nama, $geojson, $tipe, $keterangan);
if ($stmt->execute()) {
sendJSON('success', 'Data polygon berhasil disimpan');
} else {
sendJSON('error', 'Gagal menyimpan: ' . $stmt->error);
}
$stmt->close();
?>
+27
View File
@@ -0,0 +1,27 @@
<?php
include 'koneksi.php';
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
sendJSON('error', 'Metode tidak diizinkan');
}
$nama = sanitize($_POST['nama'] ?? '', $conn);
$latitude = sanitize($_POST['latitude'] ?? '', $conn);
$longitude = sanitize($_POST['longitude'] ?? '', $conn);
$alamat = sanitize($_POST['alamat'] ?? '', $conn);
$is_24_jam = sanitize($_POST['is_24_jam'] ?? 'Tidak', $conn);
if (empty($nama) || empty($latitude) || empty($longitude)) {
sendJSON('error', 'Nama, Latitude, dan Longitude wajib diisi');
}
$stmt = $conn->prepare("INSERT INTO fasilitas_spbu (nama, latitude, longitude, alamat, is_24_jam) VALUES (?, ?, ?, ?, ?)");
$stmt->bind_param("sddss", $nama, $latitude, $longitude, $alamat, $is_24_jam);
if ($stmt->execute()) {
sendJSON('success', 'Data SPBU berhasil disimpan');
} else {
sendJSON('error', 'Gagal menyimpan: ' . $stmt->error);
}
$stmt->close();
?>
+75
View File
@@ -0,0 +1,75 @@
<?php
// ========================================
// FILE: php/simpan_masyarakat.php
// Menyimpan data masyarakat miskin
// ========================================
include 'koneksi.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$nama = sanitize($_POST['nama'] ?? '', $conn);
$tanggal_lahir = sanitize($_POST['tanggal_lahir'] ?? '', $conn);
$jenis_kelamin = sanitize($_POST['jenis_kelamin'] ?? '', $conn);
$nik = sanitize($_POST['nik'] ?? '', $conn);
$alamat = sanitize($_POST['alamat'] ?? '', $conn);
$latitude = floatval($_POST['latitude'] ?? 0);
$longitude = floatval($_POST['longitude'] ?? 0);
$status_bpjs = sanitize($_POST['status_bpjs'] ?? 'Tidak', $conn);
$no_hp = sanitize($_POST['no_hp'] ?? '', $conn);
$pekerjaan = sanitize($_POST['pekerjaan'] ?? '', $conn);
$pendapatan = intval($_POST['pendapatan_bulanan'] ?? 0);
$tanggungan = intval($_POST['jumlah_tanggungan'] ?? 0);
$status_rumah = sanitize($_POST['status_rumah'] ?? 'Menumpang', $conn);
$kelurahan = sanitize($_POST['kelurahan'] ?? '', $conn);
$kecamatan = sanitize($_POST['kecamatan'] ?? '', $conn);
// VALIDASI INPUT
if (empty($nama)) {
sendJSON('error', 'Nama wajib diisi');
}
if (empty($alamat)) {
sendJSON('error', 'Alamat wajib diisi');
}
if ($latitude == 0 || $longitude == 0) {
sendJSON('error', 'Koordinat lokasi wajib diisi (klik peta untuk menentukan titik)');
}
// CEK DUPLIKAT NIK (jika NIK diisi)
if (!empty($nik)) {
$stmt_cek = $conn->prepare("SELECT id FROM masyarakat_miskin WHERE nik = ?");
$stmt_cek->bind_param("s", $nik);
$stmt_cek->execute();
$cek = $stmt_cek->get_result();
if ($cek && $cek->num_rows > 0) {
sendJSON('error', 'NIK sudah terdaftar di sistem');
}
$stmt_cek->close();
}
// QUERY INSERT
$query = "INSERT INTO masyarakat_miskin
(nama, tanggal_lahir, jenis_kelamin, nik, alamat, latitude, longitude,
status_bpjs, no_hp, pekerjaan, pendapatan_bulanan, jumlah_tanggungan,
status_rumah, kelurahan, kecamatan)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
$stmt = $conn->prepare($query);
if ($stmt === false) {
sendJSON('error', 'Gagal prepare statement: ' . $conn->error);
}
$stmt->bind_param("sssssddsssiisss", $nama, $tanggal_lahir, $jenis_kelamin, $nik, $alamat, $latitude, $longitude, $status_bpjs, $no_hp, $pekerjaan, $pendapatan, $tanggungan, $status_rumah, $kelurahan, $kecamatan);
if ($stmt->execute()) {
$id = $stmt->insert_id;
sendJSON('success', 'Data masyarakat berhasil disimpan', ['id' => $id]);
} else {
sendJSON('error', 'Gagal menyimpan data: ' . $stmt->error);
}
$stmt->close();
} else {
sendJSON('error', 'Method tidak diizinkan. Gunakan POST.');
}
?>
+69
View File
@@ -0,0 +1,69 @@
<?php
// ========================================
// FILE: php/simpan_rumah_ibadah.php
// Menyimpan data rumah ibadah
// ========================================
include 'koneksi.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$nama = sanitize($_POST['nama'] ?? '', $conn);
$jenis = sanitize($_POST['jenis'] ?? '', $conn);
$alamat = sanitize($_POST['alamat'] ?? '', $conn);
$latitude = floatval($_POST['latitude'] ?? 0);
$longitude = floatval($_POST['longitude'] ?? 0);
$nama_pemimpin = sanitize($_POST['nama_pemimpin'] ?? '', $conn);
$no_hp_pemimpin = sanitize($_POST['no_hp_pemimpin'] ?? '', $conn);
$kapasitas = intval($_POST['kapasitas'] ?? 0);
$tahun = sanitize($_POST['tahun_didirikan'] ?? '', $conn);
$keterangan = sanitize($_POST['keterangan'] ?? '', $conn);
// VALIDASI
if (empty($nama)) {
sendJSON('error', 'Nama rumah ibadah wajib diisi');
}
if (empty($jenis)) {
sendJSON('error', 'Jenis rumah ibadah wajib diisi');
}
if (empty($alamat)) {
sendJSON('error', 'Alamat wajib diisi');
}
if ($latitude == 0 || $longitude == 0) {
sendJSON('error', 'Koordinat lokasi wajib diisi (klik peta untuk menentukan titik)');
}
// Validasi nilai ENUM jenis
$jenis_valid = ['Masjid', 'Gereja', 'Vihara', 'Kelenteng', 'Sinagog', 'Lain'];
if (!in_array($jenis, $jenis_valid)) {
sendJSON('error', 'Jenis rumah ibadah tidak valid');
}
// Isi tahun_didirikan dengan NULL jika kosong (karena tipe kolom YEAR)
$tahun_sql = empty($tahun) ? null : $tahun;
// QUERY INSERT
$query = "INSERT INTO rumah_ibadah
(nama, jenis, latitude, longitude, alamat,
nama_pemimpin, no_hp_pemimpin, kapasitas, tahun_didirikan, keterangan)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
$stmt = $conn->prepare($query);
if ($stmt === false) {
sendJSON('error', 'Gagal prepare statement: ' . $conn->error);
}
$stmt->bind_param("ssddsssiss", $nama, $jenis, $latitude, $longitude, $alamat, $nama_pemimpin, $no_hp_pemimpin, $kapasitas, $tahun_sql, $keterangan);
if ($stmt->execute()) {
$id = $stmt->insert_id;
sendJSON('success', 'Data rumah ibadah berhasil disimpan', ['id' => $id]);
} else {
sendJSON('error', 'Gagal menyimpan data: ' . $stmt->error);
}
$stmt->close();
} else {
sendJSON('error', 'Method tidak diizinkan. Gunakan POST.');
}
?>
+14
View File
@@ -0,0 +1,14 @@
<?php
include 'koneksi.php';
$tables = ['masyarakat_miskin', 'rumah_ibadah', 'fasilitas_jalan', 'fasilitas_polygon', 'fasilitas_spbu', 'bantuan_riwayat'];
foreach ($tables as $table) {
$res = $conn->query("SELECT COUNT(*) FROM $table");
if ($res) {
echo "$table count: " . $res->fetch_row()[0] . "\n";
} else {
echo "$table error: " . $conn->error . "\n";
}
}
?>
+25
View File
@@ -0,0 +1,25 @@
<?php
include 'koneksi.php';
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
sendJSON('error', 'Metode tidak diizinkan');
}
$id = intval($_POST['id'] ?? 0);
$latitude = sanitize($_POST['latitude'] ?? '', $conn);
$longitude = sanitize($_POST['longitude'] ?? '', $conn);
if ($id === 0 || empty($latitude) || empty($longitude)) {
sendJSON('error', 'ID, Latitude, dan Longitude wajib diisi');
}
$stmt = $conn->prepare("UPDATE fasilitas_spbu SET latitude = ?, longitude = ? WHERE id = ?");
$stmt->bind_param("ddi", $latitude, $longitude, $id);
if ($stmt->execute()) {
sendJSON('success', 'Lokasi SPBU berhasil diperbarui');
} else {
sendJSON('error', 'Gagal memperbarui lokasi: ' . $stmt->error);
}
$stmt->close();
?>