DELETE sur PHPMyAdmin
Résolu
Numbyscuit
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
-
Numbyscuit Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
Numbyscuit Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
C'est encore moi.
Je cherche à retirer une ligne spécifique de ma table adresse (ainsi, enlever une adresse à un client) grâce à un bouton submit et une requête DELETE.
Le code sur la page du bouton est le suivant, et permet d'afficher toutes les adresses du client est le suivant :
Le code de ma requête est celui-ci :
(La table adresses est liée à la table clients via une table "avoir")
Quand bien même, aucune erreur ne serait affiché, les données restent présentes ET dans la BDD, ET sur la page zone.php
Merci d'avance pour votre aide.
C'est encore moi.
Je cherche à retirer une ligne spécifique de ma table adresse (ainsi, enlever une adresse à un client) grâce à un bouton submit et une requête DELETE.
Le code sur la page du bouton est le suivant, et permet d'afficher toutes les adresses du client est le suivant :
<?php /*Connexion à BDD */ try { // On se connecte à MySQL $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host=localhost;dbname=bdd_exiastore', 'root', '', $pdo_options); $bdd->exec('SET NAMES utf8'); } catch(Exception $e) { // En cas d'erreur, on affiche un message et on arrête tout die('Erreur : '.$e->getMessage()); } $log = $_SESSION['pseudo']; $reponse = $bdd->prepare("SELECT RueAdresse, CPAdresse, VilleAdresse, PaysAdresse FROM adresses INNER JOIN avoir ON avoir.ID_Adresse = adresses.ID_Adresse INNER JOIN clients ON clients.ID_Client = avoir.ID_Client WHERE clients.PseudoClient = '". $log ."' "); $reponse->execute(array( 'log' => $log )); // Si possible, pouvoir modifier et supprimer ces adresses individuellement while ($donnees = $reponse->fetch()) { echo ' <form method="post" action="deladress.php"> <fieldset class="inscr"> <legend>Adresse</legend> <label>Adresse : </label> <input type="text" name="adress" class="champ" value=" ' . htmlspecialchars($donnees['RueAdresse']) . '" />'. ' <br /><br />' . '<label>Code postal : </label> <input type="text" name="CP" class="champ" value=" ' . htmlspecialchars($donnees['CPAdresse']) . '" />'. ' <br /><br />' . '<label>Ville : </label> <input type="text" name="ville" class="champ" value=" ' . htmlspecialchars($donnees['VilleAdresse']) . '" />'. ' <br /><br />' . '<label>Pays : </label> <input type="text" name="pays" class="champ" value=" ' . htmlspecialchars($donnees['PaysAdresse']) . '" />'. ' <br /><br /><input type="submit" value="Supprimer" /></fieldset><br /> </form>'; } $reponse->closeCursor(); ;?>
Le code de ma requête est celui-ci :
<?php /*Connexion à BDD */ try { // On se connecte à MySQL $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host=localhost;dbname=bdd_exiastore', 'root', '', $pdo_options); $bdd->exec('SET NAMES utf8'); } catch(Exception $e) { // En cas d'erreur, on affiche un message et on arrête tout die('Erreur : '.$e->getMessage()); } // Si tout va bien, on peut continuer $log = $_SESSION['pseudo']; $add = $_POST['adress']; $ville = $_POST['ville']; $cp = $_POST['CP']; $pays = $_POST['pays']; $reqAdd = $bdd->prepare(" DELETE FROM adresses WHERE adresses.RueAdresse = :add AND adresses.CPAdresse = :cp AND adresses.VilleAdresse = :ville AND adresses.PaysAdresse = :pays "); $reqAdd->execute(array( 'add'=>$add, 'cp'=>$cp, 'ville'=>$ville, 'pays'=>$pays )); $sqlId = $bdd->prepare(" SELECT ID_Client FROM clients WHERE PseudoClient = :log "); $sqlId->execute(array( 'log' => $log )); $donneesId = $sqlId->fetch(); $idCli = $donneesId['ID_Client']; $sqlAdd = $bdd->prepare("SELECT adresses.ID_Adresse FROM adresses WHERE adresses.RueAdresse = :add AND adresses.CPAdresse = :cp AND adresses.VilleAdresse = :ville AND adresses.PaysAdresse = :pays "); $sqlAdd->execute(array( 'add'=>$add, 'cp'=>$cp, 'ville'=>$ville, 'pays'=>$pays )); $donneesAdd = $sqlAdd->fetch(); $idAdd = $donneesAdd['ID_Adresse']; $reqId = $bdd->prepare(" DELETE FROM avoir WHERE ID_Client = :idCli AND ID_Adresse = :idAdd "); $reqId->execute(array( 'idCli'=>$idCli, 'idAdd'=>$idAdd )); echo "Adresse supprimée"; $reqAdd->closeCursor(); $reqId->closeCursor(); header("Refresh: 3; URL= zone.php" ) ; ;?>
(La table adresses est liée à la table clients via une table "avoir")
Quand bien même, aucune erreur ne serait affiché, les données restent présentes ET dans la BDD, ET sur la page zone.php
Merci d'avance pour votre aide.
A voir également:
- DELETE sur PHPMyAdmin
- Hiberfil.sys delete - Guide
- Juste delete me - Guide
- Supprimer une base de données phpmyadmin ✓ - Forum Logiciels
- Localhost/phpmyadmin - Forum MySQL
- Phpmyadmin ovh - Forum PHP
4 réponses
salut,
personnellement je ne vois pas l'intérêt de toutes ces fioritures d'alias (:add, :cp, etc...)
pourquoi ne pas rester à l'ancienne ? (enfin c'est probablement pas ça ne problème, mais bon, c'est juste de la curiosité de ma part :)
d'après ce que je vois, un client peut avoir plusieurs adresse, et une adresse peut être utilisé par plusieurs clients non ? (je dis ça parce que tu met l'idClient et l'idAdresse dans ta requête)
est ce qu'à tout hasard tu serais allé voir dans les logs de ton serveur apache ? (dispo sur phpmyadmin)
parce que j'ai comme l'impression que tu dois violer une contrainte de clé étrangère entre client et adresse
personnellement je ne vois pas l'intérêt de toutes ces fioritures d'alias (:add, :cp, etc...)
pourquoi ne pas rester à l'ancienne ? (enfin c'est probablement pas ça ne problème, mais bon, c'est juste de la curiosité de ma part :)
d'après ce que je vois, un client peut avoir plusieurs adresse, et une adresse peut être utilisé par plusieurs clients non ? (je dis ça parce que tu met l'idClient et l'idAdresse dans ta requête)
est ce qu'à tout hasard tu serais allé voir dans les logs de ton serveur apache ? (dispo sur phpmyadmin)
parce que j'ai comme l'impression que tu dois violer une contrainte de clé étrangère entre client et adresse
C'est pour un projet scolaire, donc il faut être très à cheval sur la sécurité (prepare/execute au lieu de query...). Sinon, plusieurs clients peuvent avoir une même adresse (s'ils sont de la même famille, par exemple...)
Sinon, je ne sais pas où sont les logs d'Apache, mais je ne pense pas que ce soit ça. Pour ce qui était UPDATE/SELECT/INSERT INTO, il n'y avait aucun problème de table/BDD...
Sinon, je ne sais pas où sont les logs d'Apache, mais je ne pense pas que ce soit ça. Pour ce qui était UPDATE/SELECT/INSERT INTO, il n'y avait aucun problème de table/BDD...