8722 sujets

Développement web côté serveur, CMS

Salut,

Je travaille sur le back-office d'un site web auquel j'ai implémenter un module pour la gestion des albums photos. En effet, je souhaite permettre à l'utilisateur finale de supprimer un album photo de la base données et par la même occasion effacer les fichiers photos qui y sont rattachés, en appuyant sur un bouton. Pour cela, j'ai écris un bout de code qui fonctionne correctement pour le module de news mais qui pose problème pour les albums photos. Car contrairement aux articles de news qui n'ont qu'une image chacun, un album photo contient plusieurs images rattachées.

voici le bout de code que j'utilise pour les news

/**
* SUPPRESSION
**/

if(isset($_GET['supprimer'])){
checkCsrf();
$id = $db->quote($_GET['supprimer']);
$select = $db->query("SELECT image FROM articles WHERE id=$id");
$image = $select->fetch();
$images = glob(IMAGES . '/articles/' .pathinfo($image['image'], PATHINFO_FILENAME) . '_*x*.*');
if (is_array($images)) {
foreach ($images as $v) {
unlink($v);
}
}
unlink(IMAGES . '/articles/' . $image['image']);
$db->query("DELETE FROM articles WHERE id=$id");
setFlash('Article supprimé avec succès', 'info');
header('Location:articles.php');
die();
}


et celui que j'ai essayé d'utiliser pour les albums mais qui me renvoie un message d'erreur, comme quoi la variable 'nom' n'existe pas

if(isset($_GET['supprimer'])){
checkCsrf();
$id = $db->quote($_GET['supprimer']);
$select = $db->query("SELECT nom FROM images_reportages WHERE id_reportage=$id");
$image = $select->fetchAll();
$images = glob(IMAGES . '/publi-reportages/' .pathinfo($image['nom'], PATHINFO_FILENAME) . '_*x*.*');
if (is_array($images)) {
foreach ($images as $v) {
unlink($v);
}
}
unlink(IMAGES . '/publi-reportages/' . $image['image']);
$db->query("DELETE FROM publi_reportages WHERE id=$id");
setFlash('Elément supprimé avec succès', 'info');
header('Location:publi_reportages.php');
die();
}

Quelqu'un voudrait-il m'aider à résoudre mon problème? Merci!
Modifié par Smokee (16 Jul 2014 - 21:19)
Salut

Pense à utiliser les balises "code" la prochaine fois ça sera plus lisible Smiley cligne

Que retourne un
var_dump($image);
?
Modifié par John Wayne (16 Jul 2014 - 22:00)
Salut,

le fetchAll retourne un tableau d'enregistrement et non un enregistrement

tu dois donc faire une boucle foreach sur $image et unlink toutes les images

(comme avec les résultats de $images).
Merci CPascal pour ton aide, elle m'a été très précieuse! Message reçu John Wayne Smiley cligne , j'en tiendrai compte prochainement ! Encore merci à vous deux pour vos réponses Smiley smile .