Page 1 sur 1

désinscription newsletter

Posté : 05 août 2009, 15:21
par JohnWeb
Bonjour!
Je travaille actuellemet sur la désinscription à une newsletter, et je rencontre un problème. Lorsque je veux supprimer une adresse de la base, j'ai le message d'erreur qui me dit que mon compte est inactif (car le champ "actif" est égal à 0). Hors, il m'affiche ça même quand ce n'est pas le cas.

Voilà mon bout de code:
Code :
if((mysql_num_rows($verifemail) != 0) && ($actif == 1 ))
{
//création de la requête SQL:
$sql = "DELETE FROM membres WHERE email='$email'" ;
  
//exécution de la requête SQL:
$requete = mysql_query($sql) or die( mysql_error() ) ;
  
 
 
//affichage des résultats, pour savoir si l'insertion a marchée:
  
if($requete)
{
 
    echo 'Unsubscribe successful
            You have been removed from the list.You will receive one final email to confirm that we unsubscribed you.' ;
 
}
  	
 
// Préparation du mail 
.......
 
// Envoi du mail
mail($destinataire, $sujet, $message, $headers) ; 
}	
 
Alors que celui qui s'affiche quand le compte est inactif est celui-là:
 if ($actif== 0)
{  
 
 	echo 'OOPS! you made a little mistake...
Your account is inactive
		<form id="myForm" name="email" method="post" action="http://tatai.com" >
		<input type="text" name="email" />
		<input type="submit" name="ok" value="ok" />
		</form>';
 
}
Vous voyez la raison à ce problème que je rencontre?

Merci d'avance de votre aide :)

Re: désinscription newsletter

Posté : 05 août 2009, 15:37
par Ryle
Faut faire confiance à php... s'il t'affiche le second message, y a pas à chercher, c'est qu'à ce moment là, ta variable $actif est bien égale à 0 (ou vide, ou FALSE, chaine vide ... ou un truc qu'il assimile à du 0 ;))

La question à te poser est donc : que contient cette variable ?

quand est-elle définie ? quand est elle renseignée ? est-elle modifiée ? ...

Re: désinscription newsletter

Posté : 05 août 2009, 15:49
par niuxe
Hello,

Il me semble que cette méthodologie n'est pas bonne en soit. Une adresse courriel peut servir dans d'autres cas, n'est ce pas ? Pourquoi n'as tu pas ajouter un champ booleen à ta table membre ?

Code : Tout sélectionner

ALTER TABLE ADD COLUMN newsletter BOOL NOT NULL;
Après, tu as tout simplement à faire une mise à jour de la fiche :

Code : Tout sélectionner

UPDATE membres SET newsletter = 0 WHERE id_membre = '".$identifiant."'
Pour ton code, je ne le comprends pas bien puisque ton message n'est assez explicite(actif ??, $verifMail ???, etc.). Question subsidiaire : As tu affiché ta requête (echo $sql) et est ce que c'est convaincant ?

Re: désinscription newsletter

Posté : 05 août 2009, 17:10
par JohnWeb
En effet, l'email peut servir à d'autres choses, mais là ce n'est pas le cas. Ils ne servent vraiment qu'à envoyer les newsletters à ceux qui le demandent, donc je préfère supprimer les emails qui ne sont pas utilisés.
La table contient 3 données: email, clé, et actif. Si actif est égal à 0, la personne n'a pas confirmé sa demande d'inscription, si c'est égal à 1, alors elle a bien confirmé et est inscrite à la newsletter.

$verifemail sert à plusieurs choses, à vérifier si l'adresse email est au bon format, et si le champ est actif.

Voilà le code qui précède:

Code : Tout sélectionner

// Récupération des variables nécessaires à la désinscription $email = $_POST['email']; $actif=$_POST['actif']; $verifemail = mysql_query("SELECT email, actif FROM membres WHERE email='$email'") or die(mysql_error());

Re: désinscription newsletter

Posté : 05 août 2009, 17:43
par Ryle
Donc ta variable $actif contient le contenu de $_POST['actif'] .... et que contient le champ "actif" de ton formulaire ?
(ce serait 0, vide, ou qu'il ne soit tout simplement pas défini, expliquerait bien pourquoi php rentre dans ton if($actif==0) ;))

Re: désinscription newsletter

Posté : 05 août 2009, 18:56
par JohnWeb
D'après ta question, je comprends mon erreur..... :oops:
En fait, je ne récupère pas $actif à partir du formulaire, je voudrais le récupérer de la table. Il doit contenir 0 ou 1.
Je n'ai donc pas le bon code pour le récupérer de la table.... Comment faire pour récupérer actif selon l'email entré dans le formulaire?

En fait, la personne entre son email, ensuite on vérifie que son compte existe et est actif, et s'il est actif on l'efface.Voilà ce que j'aimerais faire.