Effacer un enregistrement

Zurg
Invité n'ayant pas de compte PHPfrance

04 avr. 2005, 17:21

Re bonjour,

dans la lignée de tout à l'heure, j'essaie maintenant de faire la fonction désinscription à la newsletter, j'ai presque fini, mais la dernière étape, effacer le mail de la base, ne fonctionne pas.

Où est donc mo erreur ??

Voilà le code :
<?php 
	include("Connections/local/cnn.php");
	$mail=$_POST['mail'];
	
	// test sur le champ mail
	if (empty ($mail)) {
		print("Vous n'avez pas saisi d'adresse mail, veuillez en saisir une pour vous désinscrire.<br><a href=\"javascript:history.go(-1)\">Retour à la page précédente</a><br>");
		exit;
		}
	if (!(eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $mail))) {
		print("L'adresse saisie n'est pas valide, veuillez vérifier et corriger l'adresse utilisée.<br><a href=\"javascript:history.go(-1)\">Retour à la page précédente</a><br>");
		exit;
		}
	
	// test de l'adresse dans la base
	$requete="SELECT * FROM abonne WHERE mail='".$mail."'";
	$trouve=mysql_query($requete);
	if (mysql_num_rows($trouve) == 0) {
		print("L'adresse saisie n'existe pas dans la base, assurez vous que l'adresse saisie est la mâme que celle dont vous vous êtes servi(e) pour vous inscrire.<br><a href=\"javascript:history.go(-1)\">Retour à la page précédente</a><br>");
		exit;
		}
	// retrait de l'adresse dans la base
	$requete2 = "DELETE * FROM abonne WHERE mail='".$mail."'";
	$resultat = mysql_query($requete2);
	?>
Merci de vos conseils Zavizés !

Eléphant du PHP | 82 Messages

04 avr. 2005, 21:09

Salut!
A mon avis il faut que tu termine ton if en fin de script, comme suit:
<?php 
    include("Connections/local/cnn.php"); 
    $mail=$_POST['mail']; 
     
    // test sur le champ mail 
    if (empty ($mail)) { 
        print("Vous n'avez pas saisi d'adresse mail, veuillez en saisir une pour vous désinscrire.<br><a href=\"javascript:history.go(-1)\">Retour à la page précédente</a><br>"); 
        exit; 
        } 
    if (!(eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $mail))) { 
        print("L'adresse saisie n'est pas valide, veuillez vérifier et corriger l'adresse utilisée.<br><a href=\"javascript:history.go(-1)\">Retour à la page précédente</a><br>"); 
        exit; 
        } 
     
    // test de l'adresse dans la base 
    $requete="SELECT * FROM abonne WHERE mail='".$mail."'"; 
    $trouve=mysql_query($requete); 
    if (mysql_num_rows($trouve) == 0) { 
        print("L'adresse saisie n'existe pas dans la base, assurez vous que l'adresse saisie est la mâme que celle dont vous vous êtes servi(e) pour vous inscrire.<br><a href=\"javascript:history.go(-1)\">Retour à la page précédente</a><br>"); 
        exit; 
    }
    else if (mysql_num_rows($trouve) != 0) {
        // retrait de l'adresse dans la base 
        $requete2 = "DELETE * FROM abonne WHERE mail='".$mail."'"; 
        $resultat = mysql_query($requete2);
    }
    ?>
A tester ... :?
Bon courage ;) ++
Recherches et Tutoriaux.... ça aide ;)

Zurg
Invité n'ayant pas de compte PHPfrance

05 avr. 2005, 13:31

Salut !

merci de ta réponse, mais malheureusement ( :cry: ) ça ne marche toujours pas, je n'ai pas de message d'erreur, et les enregistrements "effacés" sont toujours dans la base...

Une autre idée??

La requête n'est pas bonne? ou la manière de l'exécuter ?

Eléphant du PHP | 148 Messages

05 avr. 2005, 14:27

Ca y'est, je suis inscrit !

Bon, j'ai beau chercher, d'après tous les scripts et tutos que j'ai pu lire, ça a l'air super simple, et pourtant, ça marche pas...

Si j'ai bien compris, le principe c'est :

On fait une requête pour vérifier si l'adresse existe,
si oui, un autre requête pour l'effacer, et hop! on l'exécute...

Et hop! ça marche pas... :cry:

Y'a personne qui peut m'expliquer pourquoi ??
Et hop !

ViPHP
ViPHP | 2144 Messages

05 avr. 2005, 14:32

ajoute des or die(mysql_error()) pour voir les messages d'erreurs éventuelles.
<?php 
    include("Connections/local/cnn.php"); 
    $mail=$_POST['mail']; 
      
    // test sur le champ mail 
    if (empty ($mail)) { 
        print("Vous n'avez pas saisi d'adresse mail, veuillez en saisir une pour vous désinscrire.<br><a href=\"javascript:history.go(-1)\">Retour à la page précédente</a><br>"); 
        exit; 
        } 
    if (!(eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $mail))) { 
        print("L'adresse saisie n'est pas valide, veuillez vérifier et corriger l'adresse utilisée.<br><a href=\"javascript:history.go(-1)\">Retour à la page précédente</a><br>"); 
        exit; 
        } 
      
    // test de l'adresse dans la base 
    $requete="SELECT * FROM abonne WHERE mail='".$mail."'"; 
    $trouve=mysql_query($requete)or die(mysql_error()); 
    if (mysql_num_rows($trouve) == 0) { 
        print("L'adresse saisie n'existe pas dans la base, assurez vous que l'adresse saisie est la mâme que celle dont vous vous êtes servi(e) pour vous inscrire.<br><a href=\"javascript:history.go(-1)\">Retour à la page précédente</a><br>"); 
        exit; 
    } 
    else if (mysql_num_rows($trouve) != 0) { 
        // retrait de l'adresse dans la base 
        $requete2 = "DELETE * FROM abonne WHERE mail='".$mail."'"; 
        $resultat = mysql_query($requete2) or die(mysql_error()); 
    } 
    ?>

Eléphant du PHP | 148 Messages

05 avr. 2005, 14:38

Salut,

merci pour l'idée,

effectivement, l'erreur se situe bien au niveau de la requête d'effacement de l'enregistrement. D'après Mr Apache :
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM abonne WHERE mail='[email protected]'' at line 1
pourtant, c'est la même syntaxe que pour la requête de recherche de l'adresse un tout petit peu plus haut,... comprends pas... :roll:
Et hop !

Eléphant du PHP | 148 Messages

05 avr. 2005, 15:03

Bon, j'ai trouvé !

c'était bien un erreur de syntaxe à la c** ! Qu'est-ce que ça peut faire perdre comme temps quand même !! enfin, maintenant je le saurai ](*,)

Il ne faut pas mettre
DELETE * blabla
mais
DELETE blablabla
sans *.


Allez, à bientôt,

merci pour votre aide... à la vôtre :boire9: !
Et hop !