Erreur requête SQL pour suppression données

Fermé
lauraM - 20 juin 2008 à 15:45
lauraM Messages postés 17 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 4 mai 2009 - 26 juin 2008 à 14:12
Bonjour,
Je suis en stage et j'ai un projet que je souhaite finaliser le plus possible.
Je fais actuellement un formulaire pour supprimer un enregistrement de ma table.
J'ai fait dans une page mon formulaire :

<form method="post" action="supprimerClient.php">
<fieldset id="suppression" style="width=500px; height=130px">
<legend align=top>Supprimer le nom d'un client :</legend>
<blockquote>Nom du client :</blockquote>       
<select name='supprClient'>
<?php
$sql= "SELECT DISTINCT `client`.`Nom client` FROM client WHERE (`client`.`Nom client` <> '') ORDER BY `client`.`Nom client` ASC";
$res=mysql_query($sql);
echo "<option>Choisissez un client</option>\n";
while($val=mysql_fetch_array($res))
{
echo "<option>".$val["Nom client"]."</option>\n";
}
?>
</select>
<br><br>
<input type="submit" name="supprimer" value="Supprimer">
</fieldset></form>

Ma liste déroulante est générée sans souci! Et j'ai ma page de suppression des données :

<?php
$servername='localhost';
$username='root';
$password='';
$connexion=mysql_connect($servername,$username,$password) or die('Erreur de connexion '.mysql_error());
mysql_select_db("ficheintervention", $connexion) or die('Erreur de selection '.mysql_error());
?>
<html>
<head>
<title>Suppression d'un client</title>
</head>
<body>
<?php
$clt= $_POST['supprClient'];
if(isset($clt))
{
$sql1="SELECT `IdClt` FROM `client` WHERE `Nom client` = '".$clt."'";
$req=mysql_query($sql1) or die ('Erreur SQL ! '.$sql1.'<br/>'.mysql_error());
$data=mysql_fetch_array($req);
$num_clt=$data['IdClt'];
mysql_free_result($req);
$sql4="DELETE FROM 'demandeclient' WHERE 'IdClt'=(SELECT 'IdClt' FROM 'client' WHERE 'IdClt'='".$num_clt."')";
mysql_query($sql4) or die ('Erreur SQL ! '.$sql4.'<br/>'.mysql_error());
$sql3="DELETE FROM 'client' WHERE 'IdClt'='".$num_clt."'";
mysql_query($sql3) or die ('Erreur SQL ! '.$sql3.'<br/>'.mysql_error());
$sql2="DELETE FROM 'client' WHERE 'Nom client'='".$clt."'";
mysql_query($sql2) or die ('Erreur SQL ! '.$sql2.'<br/>'.mysql_error());
mysql_close();
echo "Nous venons de supprimer '".$clt."' de la base.";
}
else
{
echo "Erreur la page est vide!";
}
?>

Lorsque que je test mon code à l'aide du formulaire, après avoir cliqué sur supprimé une erreur SQL s'affiche en me disant :

Erreur SQL ! DELETE FROM 'demandeclient' WHERE 'IdClt'=(SELECT 'IdClt' FROM 'client' WHERE 'IdClt'='15')
Erreur de syntaxe près de ''demandeclient' WHERE 'IdClt'=(SELECT 'IdClt' FROM 'client' WHER' à la ligne 1

J'ai vérifié de multiple fois mon code et je ne trouve toujours pas l'erreur. C'est le cas de le dire je désespère!
Donc si quelqu'un aurait le gentillesse de m'aider je le remercie beaucoup!!
A voir également:

14 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 196
20 juin 2008 à 15:50
bonjour

Et comme ça :
DELETE FROM demandeclient WHERE IdClt=(SELECT IdClt FROM client WHERE IdClt=15)

