Suppression d'un enregistrement en fonction d'un fichier

Fermé
ameb2908 Messages postés 81 Date d'inscription jeudi 17 mars 2022 Statut Membre Dernière intervention 13 avril 2024 - 20 mars 2022 à 15:58
jordane45 Messages postés 38201 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2024 - 22 mars 2022 à 12:56
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


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:

7 réponses

jordane45 Messages postés 38201 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2024 4 675
20 mars 2022 à 16:14
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.
0
ameb2908 Messages postés 81 Date d'inscription jeudi 17 mars 2022 Statut Membre Dernière intervention 13 avril 2024
20 mars 2022 à 16:30
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é.
0
jordane45 Messages postés 38201 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2024 4 675
20 mars 2022 à 19:37
Fais donc un var_dump de la variable message
0
jordane45 Messages postés 38201 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2024 4 675
20 mars 2022 à 20:10
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é...
<?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);
}

0
ameb2908 Messages postés 81 Date d'inscription jeudi 17 mars 2022 Statut Membre Dernière intervention 13 avril 2024
22 mars 2022 à 09:44
Bonjour, ça ne fonctionne toujours pas et le var_dump aussi
0
jordane45 Messages postés 38201 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2024 4 675
22 mars 2022 à 09:48
ç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..
0
jordane45 Messages postés 38201 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2024 4 675 > jordane45 Messages postés 38201 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2024
22 mars 2022 à 09:51
Ah.. je viens de voir une petite erreur...
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ameb2908 Messages postés 81 Date d'inscription jeudi 17 mars 2022 Statut Membre Dernière intervention 13 avril 2024
22 mars 2022 à 09:52
0
jordane45 Messages postés 38201 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2024 4 675
22 mars 2022 à 12:56
Dis-donc..... Tu as vu le nom de ta variable dans l' url ?????
Ce n'est pas du tout celle que tu recherches....
0
ameb2908 Messages postés 81 Date d'inscription jeudi 17 mars 2022 Statut Membre Dernière intervention 13 avril 2024
22 mars 2022 à 09:58
le var_dump ne fonctionne pas
0
ameb2908 Messages postés 81 Date d'inscription jeudi 17 mars 2022 Statut Membre Dernière intervention 13 avril 2024
22 mars 2022 à 10:11
J'ai corrigé ce que tu m'as dit, toujours pareil.
0