'error', 'message' => 'Method tidak diizinkan.']); exit; } // ── Ambil & bersihkan input dari form (tanpa latitude/longitude) ────────────── $id = intval($_POST['id'] ?? 0); $nama_spbu = trim($_POST['nama_spbu'] ?? ''); $status_ramai = trim($_POST['status_ramai'] ?? ''); $buka_24_jam = trim($_POST['buka_24_jam'] ?? ''); $status_operasional = trim($_POST['status_operasional'] ?? ''); $nomor_hp = trim($_POST['nomor_hp'] ?? ''); // ── Validasi: ID harus valid ────────────────────────────────────────────────── if ($id <= 0) { echo json_encode(['status' => 'error', 'message' => 'ID tidak valid.']); exit; } // ── Validasi: semua field wajib terisi ─────────────────────────────────────── if ( empty($nama_spbu) || empty($status_ramai) || empty($buka_24_jam) || empty($status_operasional) || empty($nomor_hp) ) { echo json_encode(['status' => 'error', 'message' => 'Semua field wajib diisi.']); exit; } // ── Validasi nilai ENUM (server-side) ──────────────────────────────────────── $valid_ramai = ['ramai', 'tidak_ramai']; $valid_24jam = ['ya', 'tidak']; $valid_operasional = ['buka', 'tutup']; if (!in_array($status_ramai, $valid_ramai)) { echo json_encode(['status' => 'error', 'message' => 'Nilai status ramai tidak valid.']); exit; } if (!in_array($buka_24_jam, $valid_24jam)) { echo json_encode(['status' => 'error', 'message' => 'Nilai buka 24 jam tidak valid.']); exit; } if (!in_array($status_operasional, $valid_operasional)) { echo json_encode(['status' => 'error', 'message' => 'Nilai status operasional tidak valid.']); exit; } // ── Update data di database menggunakan prepared statement ─────────────────── // Latitude dan longitude TIDAK disertakan dalam UPDATE — tidak berubah $stmt = $koneksi->prepare( "UPDATE spbu SET nama_spbu = ?, status_ramai = ?, buka_24_jam = ?, status_operasional = ?, nomor_hp = ? WHERE id = ?" ); // Bind parameter: s = string, i = integer $stmt->bind_param( 'sssssi', $nama_spbu, $status_ramai, $buka_24_jam, $status_operasional, $nomor_hp, $id ); // Eksekusi query if ($stmt->execute()) { if ($stmt->affected_rows > 0 || $stmt->affected_rows === 0) { // Ambil data terbaru dari DB untuk dikembalikan ke JavaScript // JS menggunakan data ini untuk memperbarui marker & layer group $result = $koneksi->query("SELECT * FROM spbu WHERE id = $id"); if ($result && $result->num_rows > 0) { $updatedData = $result->fetch_assoc(); $updatedData['latitude'] = (float) $updatedData['latitude']; $updatedData['longitude'] = (float) $updatedData['longitude']; echo json_encode([ 'status' => 'success', 'message' => 'Data SPBU berhasil diperbarui.', 'data' => $updatedData ]); } else { echo json_encode(['status' => 'error', 'message' => 'Data tidak ditemukan setelah update.']); } } else { echo json_encode(['status' => 'error', 'message' => 'Data tidak ditemukan.']); } } else { echo json_encode(['status' => 'error', 'message' => 'Gagal memperbarui data: ' . $stmt->error]); } $stmt->close(); $koneksi->close(); ?>