Petunjuk
Klik peta berurutan untuk membuat garis jalan sementara. Sistem akan menghitung panjang otomatis dan menyimpan koordinat JSON ke database.
- = htmlspecialchars($error) ?>
PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; $errors = []; $success = ''; $input = [ 'nama_jalan' => '', 'status_jalan' => '', 'panjang_meter' => '', 'koordinat_json' => '', ]; try { $pdo = new PDO($dsn, $dbUser, $dbPass, $options); // Pastikan tabel t_jalan ada. $pdo->exec("CREATE TABLE IF NOT EXISTS t_jalan ( id INT AUTO_INCREMENT PRIMARY KEY, nama_jalan VARCHAR(255) NOT NULL, status_jalan ENUM('nasional','provinsi','kabupaten') NOT NULL, panjang_meter DECIMAL(10,2) NOT NULL, koordinat_json LONGTEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"); if ($_SERVER['REQUEST_METHOD'] === 'POST') { $input['nama_jalan'] = trim($_POST['nama_jalan'] ?? ''); $input['status_jalan'] = $_POST['status_jalan'] ?? ''; $input['panjang_meter'] = $_POST['panjang_meter'] ?? ''; $input['koordinat_json'] = $_POST['koordinat_json'] ?? ''; if ($input['nama_jalan'] === '') { $errors[] = 'Nama Jalan harus diisi.'; } if (!in_array($input['status_jalan'], ['nasional', 'provinsi', 'kabupaten'], true)) { $errors[] = 'Status Jalan tidak valid.'; } if ($input['panjang_meter'] === '' || !is_numeric($input['panjang_meter']) || (float)$input['panjang_meter'] <= 0) { $errors[] = 'Panjang Jalan harus dihitung otomatis dari peta dan tidak boleh kosong.'; } $coords = json_decode($input['koordinat_json'], true); if (!is_array($coords) || count($coords) < 2) { $errors[] = 'Koordinat JSON tidak valid: minimal 2 titik diperlukan.'; } if (empty($errors)) { $stmt = $pdo->prepare('INSERT INTO t_jalan (nama_jalan, status_jalan, panjang_meter, koordinat_json) VALUES (:nama, :status, :panjang, :koordinat)'); $stmt->execute([ ':nama' => $input['nama_jalan'], ':status' => $input['status_jalan'], ':panjang' => (float)$input['panjang_meter'], ':koordinat' => json_encode($coords, JSON_UNESCAPED_UNICODE), ]); $success = 'Data jalan berhasil disimpan ke database.'; $input = ['nama_jalan' => '', 'status_jalan' => '', 'panjang_meter' => '', 'koordinat_json' => '']; } } $stmt = $pdo->query('SELECT id, nama_jalan, status_jalan, panjang_meter, koordinat_json FROM t_jalan ORDER BY id DESC'); $jalanList = $stmt->fetchAll(); } catch (PDOException $e) { $errors[] = 'Koneksi database gagal: ' . htmlspecialchars($e->getMessage()); $jalanList = []; } ?>
Tambah, simpan, dan tampilkan polyline jalan dengan LeafletJS dan MySQL.
Klik peta berurutan untuk membuat garis jalan sementara. Sistem akan menghitung panjang otomatis dan menyimpan koordinat JSON ke database.