bonjour,
je suis en train de coder une alerte mail, en gros un visiteur créer une alerte via formulaire afin d'être prévenu par mail des dernières annonces publier sur le site.
Mon code fonctionne bien, sauf qu'un membre qui enregistre 10 alertes recevras 10 mails ( 1 mail par alerte ) je n'arrive pas à envoyer 1 mail contenant les 10 alertes.
Ci-dessous mon code simplifier.
remarque:
Le script sera lancer par une tache cronLe site ne possède pas de zone d'inscription (compte membre)nombre d'envoi prévisionnel 3000 mails/Jrs
voici a quoi ressemble ma table alerte:
la table des annonces:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 CREATE TABLE IF NOT EXISTS `alerts` ( `id` int(11) NOT NULL auto_increment, `region` int(10) NOT NULL default '0', `categorie` int(10) NOT NULL default '0', `name` varchar(35) NOT NULL default '', `email` varchar(35) NOT NULL default '', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ; INSERT INTO `alerts` (`id`, `region`, `catégorie`, `name`, `email`) VALUES (1, 73, 2, 'titi', 'titi@yahoo.com'), (2, 71, 7, 'titi', 'titi@yahoo.com'), (3, 75, 3, 'toto', 'toto@yahoo.com'), (4, 65, 5, 'toto', 'toto@yahoo.com'), (5, 33, 9, 'toto', 'toto@yahoo.com');
et le code qui me permet de sélectionner les annonces en les filtrant avec les critère des alertes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 CREATE TABLE IF NOT EXISTS `annonces` ( `adid` int(10) unsigned NOT NULL auto_increment, `adtitle` varchar(100) NOT NULL default '', `addesc` longtext NOT NULL, `region` smallint(5) unsigned NOT NULL default '0', `categorie` smallint(5) unsigned NOT NULL default '0', PRIMARY KEY (`adid`), KEY `categorie` (`categorie`), KEY `region` (`region`), ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1496 ; INSERT INTO `annonces` (`adid`, `adtitle`, `addesc`, `region`, `categorie`) VALUES (2, 'titre annonce1', 'texte annonce1', 47, 14), (3, 'titre annonce2', 'texte annonce2', 47, 14); blabla....
Merci d'avance pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 // on selectionne tout les alertes ( nom, email, categorie/region souscrit ) $sql1 = mysql_query("SELECT * FROM alerts"); while($rows = mysql_fetch_array($sql1)) { // on selectionne tout les annonces en les filtrants avec les ( categorie/region souscrit ) de l'alerte $sql2 = "SELECT * FROM annonces WHERE region = ".$rows['region']." AND categorie = ".$rows['categorie']." LIMIT 5 "; $featres = mysql_query($sql2) or die(mysql_error().$sql2); while($row = mysql_fetch_array($featres)) { // Compose le mail $msg = @file_get_contents("mailtemplates.txt"); $msg = @str_replace("{@ADS}", $row['adtitle'], $msg); $subj = "Alerte: une nouvelle annonce"; $site_email = "contact@site.com"; if (!@HTMLMail($rows['email'], $subj, $msg, $site_email, $langx['charset'])) die("Erreur envoi mail"); else echo "Alerte envoyé"; } }
Partager