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 cron
Le 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:
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');
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 `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....
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
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é";				
		}
	}
Merci d'avance pour votre aide