Fonction delete qui ne marche pas
Résolu/Fermé
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
-
27 févr. 2022 à 06:09
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 - 27 févr. 2022 à 13:41
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 - 27 févr. 2022 à 13:41
A voir également:
- Fonction delete qui ne marche pas
- Fonction si et - Guide
- Just delete me - Guide
- Hiberfil.sys delete - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
7 réponses
jordane45
Messages postés
38319
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
30 novembre 2024
4 706
27 févr. 2022 à 09:15
27 févr. 2022 à 09:15
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
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
27 févr. 2022 à 10:00
27 févr. 2022 à 10:00
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>
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
27 févr. 2022 à 10:01
27 févr. 2022 à 10:01
Rien ne se passe lorsque le bouton est cliqué
jordane45
Messages postés
38319
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
30 novembre 2024
4 706
>
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
27 févr. 2022 à 10:08
27 févr. 2022 à 10:08
Comment peux tu avoir une balise <!Doctype à la ligne 423 alors que tu as déjà du html avant ?? ( en gros, tes lignes 423 à 439 n'ont rien à faire à cet endroit ! )
En plus ton bouton.. il n'est pas dans un <form> .. donc normal qu'il ne se passe rien !
En plus ton bouton.. il n'est pas dans un <form> .. donc normal qu'il ne se passe rien !
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
27 févr. 2022 à 10:35
27 févr. 2022 à 10:35
Tu veux dire qu'il faut un if(isset($_GET['supprimer']) ? Si oui, je l'ai fait. Le bouton est toujours incliquable
jordane45
Messages postés
38319
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
30 novembre 2024
4 706
27 févr. 2022 à 10:43
27 févr. 2022 à 10:43
Non.. je parles des balises form...
A moins que tu ne veuilles faire qu'un lien...
A moins que tu ne veuilles faire qu'un lien...
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
27 févr. 2022 à 10:53
27 févr. 2022 à 10:53
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; }
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
1 556
Modifié le 27 févr. 2022 à 12:22
Modifié le 27 févr. 2022 à 12:22
bonjour,
as-tu compris le message d'erreur?
dans cette même discussion, tu nous as montré un autre code qui utilise execute() et qui fonctionne bien. as-tu comparé les deux?
as-tu compris le message d'erreur?
dans cette même discussion, tu nous as montré un autre code qui utilise execute() et qui fonctionne bien. as-tu comparé les deux?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
27 févr. 2022 à 12:12
27 févr. 2022 à 12:12
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 :)
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
1 556
27 févr. 2022 à 12:24
27 févr. 2022 à 12:24
...et ta requête DELETE reste très imparfaite: ne vois-tu pas d'autres différence entre les deux?
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
Modifié le 27 févr. 2022 à 12:32
Modifié le 27 févr. 2022 à 12:32
tu veux dire que le return $req doit être dans le try?
try{ $req = $bdd->prepare($sql); $req->execute($datas); return $req; //suite ;
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
27 févr. 2022 à 12:36
27 févr. 2022 à 12:36
correction:
try{ $req = $bdd->prepare($sql); $res= $req->execute($datas); return $res; //suite...
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
1 556
>
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
27 févr. 2022 à 12:44
27 févr. 2022 à 12:44
c'est la requête elle-même qui est mal construite.
max30_3775
Messages postés
178
Date d'inscription
jeudi 4 novembre 2021
Statut
Membre
Dernière intervention
18 mars 2022
27 févr. 2022 à 13:17
27 févr. 2022 à 13:17
Mais elle marche, à moins qu'il n'ait des surprises plus tard.
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
1 556
27 févr. 2022 à 13:41
27 févr. 2022 à 13:41
Elle marche, cependant tu n'as pas correctement construit la requête, tu l'as ajoutée dans le texte de la requête, au lieu de l'ajouter via le execute.