Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/09/2011, 15h07   #1
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
Par défaut Boucle dans Newsletter : envoi en trop

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 :
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>
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 16h23   #2
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 661
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 661
Points : 5 387
Points : 5 387
C'est logique : ton appel à mail() est à l'intérieur de ta boucle foreach($affiche_type as $mot)
Ton accolade } // FIN de foreach correspond en fait la fermeture du else et ton accolade } //on ferme le ELSE s il y a des entrees à la fin du foreach...
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 16h59   #3
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
j'ai modifié mais je reçois toujours plusieurs mails ????

Code :
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
<?php
session_start(); //On demarre une session
require("configuration.php"); //On insert le fichier qui contient les informations
//On se connecte à MySQL
$sql = connect_sql();
$sql = detection_mobile();
$sql = bandeau_detection();
 
// 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 =  '<div class="recherche">';
				// $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
		} //on ferme le ELSE s il y a des entrees
	} // FIN de foreach
 
	// ENVOI du mail
	$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 la boucle pour tous les mails inscrits dans la base
?>
<!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><?php echo $nom_site ?></title>
<link rel="stylesheet" type="text/css" href="<?php echo $nom_style ?>" />
</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>
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 17h34   #4
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 661
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 661
Points : 5 387
Points : 5 387
Je suppose que tu as vérifié que tu n'avais pas plusieurs fois le même mail dans ta base ?

Au passage, tu ferme potentiellement le body plusieurs fois avec $message2 .= '</div>'.'</body>'.'</html>'; qui se trouve dans un foreach alors que $message1 = '<html>'.'<body>' se trouve à l'extérieur...
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 14h40   #5
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
j'ai modifié un peu le code mais toujours plusieurs mails (il n'y a bien qu'une seule fois l'adresse mail dans la base...)

Code :
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
<?php
session_start(); //On demarre une session
require("configuration.php"); //On insert le fichier qui contient les informations
//On se connecte à MySQL
$sql = connect_sql();
$sql2 = detection_mobile();
$sql3 = bandeau_detection();
// 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>';
			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 =  '<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
		} //on ferme le ELSE s il y a des entrees
	} // FIN de foreach
// ENVOI du mail
	$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 la boucle pour tous les mails inscrits dans la base
?>
<!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><?php echo $nom_site ?></title>
<link rel="stylesheet" type="text/css" href="<?php echo $nom_style ?>" />
</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 mysql_close($sql); //On se deconnecte ?>
<?php include('bas_de_page.php'); ?> <!-- insère le bandeau principal en haut -->
</body>
</html>
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2011, 13h26   #6
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
j'ai encore modifié le code, là il y a un seul mail : OK
mais le secteur récupéré n'est pas le bon :
dans l'adresse mail n°2, il y a le même secteur, alors qu'il devrait y en avoir un autre... , il doit y a voir un problème dans la boucle mais je ne vois pas où ?
Merci.

Code :
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
 
$date_depart2 = date('Y-m-d', strtotime($date_depart));	// création de la date de départ au format date MySQL  année  mois jour
			$date_fin2 = date('Y-m-d', strtotime($date_fin));
			setlocale (LC_TIME, 'fr_FR.UTF8');	//On remet les dates au format français
			$date_vue_depart2 = strftime("%A %d %B",strtotime("$date_depart2"));
			$date_vue_fin2 = strftime("%A %d %B",strtotime("$date_fin2"));
				//On affiche l'en tete du mail
				mysql_query("SET NAMES 'utf8'");
				setlocale (LC_TIME, 'fr_FR.UTF8');	//On remet les dates au format français
				$message2="";
				$message1 =  '<html>'.'<body>'.'Bonjour  voici la newsletter de'.'&nbsp;'.'<b>'.$nom_site.'</b>'.
				$message1 .= '<br>'.'</br>';
				$message1 .= '<b>'.'&eacute;v&eacute;nements du prochain week-end :'.'</b>';
				$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>';
 
mysql_query("SET NAMES 'utf8'");
$affich_form = "SELECT * FROM lettre_membres2" ;
$resultat = mysql_query($affich_form) or die ('Erreur : '.mysql_error() );
if (mysql_num_rows($resultat) == 0)	//On vérifie que la table contient quelque chose
	{	echo 'pas de resultats';	}
