Bonjour, j'ai un souci d'affichage pour une newsletter :

le mail est bien envoyé mais autant de fois qu'il y a de types d'événements :
Exemple : Concert, Conférence => 2 mails au lieu d'un seul avec les deux types
Merci.

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
 
<?php
session_start(); //On demarre une session
require("configuration.php"); //On insert le fichier qui contient les informations
// si l'utilisateur est connecté, c'est le bandeau membre sinon c'est le bandeau classique...
if (!isset($_SESSION['pseudo']) || $_SESSION['pseudo']=='')
{	// bandeau classique si pas connecté
	$bandeau = 'bandeau.php';	
}
else
{	// bandeau membre si connecté
	$bandeau = 'bandeau_membres.php';	
}
 
//On se connecte à MySQL
$sql = connect_sql();
// création de la date de départ au format date MySQL  année  mois jour
$date_depart2=date('Y').'-'.date('m').'-'.date('j');
// création de la date de fin au format date MySQL  année  mois jour
$date_fin2 = date('Y-m-d', strtotime($date_depart2.' +8 days')); // date du jour + 8 jours
//On remet les dates au format français
setlocale (LC_TIME, 'fr_FR.UTF8');
$date_vue_depart2 = strftime("%A %d %B",strtotime("$date_depart2"));
$date_vue_fin2 = strftime("%A %d %B",strtotime("$date_fin2"));
 
// pour envoi des mails
mysql_query("SET NAMES utf8");
$select_adresse = "SELECT * FROM lettre_membres";
$result_adresse = mysql_query($select_adresse) or die ('Erreur result_adresse : '.mysql_error() );
$count_membre = 0;
while($mail_affiche = mysql_fetch_array($result_adresse))
	{
		$count_membre = $count_membre+1;
	$type_eclate = $mail_affiche["type"];	
	$affiche_type = explode(',',$type_eclate);	//sépare l'expression en mots cles
	foreach($affiche_type as $mot)
    {
	mysql_query("SET NAMES utf8");
	$select3 = "SELECT * FROM evenement WHERE type_evenement = '$mot' AND date_ev BETWEEN '$date_depart2' AND '$date_fin2' ORDER BY date_ev ASC";
	// on écrit la requête des événements du ... au ...
	$result2 = mysql_query($select3) or die ('Erreur result2 : '.mysql_error() );
	$total = mysql_num_rows($result2);
	//On vérifie que la table contient quelque chose
	if (mysql_num_rows($result2) == 0)
		{
		$reponse = '<p>'.'<b>'.' Aucun &eacute;v&eacute;nement pas de mail ! '.'</b>'.'</p>'.'<br>'.'</br>';
		$reponse .=  '<br />';
		$reponse .=  $select3;
		$reponse .=  '<br />';
		$reponse .=  $type_eclate;
		}
	//S'il y a des entrées
	else
	{
		//On affiche la reponse
		$reponse = '<p>'.'<b>'.' Un ou plusieurs mails envoy&eacute;s ! '.'</b>'.'</p>'.'<br>'.'</br>';
		$reponse .=  '<br />';
		$reponse .= 'Nombre de mail envoyes : '.$count_membre;
 
		//On affiche l'en tete du mail
		$message2="";
 		$message1 =  '<html>'.'<body>'.'Bonjour  voici la newsletter de'.'&nbsp;'.'<b>'.$nom_site.'</b>'.
		$message1 .= '<br>'.'</br>';
		$message1 .= '<b>'.'&eacute;v&eacute;nements des 8 prochains jours :'.'</b>';
		$message1 .= '<br>'.'</br>';
		$message1 .= '&agrave; tr&egrave;s bient&ocirc;t sur le site !';
		$message1 .= '<br>'.'</br>';
		$message1 .= '<a href="' .$url_site. '">'.$nom_site.'</a>';
		$message1 .= '<br>'.'</br>';
		$message1 .= 'Du '.'<b>'.ucwords(strtolower($date_vue_depart2)).'&nbsp;'.'&nbsp;'.'</b>';
		$message1 .= 'Au '.'<b>'.ucwords(strtolower($date_vue_fin2)).'&nbsp;'.'&nbsp;'.'</b>';
		$message1 .= '<br>'.'</br>';
		$message1 .= '</body>'.'</html>';
		setlocale (LC_TIME, 'fr_FR.UTF8');
 
	//On fait une boucle pour sortir toutes les entrées de la semaine
	while($affiche2 = mysql_fetch_array($result2))
	{
		//On remet la date au format français
		$date_affiche2 = $affiche2["date_ev"];
		$date_vue2 = strftime("%A %d %B",strtotime("$date_affiche2"));
		//On affiche les entrées sélectionnées
 
		// si les champs ne sont pas vides on affiche !
		if (!empty($affiche2["montant"])) { $Montant='Montant :'.$affiche2["montant"]; } else { $Montant=''; }
		if (!empty($affiche2["site_infos"])) { $infos='Informations :'.$affiche2["site_infos"]; } else { $infos=''; }
 
		$message2 =  '<html>'.'<body>'.'<div class="recherche">';
		$message2 .= '<b>'.stripslashes($affiche2["type_evenement"])."   ".'</b>';
		$message2 .= '<br/>';
		$message2 .= "  > ".stripslashes($affiche2["type_etab"])."   ";
		$message2 .= '<b>'."  > ".$date_vue2."   ".'</b>';
		$message2 .= " > ".stripslashes($affiche2["secteur"])."   ";
		$message2 .= " > D&eacute;but &agrave; : ".stripslashes($affiche2["heure"])."   ";
		$message2 .= " > Tarif : ".stripslashes($affiche2["tarif"])."   ";
		$message2 .= $Montant;
		$message2 .= '<br/>';
		$message2 .= " &agrave; : ".stripslashes($affiche2["lieu"])."   ";
		$message2 .= '<b>'." > ".stripslashes($affiche2["nom"])."   ".'</b>';
		$message2 .= '<br/>';
		$message2 .= " > ".stripslashes($affiche2["description"])."   ";
		$message2 .= '<br/>';
		$message2 .= stripslashes($infos);
		$message2 .= '<br/>';
		$message2 .= '</div>'.'</body>'.'</html>';
	} // on ferme la boucle WHILE
 
		$message2 .= '</body>'.'</html>';
 
 
	// ici mettre le mail qui fonctionne jusque au else
 
	} // FIN de foreach
 
 
 
	$mail = $mail_affiche["mail"];
	$entete = "MIME-Version: 1.0\r\n";
	$entete .= "Content-type: text/html; charset=utf-8";
	$entete .= "From: <$email_admin>\r\n";
	$entete .= "Reply-To: $email_admin\r\n";
	mail($mail,'Newsletter de ' .$nom_site. ' ' . $login .' ' , $message1.$message2, $entete);
 
	} //on ferme le ELSE s il y a des entrees
 
 
}  //on ferme la boucle pour tous les mails inscrits dans la base
 
mysql_close($sql); //On se deconnecte
 
?>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>MON SITE</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php include($bandeau); ?> <!-- insère le bandeau principal en haut en fonction de la connexion -->
<div id="mainContent">
<br />
<br />
<? echo $reponse; ?> <!-- On affiche la reponse de tout le code du dessus -->
</div>
<br />
<br />
<?php include('bas_de_page.php'); ?> <!-- insère le bandeau principal en haut -->
</body>
</html>