Comment eviter d envoyer un mail sans doublon

KOKOLO -  
 aztazt -
Bonjour,

Bonsoir,

Je rencontre un soucis avec mon script de newsletter.

En effet,j'utilise un formulaire pour composer mon mail et je peux cocher divers critères pour envoyer mon mail uniquement à une partie de mes membres (selon leur age, sexe, centre d interets etc).

Apparemment tout fonctionne mais j ai un soucis pour les doublons...En effet, si on suppose qu avec mon formulaire je coche les cases permettant d envoyer un mail aux membres intéressé par les jeux concours et les bons plans...A priori aucun soucis, le mail sera envoyer aux personnes correspondantes...par contre ceux qui auront comme centre d interet les jeux concours et les bons plans recevront le mail 2 fois !

Pour pallier à ce problème j'ai pensé qu il serait bien de créer une autre table nommée mailNewsletterDejaEnvoye dans laquelle j insererai les email des personne à qui j ai envoyé le mail... puis lorsque le script envoie les mails pour la 2eme categorie il n envoie que aux mails non présent dans la table mailNewsletterDejaEnvoye...Cela parait un peu compliqué je sais...

Et justement, je voudrait savoir s il y a un moyen plus simple?!

Je vous donne un apercu de ce que je pensais faire...

<?
 
if ($int1 == '1')
{
$sql=mysql_query("SELECT email FROM membres WHERE jeuxenligne = '1'")or die(mysql_error());
 
$sql2=mysql_query("INSERT INTO mailNewsletterDejaEnvoye (email2) VALUES ('$SQL')") or die('Impossible d insérer les données dans la base'.mysql_error());
 
$sql3=mysql_query "SELECT email FROM membres WHERE jeuxenligne = '1' NOT IN (SELECT email2 FROM mailNewsletterDejaEnvoye WHERE email2='$sql' GROUP BY email2)";
 
while($data = mysql_fetch_array($sql3))
{
$Destinataire = ''.$data['email'].'';
$Sujet = "$typedemande";
$from_email = "webmaster@voilou.fr";
$entetemail = "From: $from_email \n"; // Adresse expéditeur
$entetemail .= "X-Mailer: PHP/" . phpversion() . "\n" ;
$msg = "$message \n";
mail($Destinataire,$typedemande,$msg,$entetemail);
 
echo 'Le mail a été envoyé aux membres ayant pour centre d intérêt les jeux en ligne';
}
}
?>
...et ainsi de suite


Merci
A voir également:

1 réponse

aztazt
 
Bonjour,

Transforme ceci :

SELECT email FROM membres WHERE jeuxenligne = '1' NOT IN (SELECT
email2 FROM mailNewsletterDejaEnvoye WHERE email2='$sql' GROUP BY email2)";

en

SELECT DISTINCT email FROM membres WHERE jeuxenligne = '1' NOT IN (SELECT
email2 FROM mailNewsletterDejaEnvoye WHERE email2='$sql' GROUP BY email2)";
0