Suppression d'un enregistrement en fonction d'un fichier
ameb2908
Messages postés
93
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour, Je m'explique :
le but est de supprimer l'enregistrement si le fichier est supprimer.
Rien ne se passe, même pas de message d'erreur ou de succès.
Besoin d'aide, merci d'avance & bonne après-midi.
class/imageManager.php
process/process-delete-image.php
admin/delete-image.php
le but est de supprimer l'enregistrement si le fichier est supprimer.
Rien ne se passe, même pas de message d'erreur ou de succès.
Besoin d'aide, merci d'avance & bonne après-midi.
class/imageManager.php
class imageManager { private $db; public function __construct($db) { $this->setDb($db); } public function setDb(PDO $dbh) { return $this->db = $dbh; } public function deleteImageData($filename) { $filename = $_GET['filename']; try { $sql = 'DELETE FROM images WHERE filename = :filename'; $stmnt = $this->db->prepare($sql); $stmnt->bindParam(':filename', $filename); $stmnt->execute(); $count = $stmnt->rowCount(); return $count; } catch(PDOException $e) { echo 'Une erreur est survenue lors de la suppression des données dans la base.<br> Message d\'erreur : ' . $e->getMessage(); } } }
process/process-delete-image.php
if(isset($_GET['filename'])) { // Suppression des fichiers : images et vignette $path_images = IMAGE_DIR_PATH . $filename; $path_thumbs = THUMB_DIR_PATH . $filename; if(file_exists($path_images)) { if(!unlink($path_images)) { $message = '<p class="msg_error">Une erreur est survenue lors de la supression du fichier image.</p>'; } else { $manager = new imageManager($db); $deleteImageData = $manager->deleteImageData($filename); if(true === $deleteImageData) { echo '<p class="msg_success">Le fichier a bien été supprimé.</p>'; } else { $message = $deleteImageData; } } } else { $message = '<p class="msg_error">Le fichier image n\'existe pas.</p>'; } if(file_exists($path_thumbs)) { if(!unlink($path_thumbs)) { $message = '<p class="msg_error">Une erreur est survenue lors de la supression du fichier vignette.</p>'; } else { $manager = new imageManager($db); $deleteImageData = $manager->deleteImageData($filename); if(true === $deleteImageData) { echo '<p class="msg_success">Le fichier a bien été supprimé.</p>'; } else { $message = $deleteImageData; } } } else { $message = '<p class="msg_error">Le fichier vignette n\'existe pas.</p>'; } }
admin/delete-image.php
require('../include/inc-connexion.php'); require('../include/inc-config.php'); require('../class/imageManager.php'); require('../process/process-delete-image.php');
<!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Suppression d'image</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <div id="wrapper"> <h1>suppression d'image</h1>
if(isset($message)) echo $message if(isset($message)) echo $message
</div> </body> </html>
Configuration: Windows / Chrome 99.0.4844.74
A voir également:
- Suppression d'un enregistrement en fonction d'un fichier
- Forcer la suppression d'un fichier - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier bin - Guide
- Fonction si et - Guide
7 réponses
Bonjour,
Mets des VAR_DUMP de tes différentes variables dans tes IF/ELSE et regarde ce qui s'affiche .....
Fais aussi un VAR_DUMP de la variable $_GET et montre nous ce qu'elle contient..
Et quand tu dis que tu n'as pas de message ... tu as une page blanche ou tu as quand même des choses qui s'affichent ??
Si page blanche.. c'est que tu as une erreur 500 ( une erreur dans le code)
Pense bien à activer l'affichage des erreurs PHP .. et à regarder, au cas où, dans le fichier error.log d'apache.
Mets des VAR_DUMP de tes différentes variables dans tes IF/ELSE et regarde ce qui s'affiche .....
Fais aussi un VAR_DUMP de la variable $_GET et montre nous ce qu'elle contient..
Et quand tu dis que tu n'as pas de message ... tu as une page blanche ou tu as quand même des choses qui s'affichent ??
Si page blanche.. c'est que tu as une erreur 500 ( une erreur dans le code)
Pense bien à activer l'affichage des erreurs PHP .. et à regarder, au cas où, dans le fichier error.log d'apache.
J'ai fait un var_dump, var_dump ne s'affiche pas, que ça soit dans les IF/ELSE ou la superglobale $_GET.
Quand je dis page blanche, seul le h1 s'affiche.
Et l'affichage des erreurs PHP est bien activé.
Quand je dis page blanche, seul le h1 s'affiche.
Et l'affichage des erreurs PHP est bien activé.
J'ai vu où était ton erreur ...
Tu utilises la variable $filename .. alors qu'elle n'existe nul part ...
Tiens, essayes ça, code revu et corrigé...
Tu utilises la variable $filename .. alors qu'elle n'existe nul part ...
Tiens, essayes ça, code revu et corrigé...
<?php //Affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //découpage en FONCTION ... ça évite de réécrire plusieurs fois le même code ! function deleteImg($fileDir, $filename){ $filePath = $fileDir . $filename; if(file_exists($filePath)) { if(!unlink($filePath)) { return '<p class="msg_error">Une erreur est survenue lors de la supression du fichier image.</p>'; }else { $manager = new imageManager($db); $deleteImageData = $manager->deleteImageData($filename); if(true === $deleteImageData) { return '<p class="msg_success">Le fichier a bien été supprimé.</p>'; } else { return $deleteImageData; } } } else { return '<p class="msg_error">Le fichier image n\'existe pas.</p>'; } } //récupération PROPRE des variables AVANT de les utiliser $filename = !empty($_GET['filename']) ? trim($_GET['filename']) : NULL; if($filename) { // Suppression des fichiers : images et vignette $path_images = IMAGE_DIR_PATH . $filename; $path_thumbs = THUMB_DIR_PATH . $filename; $message1 = deleteImg($path_images, $filename); $message2 = deleteImg($path_thumbs, $filename); var_dump($message1); var_dump($message2); }else{ echo " Aucun Fihier à traiter !"; var_dump($_GET); }
Bonjour, ça ne fonctionne toujours pas et le var_dump aussi
ça veut dire quoi .. et le var_dump aussi .....
Tu peux nous montrer le code source généré de ta page ( que tu obtiens en affichant la page dans ton navigateur puis en utilisant le raccourci clavier CTRL + u )
ainsi qu'une capture écran de celle-ci ?
Montres nous également ce que contient ta barre de navigation (l'url ) lorsque tu essayes de supprimer une image..
Tu peux nous montrer le code source généré de ta page ( que tu obtiens en affichant la page dans ton navigateur puis en utilisant le raccourci clavier CTRL + u )
ainsi qu'une capture écran de celle-ci ?
Montres nous également ce que contient ta barre de navigation (l'url ) lorsque tu essayes de supprimer une image..
Ah.. je viens de voir une petite erreur...
Remplaces les deux lignes
par
et supprime ces deux lignes là désormais inutiles :
par contre.. c'etait étonnant que rien ne s'affiche comme message...
Remplaces les deux lignes
$message1 = deleteImg($path_images, $filename); $message2 = deleteImg($path_thumbs, $filename);
par
$message1 = deleteImg(IMAGE_DIR_PATH , $filename); $message2 = deleteImg(THUMB_DIR_PATH , $filename);
et supprime ces deux lignes là désormais inutiles :
$path_images = IMAGE_DIR_PATH . $filename; $path_thumbs = THUMB_DIR_PATH . $filename;
par contre.. c'etait étonnant que rien ne s'affiche comme message...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question