Fonction delete qui ne marche pas
Résolu
max30_3775
Messages postés
178
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, je sollicite votre aide car je cherche à effacer une annonce avec ses images (de la bdd et du serveur).
En cliquant sur supprimer, rien ne se passe.
Voici l'intégralité du code:
Voici l'url de la page: http://projetsite/membre/supprimerannonce.php?id=5
Auriez-vous une solution?
En cliquant sur supprimer, rien ne se passe.
Voici l'intégralité du code:
<?php session_start(); include "../cnx.php"; include "../header.php"; function deleteannonce($idannonce){ global $bdd; $sql= "DELETE A, I From annonces A LEFT JOIN I images_annonces ON I.id_annonce=A.id WHERE A.id= ".$idannonce." "; $req = $bdd->prepare($sql); $req->execute($idannonce); return $req; } //On récupère un array des filepath d'une annonce function getAllImgByIdAnnonce($idannonce){ global $bdd; $sql = "SELECT filepath FROM images_annonces WHERE id_annonce=?"; $datas = array($idannonce); try{ $req = $bdd -> prepare($sql) ; $res = $req->execute($datas) ; return $req->fetchAll(PDO::FETCH_COLUMN); //on retourne le resultat en Array }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } } // On supprime les photos sur le serveur et en bdd function deleteOldPhoto($idannonce,$location="../pictures/"){ //on récupère la liste des photos existantes en bdd $imgs = getAllImgByIdAnnonce($idannonce); //on boucle dessus pour les supprimer sur le serveur foreach($imgs as $img){ @unlink($location.$img); } //on supprime les images dans la bdd return deleteannonce($idannonce); } if(isset($_POST['supprimer'])){ $idannonce= ($_GET["id"]); $suprimer=deleteannonce($idannonce); deleteOldPhoto($idannonce,$location="../pictures/"); header("Location: /membre/profilannonce.php"); } ?> <!DOCTYPE html> <html lang="fr"> <head> <style> .alert-warning{ margin-top: 100px; } </style> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script> <title>Document</title> </head> <body> <div class="alert alert-warning"> <strong>Attention!</strong> Vous êtes sur le point de supprimer cette annonce. Cliquez sur supprimer pour continuer: <input type="submit" name="supprimer" value="supprimer"> </div> </body> </html>
Voici l'url de la page: http://projetsite/membre/supprimerannonce.php?id=5
Auriez-vous une solution?
A voir également:
- Fonction delete qui ne marche pas
- Hiberfil.sys delete - Guide
- Fonction si et - Guide
- Juste delete me - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
7 réponses
Bonjour
Commence par mettre ta requête dans un bloc try/catch
Et retire la redirection...
Regarde ce que ça t'affiche..
Ah... Et montre nous le code html quu va avec ton bouton de suppression
Commence par mettre ta requête dans un bloc try/catch
Et retire la redirection...
Regarde ce que ça t'affiche..
Ah... Et montre nous le code html quu va avec ton bouton de suppression
Bonjour Jordane, c'est fait le bloc try/catch a été ajouté dans la requête, et la redirection enlevée:
Le code html:
<?php session_start(); include "../cnx.php"; include "../header.php"; function deleteannonce($idannonce){ global $bdd; $sql= "DELETE A, I From annonces A LEFT JOIN I images_annonces ON I.id_annonce=A.id WHERE A.id= ".$idannonce." "; try{ $req = $bdd->prepare($sql); $req->execute($idannonce); }catch(Exception $e){ echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($req); } return $req; } //On récupère un array des filepath d'une annonce function getAllImgByIdAnnonce($idannonce){ global $bdd; $sql = "SELECT filepath FROM images_annonces WHERE id_annonce=?"; $datas = array($idannonce); try{ $req = $bdd -> prepare($sql) ; $res = $req->execute($datas) ; return $req->fetchAll(PDO::FETCH_COLUMN); //on retourne le resultat en Array }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } } // On supprime les photos sur le serveur et en bdd function deleteOldPhoto($idannonce,$location="../pictures/"){ //on récupère la liste des photos existantes en bdd $imgs = getAllImgByIdAnnonce($idannonce); //on boucle dessus pour les supprimer sur le serveur foreach($imgs as $img){ @unlink($location.$img); } //on supprime les images dans la bdd return deleteannonce($idannonce); } if(isset($_POST['supprimer'])){ $idannonce= ($_GET["id"]); $suprimer=deleteannonce($idannonce); deleteOldPhoto($idannonce,$location="../pictures/"); } ?> <!DOCTYPE html> <html lang="fr"> <head> <style> .alert-warning{ margin-top: 100px; } </style> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script> <title>Document</title> </head> <body> <div class="alert alert-warning"> <strong>Attention!</strong> Vous êtes sur le point de supprimer cette annonce. Cliquez sur valider pour continuer: <input type="submit" name="supprimer" value="supprimer"> </div> </body> </html>
Le code html:
<style> /*/photo header*/ html, body { margin: 0; padding: 0; } /* ------------------------------- */ /* MENU */ #menu { position: relative; width: 100%; } #menu ul, #menu li, #menu li a { position: relative; margin: 0; padding: 0; box-sizing:border-box; list-style: none; z-index:1; } #menu ul { width: 100%; background:#FFA500;/*orange*/ font-weight: bold; } #menu ul li a { display: block; color:#873600;/*dark orange*/ padding: 20px 30px; position: relative; text-decoration: none; height:100%; } /* --------------- */ /* MENU : niveau 1 */ #menu nav > ul > li > a { color: white; } /* --------------- */ /* MENU : niveau 2 */ #menu ul ul { color:white; background:#f4d03f;/*jaune-orange*/ } #menu ul ul li > a { padding: 15px 30px; font-size: 10px bold; color:white;/*dark orange*/ } /* --------------- */ /* HOVER : afficher/masquer les SOUS-MENUS*/ #menu ul li > ul { display: none; /*on masque le SOUS-MENU*/ } #menu ul li:hover > ul { display: block; /*on affiche le SOUS-MENU*/ } #menu nav > ul > li.active > a, /* MENU : niveau 1 ACTIF */ #menu ul li:hover > a { color:#21618c;/*bleu*/ background: silver; } #menu nav > ul > li.active > a:before, /* MENU : niveau 1 ACTIF */ #menu nav > ul > li:hover > a:before { position:absolute; content:''; display:block; top:0; left:0; width:100%; height:5px; background:#f4d03f;/*jaune-orange*/ } /* ---------- responsive --------- */ /* DESKTOP : menu horizontal */ @media screen and (min-width: 769px) { #menu nav > ul { display: -webkit-flex; display: flex; } /* niveau 1 */ #menu nav > ul > li { -webkit-flex: 1 1 1%; /* astuce : 1% pour même largeur */ flex: 1 1 1%; } #menu nav > ul > li > a { } /* niveau 2 */ #menu nav > ul ul { position: absolute; width: 200%; } } /* ------------------------------- */ /* PHONE : menu vertical */ @media screen and (max-width: 768px) { #menu { width: 100%; margin:0 auto; height:7px; } } /* ------------------------------- */ /* MENU*/ nav input[type=checkbox], nav label { display:none; } @media screen and (max-width: 768px) { /* input */ input#menu-mobile { position: absolute; /*xxleft: -9999em;*/ opacity:0; /* invisible */ } label[for="menu-mobile"] { display: block; text-indent: .25em; background: #EEE; border: 1px solid #CCC; margin: 1px; cursor: pointer; height:48px; line-height:48px; } label[for="menu-mobile"]:before { content: "\2630"; display: block; position: absolute; top: 0; right: 0; width: 1em; text-align: center; text-indent: 0; font-size: 1em; font-weight: bold; color: #069; } /* on traite la liste menu */ #menu-mobile:not(:checked) ~ ul { display: none; position: absolute; left: -1px; width: 100%; margin: 0; padding: 0; border: inherit; background: #FFF; } #menu-mobile:checked ~[for="menu-mobile"]:before { content: "\2716"; } } .col-sm-6{ flex: 0 0 50%; flex-grow: 0; flex-shrink: 0; flex-basis: 50%; max-width: 50%; } .depot { color: white; text-decoration: none; outline: none !important; } .submit_bt{ position: absolute; right: 20px; font-size: 14pt; color: #ffffff; background-color: #69c934; border: 0px; height: 50px; padding: 0px 20px; margin-top: 30px; } .white-color{ color: white; } .maquette{ color: black; } .submit_bt a:hover{ color: #000; } .search_main{ width: 78%; float: right; } .sousnav{ display: grid; grid-template-columns: 1fr 5fr 5fr 5fr; grid-template-rows: 1fr 20fr 20fr; grid-template-areas: "lo social connect connect" "lo social lg search" ; height: 100px; margin-top: 45px; } .nav-item{ grid-area: connect; display: flex; /* on remet en flex */ justify-content :flex-end; /* on aligne les items dans flex*/ height: 30px; font-weight:bold; margin-right:10px; } .nav-item i{ padding-left:15px; } .search_main{ grid-area: search; display: flex; /* on remet en flex */ justify-content :flex-end; /* on aligne les items dans flex*/ padding-right: 20px; margin-top:10px; } .socialmedia{ grid-area: social; display: flex; /* on remet en flex */ justify-content: center; width: 110px; height: 30px; padding-left:10px; } .socialmedia i{ padding-right:10px; } .nav-link{ color:black; text-decoration: none; outline: none !important; } .logo{ grid-area: lo; background: url('/lewedli.jpg'); background-repeat:no-repeat; width: 140px; height: 125px; display:flex; align-items: start; margin-bottom: 20px; } .LatinLanguage{ grid-area: lg; display: flex; /* on remet en flex */ justify-content: center; height:30px; width: 180px; margin-top: 10px; } .langues{ color: blue; font-weight: bold; margin-left:5px; font-size: 12px; text-decoration: none; outline: none !important; } /*Bouton*/ /*.styled { border: 0; line-height: 2.5; padding: 0 20px; font-size: 1rem; text-align: center; color: #fff; text-shadow: 1px 1px 1px #000; border-radius: 10px; background-color: #FFA500; background-image: linear-gradient(to top left, rgba(0, 0, 0, .2), rgba(0, 0, 0, .2) 30%, rgba(0, 0, 0, 0)); box-shadow: inset 2px 2px 3px rgba(255, 255, 255, .6), inset -2px -2px 3px rgba(0, 0, 0, .6); } .styled:hover { background-color: #008000; } .styled:active { box-shadow: inset -2px -2px 3px rgba(255, 255, 255, .6), inset 2px 2px 3px rgba(0, 0, 0, .6); } .icons{ text-align: right; vertical-align: 30px; padding: 0px; margin-right: 20px } .boutons{ text-align: right; vertical-align: 50px; padding: 20px; }*/ </style> <header> <div id= "containermenu"> <div id= "rowmenu"> <div id="menu"> <nav> <label for="menu-mobile" class="menu-mobile">Menu</label> <input type="checkbox" id="menu-mobile" role="button"> <ul> <li class='menu'><a href="/index.php">Accueil</a> <li class='menu'><a href='/principales/affichage.php?id=1'>Immobilier</a><ul><li class='submenu'><a href='/principales/affichage.php?id=101'>Vente de Maisons </a></li><li class='submenu'><a href='/principales/affichage.php?id=102'>Location de Maison </a></li><li class='submenu'><a href='/principales/affichage.php?id=103'>Vente Appartement </a></li><li class='submenu'><a href='/principales/affichage.php?id=104'>Location Appartement </a></li><li class='submenu'><a href='/principales/affichage.php?id=105'>Bureau </a></li><li class='submenu'><a href='/principales/affichage.php?id=106'>Terrain </a></li></ul></li><li class='menu'><a href='/principales/affichage.php?id=2'>Véhicules</a><ul><li class='submenu'><a href='/principales/affichage.php?id=201'>Voitures </a></li><li class='submenu'><a href='/principales/affichage.php?id=202'>Motos </a></li><li class='submenu'><a href='/principales/affichage.php?id=203'>Pièces et Accessoires pour Véhicules </a></li><li class='submenu'><a href='/principales/affichage.php?id=204'>Vélos </a></li><li class='submenu'><a href='/principales/affichage.php?id=205'>Véhicules Professionnels </a></li></ul></li><li class='menu'><a href='/principales/affichage.php?id=3'>Multimédia</a><ul><li class='submenu'><a href='/principales/affichage.php?id=301'>Téléphones </a></li><li class='submenu'><a href='/principales/affichage.php?id=302'>Télévisions </a></li><li class='submenu'><a href='/principales/affichage.php?id=303'>Ordinateurs Portables </a></li><li class='submenu'><a href='/principales/affichage.php?id=304'>Accessoires Informatiques </a></li><li class='submenu'><a href='/principales/affichage.php?id=305'>Ordinateurs de Bureaux </a></li></ul></li><li class='menu'><a href='/principales/affichage.php?id=4'>Cours</a><ul><li class='submenu'><a href='/principales/affichage.php?id=401'>Cours Individuels </a></li><li class='submenu'><a href='/principales/affichage.php?id=402'>Cours Collectifs </a></li></ul></li><li class='menu'><a href='/principales/affichage.php?id=5'>Agriculture</a><ul><li class='submenu'><a href='/principales/affichage.php?id=501'>Vente de terrain agricole </a></li><li class='submenu'><a href='/principales/affichage.php?id=502'>Location de terrain agricole </a></li><li class='submenu'><a href='/principales/affichage.php?id=503'>Vente de tracteurs </a></li><li class='submenu'><a href='/principales/affichage.php?id=504'>Location de tracteurs </a></li></ul></li><li class='menu'><a href='/principales/affichage.php?id=20'>Autres...</a><ul></ul></li></ul> </nav> </div> <div class= "sousnav"> <div class="nav-item"> <a class="nav-link" href="/membre/profil.php"> <i class="fa fa-user" aria-hidden="true"></i> <span> mol </span> </a> <a class="nav-link" href="/membre/deconnexion.php"> <i class="fa fa-user" aria-hidden="true"></i> <span> Déconnexion </span> </a> </div> <div class="search_main"> <button class="submit_bt"><a class='depot' href="/principales/formannonce.php"><span class="doctor"><i class='fa fa-plus white-color'></i></span> Déposer une annonce</a></button> </div> <div class="socialmedia"> <a href="#"><i class="fab fa-facebook-f "></i></a> <a href="#"><i class="fab fa-twitter"></i></a> <a href="#"><i class="fab fa-instagram"></i></a> <a href="#"><i class="fab fa-linkedin-in"></i></a> </div> <div class="logo"></div> <div class ="LatinLanguage"> <div class="language"> <i class="fa fa-globe" aria-hidden="true"></i> <a class= "langues" href="/index.php?lang=fr"> Français </a> <a class= "langues" href="/index.php?lang=en">English </a> </div> </div> </div> </header> <!DOCTYPE html> <html lang="fr"> <head> <style> .alert-warning{ margin-top: 100px; } </style> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script> <title>Document</title> </head> <body> <div class="alert alert-warning"> <strong>Attention!</strong> Vous êtes sur le point de supprimer cette annonce. Cliquez sur valider pour continuer: <input type="submit" name="supprimer" value="supprimer"> </div> </body> </html>
Tu veux dire qu'il faut un if(isset($_GET['supprimer']) ? Si oui, je l'ai fait. Le bouton est toujours incliquable
D'accord, j'ai ajouté dans un form:
Le bouton marche, mais il affiche l'erreur suivante:
Warning: PDOStatement::execute() expects parameter 1 to be array, string given in C
Il s'agit du $req execute($idannonce):
<div class="alert alert-warning"> <form action="" method="POST"> <strong>Attention!</strong> Vous êtes sur le point de supprimer cette annonce. Cliquez sur supprimer pour continuer: <input type="submit" name="supprimer" value="supprimer"> </form> </div>
Le bouton marche, mais il affiche l'erreur suivante:
Warning: PDOStatement::execute() expects parameter 1 to be array, string given in C
Il s'agit du $req execute($idannonce):
function deleteannonce($idannonce){ global $bdd; $sql= "DELETE A, I From annonces A LEFT JOIN I images_annonces ON I.id_annonce=A.id WHERE A.id= ".$idannonce." "; try{ $req = $bdd->prepare($sql); $req->execute($idannonce); }catch(Exception $e){ echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($req); } return $req; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour yg_be, tu as raison, maintenant ça marche:
Merci à vous :)
function deleteannonce($idannonce){ global $bdd; $sql= "DELETE A, I From annonces A LEFT JOIN images_annonces I ON I.id_annonce=A.id WHERE A.id= ".$idannonce." "; $datas=array($idannonce); try{ $req = $bdd->prepare($sql); $req->execute($datas); }catch(Exception $e){ echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($req); } return $req; }
Merci à vous :)
tu veux dire que le return $req doit être dans le try?
try{ $req = $bdd->prepare($sql); $req->execute($datas); return $req; //suite ;