Erreur requête SQL pour suppression données

lauraM -  
lauraM Messages postés 17 Statut Membre -
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 7219 Statut Membre 1 204
 
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
lauraM
 
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
 
Est-ce que la requete SELECT IdClt FROM client WHERE IdClt=15 donne quelque chose déjà ?
0
Polux31 Messages postés 7219 Statut Membre 1 204
 
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
lauraM
 
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
 
Essaye avec des ` et non '
0

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

Posez votre question
lauraM
 
Vraiment je ne comprend pas d'où peut provenir l'erreur.
C'est pour cela que je fais appel à votre aide.
0
lauraM
 
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
 
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
lauraM
 
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 676 Statut Membre 89
 
$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
lauraM
 
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
lauraM
 
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 676 Statut Membre 89
 
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
lauraM
 
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
lauraM
 
Je ne comprejnd pas pourquoi ca en marche pas. Pouvez-vous m'aider svp?
0
lauraM Messages postés 17 Statut Membre 1
 
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 Statut Membre 1
 
J'ai vraiment besoin de votre aide svp.
0