Page 16 : Ajout d’un Article - Le Guide Pas à Pas (Logique)
Créer un article est un processus qui se décompose en 6 étapes logiques. En tant qu’ingénieur, nous allons “découper” le fichier admin-add-article.php pour comprendre chaque rouage.
Étape 1 : Initialisation et Sécurité
Tout fichier sensible doit commencer par identifier qui a le droit d’y accéder.
<?php
declare(strict_types=1);
session_start();
require_once 'database/database.php';
require_once 'helpers.php';
// Le mur de sécurité
require_once 'app/Emuns/Role.php';
if (!isset($_SESSION['auth']) || !is_array($_SESSION['auth']) || $_SESSION['auth']['role'] !== Role::ADMIN->value) {
header('Location: index.php');
exit();
}
- Analyse : On charge les outils (
database,helpers) et on vérifie le rôle. Si vous n’êtes pas admin, le script s’arrête là (exit).
Étape 2 : Détection de la soumission
On ne traite les données que si l’utilisateur a cliqué sur le bouton “Ajouter”.
if (isset($_POST['add-article'])) {
// Le code de traitement commence ici...
}
Étape 3 : Nettoyage des données (Sanitization)
C’est ici qu’on applique la règle d’or : “Ne jamais faire confiance aux entrées utilisateur”.
$title = clean_input((string) ($_POST['title'] ?? ''));
$slug = createSlug($title);
$introduction = clean_input((string) ($_POST['introduction'] ?? ''));
$content = $_POST['content'];
$imagePath = null;
- Analyse :
clean_inputretire les balises HTML et les espaces inutiles.createSlugtransforme votre titre en une URL propre (ex: “Mon Titre” -> “mon-titre”).
Étape 4 : Validation et Unicité
Avant d’écrire en base de données, on vérifie que tout est correct.
if (empty($title) || empty($slug) || empty($introduction) || empty($content)) {
$error = 'Veuillez remplir tous les champs obligatoires !';
} else {
// On vérifie si le lien (slug) n'existe pas déjà
$stmt = $pdo->prepare('SELECT COUNT(*) FROM articles WHERE slug = :slug');
$stmt->execute(['slug' => $slug]);
if ($stmt->fetchColumn() > 0) {
$error = "Ce titre est déjà utilisé, le lien (slug) doit être unique.";
} else {
// Étape suivante...
}
}
Étape 5 : L’Enregistrement final
Si tout est valide, on enregistre l’article.
$query = $pdo->prepare('INSERT INTO articles
(title, slug, introduction, content, image, created_at)
VALUES (:title, :slug, :introduction, :content, :image, NOW())');
$query->execute([
'title' => $title,
'slug' => $slug,
'introduction' => $introduction,
'content' => $content,
'image' => $imagePath, // Traité en page 17
]);
Étape 6 : Redirection et Confirmation
Une fois fini, on informe l’utilisateur.
if ($query->rowCount() > 0) {
$_SESSION['success']['update'] = 'Article créé avec succès!';
header('Location: admin-list-article.php');
exit();
}
- Analyse : On stocke le message de succès en session pour qu’il “survive” à la redirection vers la liste des articles.
La gestion spécifique des images est détaillée dans la page suivante pour ne pas surcharger ce chapitre.
Prêt à passer à la suite ?
Vous avez terminé cette leçon sur Page 16 : Ajout d'un Article - Le Guide Pas à Pas (Logique). Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.