Tp php blog
Thème :
Junior
1 vues ·18/20 leçons

Page 18 : Modification d’un Article - Découpage de la Logique

La modification est une opération de “lecture” suivie d’une “écriture”. Voici comment nous organisons admin-update-article.php.

Étape 1 : Récupération de l’article à modifier

Avant d’afficher le formulaire, nous devons savoir quoi modifier.

if (isset($_GET['id']) && filter_var($_GET['id'], FILTER_VALIDATE_INT)) {
    $articleId = (int)$_GET['id'];
    $sql = 'SELECT * FROM articles WHERE id = ?';
    $query = $pdo->prepare($sql);
    $query->execute([$articleId]);
    $article = $query->fetch(PDO::FETCH_ASSOC);

    // Extraction des données pour le formulaire
    $title = $article['title'] ?? '';
    $currentImage = $article['image'] ?? null;
    // ...
}
  • Analyse : L’ID est récupéré via l’URL ($_GET). On utilise filter_var pour s’assurer que c’est bien un nombre.

Étape 2 : Traitement de la soumission (POST)

Si l’utilisateur clique sur “Mettre à jour”, on récupère les nouvelles données.

if (isset($_POST['update'])) {
    $articleId = (int)$_POST['id'];
    $title = clean_input((string)$_POST['title']);
    // ...

Étape 3 : Gestion intelligente de l’image

C’est l’étape la plus délicate. Si une nouvelle image est envoyée, il faut faire le ménage.

    if (!empty($_FILES['a_image']['name']) && $_FILES['a_image']['error'] === UPLOAD_ERR_OK) {
        // ... (Vérifications format/taille identiques à l'ajout)

        if (move_uploaded_file($file['tmp_name'], $path . $filename)) {
            // SUPPRESSION DE L'ANCIEN FICHIER
            if ($currentImage && file_exists($currentImage)) {
                unlink($currentImage);
            }
            $currentImage = $path . $filename;
        }
    }
  • Analyse : unlink() est la commande qui supprime physiquement l’ancien fichier du disque dur. Sans cela, votre serveur se remplirait de fichiers inutiles.

Étape 4 : La mise à jour SQL (UPDATE)

On applique les changements en filtrant impérativement par l’ID.

    $query = $pdo->prepare('UPDATE articles SET
        title = :title, slug = :slug, content = :content, image = :image,
        updated_at = NOW()
        WHERE id = :id');

    $query->execute([
        'title' => $title,
        'slug' => createSlug($title),
        'content' => $content,
        'image' => $currentImage,
        'id' => $articleId
    ]);
  • Analyse : N’oubliez jamais le WHERE id = :id. Sans lui, vous modifierez tous les articles de la base de données avec le même contenu !

Étape 5 : Retour à la liste

Une fois fini, on redirige l’utilisateur avec un message de succès.

    $_SESSION['success']['update'] = 'Article mis à jour !';
    header('Location: admin-list-article.php');
    exit();

Prêt à passer à la suite ?

Vous avez terminé cette leçon sur Page 18 : Modification d'un Article - Découpage de la Logique. Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.