else	{	while ( $list = mysql_fetch_array( $resultat ) ) // on parcourt les mails différents inscrits
			{
				$destinataire = $list['mail'];
				$chaine = $list['secteur'];
				$teste = explode(",", $chaine);
 
				// foreach($teste AS $variable => $valeur)
				foreach($teste AS $valeur)
				{	
					$reponse = '$valeur : '.$valeur;
					$reponse .= '<br />';
					$reponse .= '$destinataire : '.$destinataire;
					$reponse .= '<br />';
 
					mysql_query("SET NAMES utf8");	// pour envoi des evenements
					$select3 = "SELECT * FROM evenement WHERE secteur = '$valeur' AND date_ev BETWEEN '$date_depart2' AND '$date_fin2' ORDER BY type_evenement ASC, date_ev ASC";
					$result2 = mysql_query($select3) or die ('Erreur result2 : '.mysql_error() );
					if (mysql_num_rows($result2) == 0)	//On vérifie que la table contient quelque chose
					{	$reponse = '<p>'.'<b>'.' Aucun &eacute;v&eacute;nement pas de mail ! '.'</b>'.'</p>'.'<br>'.'</br>'.$select3;
						$message2 .= '';
						$reponse = '$valeur : '.$valeur;
						$reponse .= '<br />';
						$reponse .= '$destinataire : '.$destinataire;
						$reponse .= '<br />';						}
					else	//S'il y a des entrées
					{	//On affiche la reponse
						setlocale (LC_TIME, 'fr_FR.UTF8');
						//On fait une boucle pour sortir toutes les entrées
						$PrecedentType="";		//On initialise le type précédent à ''
						$PrecedentDate="";		//On initialise la date précédente à ''
						mysql_query("SET NAMES utf8");
						while($affiche2 = mysql_fetch_array($result2))
						{	$date_affiche2 = $affiche2["date_ev"];	
							$date_vue2 = strftime("%A %d %B",strtotime("$date_affiche2"));	// On remet la date au format français
							$jour_vue = ucwords(strtolower($date_vue2));					// Majuscule au début
							if ($affiche2["type_evenement"] <> $PrecedentType)
							{	$message2 .= '<h1>'.$affiche2["type_evenement"].'</h1>';	}
							$PrecedentType=$affiche2["type_evenement"];
							if ($affiche2["date_ev"] <> $PrecedentDate)
							{	$message2 .= '<span style="background-color:#FFFF66;color:red">'.'<h2>'.$jour_vue.'</h2>'.'</span>';	} 
							$PrecedentDate=$affiche2["date_ev"];
							//On affiche les entrées sélectionnées
							if (!empty($affiche2["montant"])) { $Montant='Montant :'.$affiche2["montant"]; } else { $Montant=''; }
							if (!empty($affiche2["site_infos"])) { $infos=$affiche2["site_infos"]; } else { $infos=''; }
							$message2 .= '<br/>';
							$message2 .= " > D&eacute;but &agrave; : ".stripslashes($affiche2["heure"])."   ";
							$message2 .= " > Tarif : ".stripslashes($affiche2["tarif"])."   ";
							$message2 .= " ".$Montant;
							$message2 .= '<br/>';
							$message2 .= " > ".'<span style="color:blue">'.stripslashes($affiche2["lieu"])."   ";
							$message2 .= '<strong>'." > ".stripslashes($affiche2["nom"])."   ".'</strong>';
							$message2 .= '<br/>';
							$message2 .= " > ".'<a href="' .$infos. '">'.'site web'.'</a>';
							$message2 .= '<br/>';
						} // on ferme la boucle WHILE
 
					} //on ferme le ELSE s il y a des entrees
 
				}	// on ferme la boucle FOR EACH Secteur
 
				// On envoie l'e-mail.
				if ( mail($destinataire,'Newsletter de ' .$nom_site. ' ' . $login .' ' , $message1.$message2.$message3 , $entete) ) 
				{ 	echo'Envoi de la newsletter r&eacute;ussi !!! a  : '.$destinataire;echo '<br />'; 	
					mysql_query("SET NAMES utf8");
					$sql12 = "INSERT INTO membres_envoi (Envoi) VALUES('1')"; // pour envoi une seule fois par semaine !
					mysql_query($sql12) or die('Erreur SQL !'.$sql12.'<br>'.mysql_error());
				}
				else	{ echo 'Echec de l\'envoi de la newsletter !!!!'; 	}
 
			}	// on ferme la boucle WHILE
 
		} // FIN de ELSE
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2012, 13h41   #7
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
Bonjour,

Je n'ai plus plusieurs fois le même mail... !

