'error', 'message' => 'Method tidak diizinkan.']); exit; } // ── Ambil & bersihkan input dari form ──────────────────────────────────────── $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'] ?? ''); $latitude = trim($_POST['latitude'] ?? ''); $longitude = trim($_POST['longitude'] ?? ''); // ── Validasi: semua field wajib terisi ─────────────────────────────────────── if ( empty($nama_spbu) || empty($status_ramai) || empty($buka_24_jam) || empty($status_operasional) || empty($nomor_hp) || $latitude === '' || $longitude === '' ) { 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; } // ── Validasi latitude & longitude harus numerik ────────────────────────────── if (!is_numeric($latitude) || !is_numeric($longitude)) { echo json_encode(['status' => 'error', 'message' => 'Koordinat tidak valid.']); exit; } // Konversi ke float $latitude = (float) $latitude; $longitude = (float) $longitude; // ── Simpan ke database menggunakan prepared statement ──────────────────────── // Prepared statement mencegah SQL Injection $stmt = $koneksi->prepare( "INSERT INTO spbu (nama_spbu, status_ramai, buka_24_jam, status_operasional, nomor_hp, latitude, longitude) VALUES (?, ?, ?, ?, ?, ?, ?)" ); // Bind parameter: s = string, d = double $stmt->bind_param( 'sssssdd', $nama_spbu, $status_ramai, $buka_24_jam, $status_operasional, $nomor_hp, $latitude, $longitude ); // Eksekusi query if ($stmt->execute()) { $newId = $koneksi->insert_id; // Ambil data lengkap termasuk created_at & updated_at dari DB $res = $koneksi->query("SELECT * FROM spbu WHERE id = $newId"); $newData = $res->fetch_assoc(); $newData['latitude'] = (float) $newData['latitude']; $newData['longitude'] = (float) $newData['longitude']; // Kembalikan data lengkap agar JS bisa menentukan layer group yang tepat echo json_encode([ 'status' => 'success', 'message' => 'Data SPBU berhasil ditambahkan.', 'data' => $newData ]); } else { echo json_encode(['status' => 'error', 'message' => 'Gagal menyimpan data: ' . $stmt->error]); } $stmt->close(); $koneksi->close(); ?>