$_POST['id'] ?? generateSlug($_POST['title']), 'title' => $_POST['title'], 'description' => $_POST['description'], 'cover' => $story['cover'] ?? '', // Géré séparément par l'upload 'created' => $story['created'] ?? date('Y-m-d'), 'updated' => date('Y-m-d'), 'chapters' => $story['chapters'] ?? [] ]; // Gestion de l'upload de couverture if (isset($_FILES['cover']) && $_FILES['cover']['error'] === UPLOAD_ERR_OK) { $uploadDir = '../assets/images/covers/'; $extension = strtolower(pathinfo($_FILES['cover']['name'], PATHINFO_EXTENSION)); $filename = $storyData['id'] . '.' . $extension; if (move_uploaded_file($_FILES['cover']['tmp_name'], $uploadDir . $filename)) { $storyData['cover'] = 'assets/images/covers/' . $filename; } } Stories::save($storyData); $success = 'Roman sauvegardé avec succès'; $story = $storyData; } catch (Exception $e) { $error = 'Erreur lors de la sauvegarde : ' . $e->getMessage(); } } function generateSlug($title) { $slug = strtolower($title); $slug = preg_replace('/[^a-z0-9-]/', '-', $slug); $slug = preg_replace('/-+/', '-', $slug); return trim($slug, '-'); } ?> <?= $story ? 'Modifier' : 'Nouveau' ?> roman - Administration

roman

Couverture actuelle

Chapitres

$chapter): ?>