Problème avec delete

Invité
Invité n'ayant pas de compte PHPfrance

31 août 2007, 09:57

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.

Eléphant du PHP | 291 Messages

31 août 2007, 10:02

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 !

ViPHP
ViPHP | 2287 Messages

31 août 2007, 10:05

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.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Invité
Invité n'ayant pas de compte PHPfrance

31 août 2007, 22:21

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 !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

01 sept. 2007, 00:35

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.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

01 sept. 2007, 09:27

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.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

01 sept. 2007, 11:57

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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...