Tp 2 php render redirect blogpoo
Thème :
Junior
1 vues ·18/30 leçonsPage 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 utilisefilter_varpour 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.