Voici mon code modifié :
Code :
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
 
		$date_depart2 = date('Y-m-d', strtotime($date_depart));	// création de la date de départ au format date MySQL  année  mois jour
			$date_fin2 = date('Y-m-d', strtotime($date_fin));
			setlocale (LC_TIME, 'fr_FR.UTF8');	//On remet les dates au format français
			$date_vue_depart2 = strftime("%A %d %B",strtotime("$date_depart2"));
			$date_vue_fin2 = strftime("%A %d %B",strtotime("$date_fin2"));
			mysql_query("SET NAMES utf8");	// pour envoi des evenements
			$select3 = "SELECT * FROM evenement WHERE date_ev BETWEEN '$date_depart2' AND '$date_fin2' ORDER BY date_ev ASC";
			$result2 = mysql_query($select3) or die ('Erreur result2 : '.mysql_error() );
			if (mysql_num_rows($result2) == 0)	//On vérifie que la table contient quelque chose
			{	$reponse = '<p>'.'<b>'.' Aucun &eacute;v&eacute;nement pas de mail ! '.'</b>'.'</p>'.'<br>'.'</br>'.$select3; }
			else	//S'il y a des entrées
			{	//On affiche la reponse
				$reponse = '<p>'.'<b>'.' Un ou plusieurs mails envoy&eacute;s ! '.'</b>'.'</p>'.'<br>'.'</br>';
				$reponse .=  '<br />';
				//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 du prochain week-end :'.'</b>';
				$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 />';
				setlocale (LC_TIME, 'fr_FR.UTF8');
				//On fait une boucle pour sortir toutes les entrées
				$PrecedentDate="";		//On initialise la date précédente à ''
				mysql_query("SET NAMES utf8");
				while($affiche2 = mysql_fetch_array($result2))
				{	$date_affiche2 = $affiche2["date_ev"];	
					$date_vue2 = strftime("%A %d %B",strtotime("$date_affiche2"));	// On remet la date au format français
					$jour_vue = ucwords(strtolower($date_vue2));					// Majuscule au début
					//On affiche les entrées sélectionnées
					if ($affiche2["date_ev"] <> $PrecedentDate)
					{	$message2 .= '<strong>'.$jour_vue.'</strong>'.'<br />'.'<br />';	} 
					$PrecedentDate=$affiche2["date_ev"];
					if (!empty($affiche2["montant"])) { $Montant=' > Montant : '.$affiche2["montant"]; } else { $Montant=''; }
					if (!empty($affiche2["site_infos"])) { $infos=$affiche2["site_infos"]; } else { $infos=''; }
					$message2 .= " > ".stripslashes($affiche2["type_evenement"])."   ";
					$message2 .= " > D&eacute;but &agrave; : ".stripslashes($affiche2["heure"])."   ";
					$message2 .= " > Tarif : ".stripslashes($affiche2["tarif"])."   ";
					$message2 .= " ".$Montant;
					$message2 .= '<br />';
					$message2 .= " Secteur > ".stripslashes($affiche2["secteur"])."   ";
					$message2 .= '<br />';
					$message2 .= " > ".'<span style="color:blue">'.stripslashes($affiche2["lieu"])."   ".'</span>';
					$message2 .= '<strong>'." > ".stripslashes($affiche2["nom"])."   ".'</strong>';
					$message2 .= '<br />';
					$message2 .= " > ".'<a href="' .$url_site. '/r_ev.php?id='.$affiche2["id"]. '">'.'D&eacute;tails'.'</a>';
					$message2 .= '<br />'.'<br />';
				} // on ferme la boucle WHILE
				$message3 = '<br />'.'<br />';
				$message3 .= 'La suite sur le site  '.'<a href="' .$url_site. '">'.$nom_site.'</a>';
				$message3 .= '<br />'.'<br />'.'<br />';
				$message3 .= 'Si vous souhaitez vous d&eacute;sabonner de cette newsletter, merci de cliquer '.'<a href="mailto:'.$email_admin.'?subject=D&eacute;sabonnement de la newsletter">'.'ici'.'</a>'.'<br />';
				$message3 .= '</body>'.'</html>';
 
 
			} //on ferme le ELSE s il y a des entrees
 
		mysql_query("SET NAMES utf8");	// On récupère de la table newsletter les personnes inscrites.
		$select4 = "SELECT mail FROM pdf_membre";
		$result4 = mysql_query($select4) or die ('Erreur result4 : '.mysql_error() );
		$liste = '';	// On définit la liste des inscrits.
		while ($donnees = mysql_fetch_assoc($result4))
			{	
				$liste .= $donnees['mail'];
				$liste .= ','; //On sépare les adresses par une virgule.
			}
		// $destinataire = $liste; 
		// en tête du mail
				$entete = "MIME-Version: 1.0\r\n";
				$entete .= "Content-type: text/html; charset=utf-8\r\n";
				$entete .= "From: <".$email_admin.">\r\n";
				$entete .= "Reply-To: ".$email_admin."\r\n";
 
		// $entete .= "Bcc: ".$liste."\r\n"; 
		// en copie cachée pour qu'ils ne puissent pas voir les adresses des autres inscrits : ne fonctionne pas chez Nuxit : pas plus de 4 destinataires !!!!
		// On envoie l'e-mail.
		if ( mail($email_infos,'Newsletter de ' .$nom_site. ' ' . $login .' ' , $message1.$message2.$message3 , $entete) ) 
				{ 	echo'Envoi de la newsletter r&eacute;ussi !!! '; 
					mysql_query("SET NAMES utf8");
					$sql12 = "INSERT INTO membres_envoi (Envoi) VALUES('1')"; // pour envoi une seule fois par semaine !
					mysql_query($sql12) or die('Erreur SQL !'.$sql12.'<br />'.mysql_error());
				}
		else	{ echo 'Echec de l\'envoi de la newsletter !!!!'; 	}
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h52.


 
 
 
 
Partenaires

Hébergement Web