'error', 'message' => 'ID tidak valid']); exit; } function esc($conn, $v) { return mysqli_real_escape_string($conn, trim((string)$v)); } switch ($type) { case 'spbu': $nama = esc($conn, $_POST['nama'] ?? ''); $nomor = esc($conn, $_POST['nomor'] ?? ''); $status = in_array($_POST['status'] ?? '', ['Ya','Tidak']) ? $_POST['status'] : 'Tidak'; $lat = (float)($_POST['lat'] ?? 0); $lng = (float)($_POST['lng'] ?? 0); $q = "UPDATE spbu SET nama='$nama', nomor='$nomor', status_24jam='$status', lat=$lat, lng=$lng WHERE id=$id"; break; case 'kemiskinan': $nama_kk = esc($conn, $_POST['nama_kk'] ?? ''); $jumlah_kk = max(1, (int)($_POST['jumlah_kk'] ?? 1)); $alamat = esc($conn, $_POST['alamat'] ?? ''); $lat = (float)($_POST['lat'] ?? 0); $lng = (float)($_POST['lng'] ?? 0); $pkh = (isset($_POST['pkh']) && $_POST['pkh'] == '1') ? 1 : 0; $bpnt = (isset($_POST['bpnt']) && $_POST['bpnt'] == '1') ? 1 : 0; $blt = (isset($_POST['blt']) && $_POST['blt'] == '1') ? 1 : 0; $fotoSet = ''; if (!empty($_FILES['foto']['name']) && $_FILES['foto']['error'] === UPLOAD_ERR_OK) { $ext = strtolower(pathinfo($_FILES['foto']['name'], PATHINFO_EXTENSION)); $allowed = ['jpg','jpeg','png','webp']; if (in_array($ext, $allowed) && $_FILES['foto']['size'] <= 5*1024*1024) { $dir = __DIR__ . '/uploads/kemiskinan/'; if (!is_dir($dir)) mkdir($dir, 0755, true); $fname = 'kk_' . $id . '_' . time() . '.' . $ext; if (move_uploaded_file($_FILES['foto']['tmp_name'], $dir.$fname)) { $fotoSet = ", foto='" . esc($conn, $fname) . "'"; } } } $q = "UPDATE kemiskinan SET nama_kk='$nama_kk', jumlah_kk=$jumlah_kk, alamat='$alamat', lat=$lat, lng=$lng, pkh=$pkh, bpnt=$bpnt, blt=$blt{$fotoSet} WHERE id=$id"; break; case 'masjid': $nama = esc($conn, $_POST['nama_masjid'] ?? ''); $pic = esc($conn, $_POST['pic'] ?? ''); $alamat = esc($conn, $_POST['alamat'] ?? ''); $radius = max(50, min(5000, (int)($_POST['radius_m'] ?? 300))); $lat = (float)($_POST['lat'] ?? 0); $lng = (float)($_POST['lng'] ?? 0); $q = "UPDATE masjid SET nama_masjid='$nama', pic='$pic', alamat='$alamat', radius_m=$radius, lat=$lat, lng=$lng WHERE id=$id"; break; case 'jalan': $nama = esc($conn, $_POST['nama_jalan'] ?? ''); $status = in_array($_POST['status_jalan']??'', ['Nasional','Provinsi','Kabupaten']) ? $_POST['status_jalan'] : 'Kabupaten'; $panjang = (float)($_POST['panjang'] ?? 0); $geojson = esc($conn, $_POST['geojson'] ?? ''); $q = "UPDATE jalan SET nama_jalan='$nama', status_jalan='$status', panjang_m=$panjang" . ($geojson ? ", geojson='$geojson'" : '') . " WHERE id=$id"; break; case 'persil': $nomor = esc($conn, $_POST['nomor_persil'] ?? ''); $status = in_array($_POST['status_milik']??'', ['SHM','HGB','HGU','HP']) ? $_POST['status_milik'] : 'SHM'; $luas = (float)($_POST['luas'] ?? 0); $geojson = esc($conn, $_POST['geojson'] ?? ''); $q = "UPDATE persil SET nomor_persil='$nomor', status_milik='$status', luas_m2=$luas" . ($geojson ? ", geojson='$geojson'" : '') . " WHERE id=$id"; break; case 'wilayah': $nama = esc($conn, $_POST['nama'] ?? ''); $tipe = in_array($_POST['tipe']??'', ['RT','RW','Kelurahan','Kecamatan']) ? $_POST['tipe'] : 'RT'; $geojson = esc($conn, $_POST['geojson'] ?? ''); $q = "UPDATE wilayah SET nama='$nama', tipe='$tipe'" . ($geojson ? ", geojson='$geojson'" : '') . " WHERE id=$id"; break; default: echo json_encode(['status' => 'error', 'message' => 'Tipe tidak dikenal.']); exit; } if (mysqli_query($conn, $q)) echo json_encode(['status' => 'success']); else echo json_encode(['status' => 'error', 'message' => mysqli_error($conn)]);