initiall commit
This commit is contained in:
@@ -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);
|
||||
}
|
||||
?>
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -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);
|
||||
}
|
||||
?>
|
||||
@@ -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);
|
||||
}
|
||||
?>
|
||||
@@ -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);
|
||||
}
|
||||
?>
|
||||
@@ -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);
|
||||
}
|
||||
?>
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -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();
|
||||
?>
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -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();
|
||||
?>
|
||||
@@ -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();
|
||||
?>
|
||||
@@ -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();
|
||||
?>
|
||||
@@ -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.');
|
||||
}
|
||||
?>
|
||||
@@ -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.');
|
||||
}
|
||||
?>
|
||||
@@ -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";
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -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();
|
||||
?>
|
||||
Reference in New Issue
Block a user