Page 1 sur 1
Problème avec delete
Posté : 31 août 2007, 09:57
par Invité
Bonjour,
j'ai une table contenant deux champs id et mail.
Mon objectif est via un formulaire supprimer une ligne de la table.
J'ai essayer ceci mais en vain :
Code : Tout sélectionner
$connexion = mysql_connect ($dbhost, $dbusername, $dbuserpassword);
if (!$connexion) {
Parse ("save","error");
} else {
mysql_select_db($dbname);
}
// fonction parse :
function Parse($variable,$valeur) {
echo "&" . $variable . "=" . utf8_encode(urlencode($valeur));
}
$verif_secu = $_POST["php_verif"];
if ($verif_secu === "flash") {
$varemail = $_POST['email'];
$req = "DELETE FROM mytable WHERE mail = '".$varemail."'";
$insert = mysql_query($req);
}
Je ne vois pas où est le problème.
Merci.
Posté : 31 août 2007, 10:02
par cf357
A première vue je ne vois pas...
Une manière de debugguer ta requete :
echo $req;
Puis lance le script, copie/colle la requete affichée dans phpMyAdmin ou tout autre utilitaire, puis regarde l'erreur retournée

, il colorise bien la requete et t'aidera surement !
Re: Problème avec delete
Posté : 31 août 2007, 10:05
par Calimero
Bonjour,
j'ai une table contenant deux champs id et mail.
Mon objectif est via un formulaire supprimer une ligne de la table.
J'ai essayer ceci mais en vain :
Code : Tout sélectionner
$connexion = mysql_connect ($dbhost, $dbusername, $dbuserpassword);
if (!$connexion) {
Parse ("save","error");
} else {
mysql_select_db($dbname);
}
// fonction parse :
function Parse($variable,$valeur) {
echo "&" . $variable . "=" . utf8_encode(urlencode($valeur));
}
$verif_secu = $_POST["php_verif"];
if ($verif_secu === "flash") {
$varemail = $_POST['email'];
$req = "DELETE FROM mytable WHERE mail = '".$varemail."'";
$insert = mysql_query($req);
}
Je ne vois pas où est le problème.
Merci.
Il y a le bon nom de base dans $dbname ?
il y a bien 'flash' sans espace ni rien d'autre dans $_POST["php_verif"] ?
il y a bien un email valide dans $_POST['email'] ?
Assure toi bien de ces 3 points avec des print_r() ou des var_dump() . Si ça n'aide pas, il faudra afficher la requête telle que tu cherches à l'éxécuter et l'envoyer dans phpmyadmin pour savoir comment MySQL réagit.
Posté : 31 août 2007, 22:21
par Invité
Bon j'ai finalement réglè le problème avec un peu d'aide mais maintenant un autre apparaît. Effectivement j'arrive à supprimer une adresse mail enregistrée au préalabre dans la bdd avec un retour vers mon interface formulaire d'un message genre "votre email est supprimé" donc jusque ici tout va bien mais j'ai essayé avec une adresse mail bidon (qui n'est pas dans la bdd) et j'ai le meme message en retour alors que je devrai avoir une erreur.
Autrement dit la partie
$req = "DELETE FROM myELECTRONSnewsletter WHERE mail = '".$varemail."'";
$insert = mysql_query($req);
// si enregistrement ok :
if($insert == 0) {
Parse ("save","error");
}
else {
Parse ("save","ok");
}
s'interpréte mal.
Merci pour l'aide apportée !
Posté : 01 sept. 2007, 00:35
par Ryle
Valeurs de retour
(...)
Pour les autres types de requêtes, UPDATE, DELETE, DROP, etc., mysql_query() retourne TRUE en cas de succès ou FALSE en cas d'erreur.
Si aucun élément n'est affecté (par un update ou un delete), la fonction retournera TRUE puisqu'il n'y aura pas eu d'erreur.
Posté : 01 sept. 2007, 09:27
par Invité
Bon alors dans ce cas je pense que d'abord il faut faire une requete pour vérifier si dans un premier temps le mail existe dans la bdd si oui alors delete si non alors error.
Je vais essayer cette idée.
*MERCI.
Posté : 01 sept. 2007, 11:57
par Ryle
Ou plus simplement tu peux utiliser la fonction mysql_affected_rows() pour savoir combien de lignes ont été affectées.
Sachant qu'au pire, qu'importe si le mail a été trouvé ou non puisqu'il s'agit d'une demande de suppression. S'il existe il est supprimé, s'il n'existe pas le résultat sera le même
