SQL

DELETE SQL

Résolu

Bonjour,

Je débute dans la programmation en PHP et SQL .

J'ai suivie les tuto/cours sur YouTube concernant le site de rencontre et mon problème se trouve au niveau de l'album d'image qui se trouve dans le profil de l'utilisateur.


j'ai mis un button de type submit en dessous de chaque image dans l'album qui permet de supprimer une image sélectionnée,

mais lorsque j'execute ma fonction SQL j'ai un message d'erreur.


"Warning: PDOStatement::execute() expects parameter 1 to be array, string given in C:\laragon\www\La_meet_de_nuit\mon_compte.php on line 145"

(la dernière ligne avant le header:Location)


Vous trouverez ci dessous le code (le code reste similaire à celui des videos), la partie qui bug se trouve à la fin.


concernant ma base de donnée j'ai une table qui se nomme "album" et ça structure est compose de:

  • id = clé primaire
  • id_user = $session ['id]
  • photo = nom de l'image
  • date_photo =datetime


Je reste à votre disposition pour toute autre question.


Merci d'avance,


// ***********************PHOTO album*************************************
if (isset($_POST['album-envoyer'])) {
    //telecharge et renomme le fichier / is_dir =verif si dossier existe
    $dossier = "./upload/" . $_SESSION['user']['id'] . "/";



    if (!is_dir($dossier)) {
        mkdir($dossier); // creer le dossier
    }
    $dossier .=  "album/";


    if (!is_dir($dossier)) {
        mkdir($dossier); // creer le dossier
    }
    // *************POIDS DE L IMAGE***************
    //a modifier en fonction du serveur
    $sizeMaxImg = 10485760; //10 mb = 8388608 bytes



    if ($_FILES['photo']['size'] <= $sizeMaxImg) {


        //nom du fichier
        $fichier = strip_tags(basename($_FILES['photo']['name']));


        //crypter le nom de l avatar
        $fichier_extension = strtolower(substr(strrchr($fichier, '.'), 1));


        // filtre pour extension 
        $listeExtension = array('jpg' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'png' => 'image/png', 'gif' => 'image/gif');
        // filtre pour extension Internet explorer
        $listeExtensionIE = array('jpg' => 'image/pjpg', 'jpeg' => 'image/pjpeg');
        // filtre pour extension autorisée
        $extensionsValides = array('jpeg', 'jpg', 'png', 'gif');


        if (in_array($fichier_extension, $extensionsValides)) {


            //ajoute l'extension au fichier crypter (jpg, png,...)
            $fichier = md5(uniqid(rand(), true)) . '.' . $fichier_extension; //on peut aussi utiliser hash_file



            if (move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $fichier)) { //deplace le fichier


                //verifie et supp si un fichier existe
                if (file_exists($dossier . $_SESSION['user']['photo']) && isset($_SESSION['user']['photo'])) {


                    unlink($dossier . $_SESSION['user']['photo']) && isset($_SESSION['user']['photo']);
                }


                $verif_extension = getimagesize($dossier . $fichier);


                if ($verif_extension['mime'] == $listeExtension[$fichier_extension] || $verif_extension['mime'] == $listeExtensionIE[$fichier_extension]) { //type mime = imagge/jpeg (exemple)


                    //redimention de l'image (pas necessaire)


                    include('./redimention_img_album.php');



                    $req = $BDD->prepare("INSERT INTO album (id_user, photo, date_photo)
                    VALUE (?, ?, ?)");


                    $req->execute(array($_SESSION['user']['id'], $fichier, date('Y-m-d H:i:s')));




                    header('Location: ./mon_compte.php');
                    exit;
                } else {
                    //extension non valide
                    header('Location: ./mon_compte.php');
                    exit;
                }
            } else {
                unlink("./upload/" . $_SESSION['user']['id'] . '/' . $dossier . $fichier); //supp img qui n'a pas été traité


                echo 'Impossible de déplacer le fichier';
                header('Location: ./mon_compte.php');
                exit;
            }


            header('Location: ./mon_compte.php');
            exit;
        } else {
            echo 'Extention non valide (jpeg, jpg, png ou gif)';
            header('Location: ./mon_compte.php');
            exit;
        }
    } else { //else size image
        echo 'Le poids de l image doit etre de 10 Mo maximum';
        header('Location: ./mon_compte.php');
        exit;
    }
}


//*******************Album IMAGE************************* */
$req = $BDD->prepare("SELECT *
FROM album
WHERE id_user = ?");
$req->execute(array($users_id));


$voir_album = $req->fetchAll();

// **************SUPPRIMER IMAGE ALBUM******************
//La partie qui bug
if (isset($_POST['delet-img'])) {

$req = $BDD->prepare("DELETE FROM album 
        WHERE id = ?"); 
$req->execute($users_id);

//   header('Location: ./mon_compte.php');
//     exit;
}
454 vues
07 février 2022 à 19:43
Cette pub permet au site de vivre ...
Compte-supprimé
Le 07 Février 2022 à 21:01

@Flomir,


Merci de ton aide je vais tester d'autre truc je trouverai bien👍👍

Cette pub permet au site de vivre ...

6 commentaires

@Flomir,


Merci de ton aide je vais tester d'autre truc je trouverai bien👍👍

Re @benoi777 :

Et bien je te conseille de debugger ton code à présent.

Tu trouveras 😜

Re @benoi777 :


Ta variable $users_id est-elle définie ?

Une ligne dans ta table correspond t'elle à ta relation dans ta base de données ?

Bonsoir @Flomir,


Merci pour ta réponse.

il est vrai que j'ai oublié de le noté ainsi (j'ai essayé pas mal de chose avant de posté mon message) , par contre j'ai bien le message d'erreur qui s'enlève mais rien ne se passe,

j'ai essayer plusieurs variable dans le execute mais aucune d'elle n'a fonctionner😂





Bonsoir @benoi777 !


L'erreur te précise très bien le soucis dans ton code.


expects parameter 1 to be array, string given


En français :

s'attend à ce que le paramètre 1 soit un tableau, la chaîne de caractères étant donnée.


Dans ta ligne qui pose problème :

$req->execute($users_id);


Tu remarqueras que dans ton exécute, tu n'as pas mis de array (tableau).


Solution :

Tu remplaces cette ligne :

$req->execute($users_id);


Par :

$req->execute(array($users_id));

Ou :

$req->execute([$users_id]);


À toi de choisir 😁

Bonne soirée !


Cette pub permet au site de vivre ...