Tu as, je pense des côtes (') inutiles.

;o)
0
Coucou,
merci de ta réponse.
En fait je ne peux pas savoir à l'avance la clé primaire ki va être supprimer c'est pour cela que j'ai fait une requête qui relit le nom du client qu'a sélectionné l'utilisateur pour savoir la clé primaire et pour ensuite la supprimer.
Et concernant mes quote si je les enlèves (ce que j'ai essayé) et bien il y a comme même une erreur qui me dit qu'il y a un problème de convesion.
Voilà si je n'est pas donné assez de précision je suis prête à répondre à toutes vos questions.
Merci de votre aide!
0
Utilisateur anonyme
20 juin 2008 à 16:01
Est-ce que la requete SELECT IdClt FROM client WHERE IdClt=15 donne quelque chose déjà ?
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 196
20 juin 2008 à 16:01
de quel type est IdClt dans la table ? S'il est de type numérique pas besoin de côtes.

$sql4="DELETE FROM demandeclient WHERE IdClt=(SELECT IdClt FROM client WHERE IdClt=".$num_clt.")";
0
Pour vous répondre à tous les deux "dooob" et "Polux31".
Oui IdClt est de type numérique mais lorsque j'enlève les quotes comme vous me l'avez dit j'ai toujours mon erreur de début :
Erreur SQL ! DELETE FROM 'demandeclient' WHERE 'IdClt'=(SELECT 'IdClt' FROM 'client' WHERE 'IdClt'=.26.)
Erreur de syntaxe près de ''demandeclient' WHERE 'IdClt'=(SELECT 'IdClt' FROM 'client' WHER' à la ligne 1

Et enfin oui en principe la requête doit forcément donner quelques chose car elle trouve le bon numéro 'IdClt'.
0
Utilisateur anonyme
20 juin 2008 à 16:19
Essaye avec des ` et non '
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Vraiment je ne comprend pas d'où peut provenir l'erreur.
C'est pour cela que je fais appel à votre aide.
0
Merci beaucoup cela m'a enlevé l'erreur. :-)
Malheureusement il me met bien ce que j'attendais:
Nous venons de supprimer 'AUDE' de la base.
Mais il ne le supprime pas vraiment car la nom du client est encore présent dans la base de donnée.
Sauriez-vous pourquoi???
0
Utilisateur anonyme
20 juin 2008 à 16:39
Si l'entrée n'est pas supprimée, il doit y avoir des messages d'erreurs, quels sont-ils ?
Sinon actualise ta vue sur la BDD.

Tu peux essayer de relancer la suppression en passant directement l'id du client, histoire de voir sa ça supprime bien.
0
C'est bien le gros souci.
Aucunes erreurs ne s'affiche. Et j'ai aussi actualisé à la fois ma base de donnée et ma page php.
Ma donnée devant être supprimée est toujours présente.
Incompréhensible.
0
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 90
20 juin 2008 à 16:48
$sql4="DELETE FROM 'demandeclient' WHERE 'IdClt'=(SELECT 'IdClt' FROM 'client' WHERE 'IdClt'='".$num_clt."')";
Il y a un truc que je ne comprends pas :

Ta requête SELECT 'IdClt' FROM 'client' WHERE 'IdClt'='".$num_clt."' te retourne $num_clt.
Pourquoi ne pas faire dirtectement :
$sql4="DELETE FROM demandeclient WHERE IdClt=".$num_clt; 

?
0
J'ai fait ce que vous m'avez dit cela me donne la même chose.
Ca marche mais ca ne supprime pas réellement la donnée dans ma base de données même en actualisant.
Ne pouvant pas rester, je répondrais à tout message lundi.
Merci beaucoup de votre aide.
0
Bonjour,
j'ai bien vérifié tout ce qui m'a été conseillé et ca ne change en rien mon problème.
Je en sais plus trop quoi faire.
Donc si quelqu'un à un autre conseil à me donner je suis preneuse.
Je rapelle mon problème : je supprime à l'aide de mon formulaire un client, une page m'informe qu'il a bien été supprimé mais en réalité il est toujours dans ma base de donnée.
Je vous avoue que je désespère!!!
Si pour m'aider vous avez besoin de quelconque information je vous la donneraie.
Merci de votre compréhension.
0
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 90
23 juin 2008 à 10:58
Quelques idées, en vrac :

- Il n'y aurait pas un truc genre Client est une clé étrangère sur une autre table ? Et du coup la suppression est impossible ?

- Une fois que tu as construit ta requête, et avant de la passer à mysql_query, fais un echo. Ensuite, tu la copies, et la colles dans phpMyAdmin, pour voir si elle fonctionne.
0
Pour te répondre "macgawel":
- concernant les clefs étrangères je les avaient déjà supprimées croyant que c'était cela qui pose problème. De plus dans mon code où se trouve les requêtes j'ai bien fait attention de d'abord supprimer ce qui normalement devait être une clé étrangère puis après supprimer directement dans ma table.
Pour info ca donne ceci :

<?php
$servername='localhost';
$username='root';
$password='';
$connexion=mysql_connect($servername,$username,$password) or die('Erreur de connexion '.mysql_error());
mysql_select_db("ficheintervention", $connexion) or die('Erreur de selection '.mysql_error());
?>
<html>
<head>
<title>Suppression d'un client</title>
</head>
<body>
<?php
$clt= $_POST['supprClient'];
if(isset($clt))
{
$sql1="SELECT `client`.`IdClt` FROM `client` WHERE `client`.`Nom client` = '".$clt."'";
$req=mysql_query($sql1) or die ('Erreur SQL ! '.$sql1.'<br/>'.mysql_error());
$data=mysql_fetch_array($req);
$num_clt=$data['IdClt'];
mysql_free_result($req);
$sql4="DELETE FROM `demandeclient` WHERE `IdClt`=".$num_clt;
mysql_query($sql4) or die ('Erreur SQL ! '.$sql4.'<br/>'.mysql_error());
$sql3="DELETE FROM `client` WHERE `client`.`IdClt`='.$num_clt.'";
mysql_query($sql3) or die ('Erreur SQL ! '.$sql3.'<br/>'.mysql_error());
$sql2="DELETE FROM `client` WHERE `client`.`Nom client`='.$clt.'";
mysql_query($sql2) or die ('Erreur SQL ! '.$sql2.'<br/>'.mysql_error());
mysql_close();
echo "Nous venons de supprimer '".$clt."' de la base.";
}
else
{
echo "Erreur la page est vide!";
}
?>
</body>
</html>

- ensuite concernant ce que tu m'as dit de tester avec mes requêtes je l'ai fait et elles fonctionnent bien dans phpadmin. Elles me trouvent bien la bonne données à l'aide du "echo". C'est pour cela que je ne comprends pas pourquoi je ne supprime pas réellement le client.

Merci de ton aide.
Si tu as encore un conseil je suis preneuse.
0
Je ne comprejnd pas pourquoi ca en marche pas. Pouvez-vous m'aider svp?
0
lauraM Messages postés 17 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 4 mai 2009 1
26 juin 2008 à 09:57
Je n'ai toujours pas résolu ce problème donc je retente ma chance pour voir si quelqu'un à déjà rencontré mon problème.
0
lauraM Messages postés 17 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 4 mai 2009 1
26 juin 2008 à 14:12
J'ai vraiment besoin de votre aide svp.
0