Ce site utilise des cookies pour améliorer uniquement votre expérience utilisateur.
Vous pouvez lire à tout moment comment nous utilisons les cookies sur le site.
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:
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;
}
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 !