IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Envoi d'un message lors d'une nouvelle discussion sur forum


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 010
    Points : 181
    Points
    181
    Par défaut Envoi d'un message lors d'une nouvelle discussion sur forum
    Bonjour,

    J'ai trouvais des bouts de codes sur internet que j'ai modifié et assemblé pour faire ce que je voulais mais cela ne marche pas.
    Je voudrais que lorsqu'une personne ecrit une nouvelle discussion cela envoi un message à toute les personnes inscrites au forum.
    (toutes les adresses email sont dans la base de données).
    Si quelqu'un pouvait m'aider, 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
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    <?php include("inc/r.inc.php"); ?>
    <?
    $page_accueil = false;
    $ref_titre_page = "";
    $ref_description_page = "";
    $ref_motscles_page = "";
    ?>
    <?php include("inc/header.inc.php"); ?>
    <?php include("inc/site-haut.inc.php"); ?>
     
              <div id="divConteneurContenu">
    			<h1 id="h1TitrePage">Forum</h1>
     
    			<br>
     
     
    			<!--<div id="divConteneurTraitVertical">-->
     
     
    			<?php
     
     
    			// on teste si le formulaire a été soumis
    			if (isset ($_POST['go']) && $_POST['go']=='Poster') {
    				// on teste la déclaration de nos variables
    				if (!isset($_POST['auteur']) || !isset($_POST['titre']) || !isset($_POST['message']))
    				{
    					$erreur = 'Les variables nécessaires au script ne sont pas définies.';
    				}
     
    				else
     
    					{
    					// on teste si les variables ne sont pas vides
    					if (empty($_POST['auteur']) || empty($_POST['titre']) || empty($_POST['message']))
    					{
    						$erreur = 'Au moins un des champs est vide.';
    					}
     
    					// si tout est bon, on peut commencer l'insertion dans la base
     
    					else
     
    						{
     
     
     
    						// on calcule la date actuelle
    						$date = date("Y-m-d H:i:s");
     
    						// préparation de la requête d'insertion (pour la table forum_sujets)
    						$sql = 'INSERT INTO forum_sujets3 VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['titre']).'", "'.$date.'")';
     
    						// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
    						mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
     
    						// on recupère l'id qui vient de s'insérer dans la table forum_sujets
    						$id_sujet = mysql_insert_id();
     
    						// lancement de la requête d'insertion (pour la table forum_reponses
    						$sql = 'INSERT INTO forum_reponses VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['message']).'", "'.$date.'", "'.$id_sujet.'")';
     
    						// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
    						mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
     
    						// on ferme la connexion à la base de données
    						mysql_close();
     
    						// on redirige vers la page d'accueil
     
     
     
    			?>
     
     
     
     
     
     
     
    						<SCRIPT LANGUAGE="JavaScript">
    						document.location.href="membre.php" /* vous pouvez aussi mettre http://www.monsite.com */
    						</SCRIPT>
     
    			<?php
     
    						// on termine le script courant
        			  exit;
    					}
    				}
    			}
    			?>
     
     
     
    			<html>
    			<head>
    			<title>Insertion d'un nouveau sujet</title>
    			</head>
     
    			<body>
     
    			<!-- on fait pointer le formulaire vers la page traitant les données -->
    			<form action="insert_sujet.php" method="post">
     
    			<br>
    			<br>
     
    			<table align="center">
     
    			<tr><td>
    			<span class="gras">Auteur :</span>
    			</td><td>
    			<input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
    			</td></tr><tr><td>
    			<span class="gras">Titre :</span>
    			</td><td>
    			<input type="text" name="titre" maxlength="50" size="50" value="<?php if (isset($_POST['titre'])) echo stripslashes(htmlentities(trim($_POST['titre']))); ?>">
    			</td></tr><tr><td>
    			<span class="gras">Message :</span>
    			</td><td>
    			<textarea name="message" cols="50" rows="10"><?php if (isset($_POST['message'])) echo stripslashes(htmlentities(trim($_POST['message']))); ?></textarea>
    			</td></tr><tr><td><td align="right">
     
    			<input type="submit" name="go" value="Poster">
    			</td></tr></table>
    			</form>
     
     
     
            	<?php
     
                        $sql = "SELECT * FROM membre";
     
                        $reponse = mysql_query("$sql");
     
     
    						$adresse = array();
     
                                	while($donnees = mysql_fetch_assoc($reponse))
     
    								{
     
    							  array_push( $adresse , $donnees['email'] ); //tes adresses mail sont récupérées dans un tableau
     
     
    							 $adresses_mail_separer = implode(";", $adresse);  // ça va séparer les données de ton tableau par un ";"
     
     
     
     
                                   }
     
     
     
     
     
     
     
    								 //echo "echo_test1:".$adresses_mail_separer."<br>";
     
                          	If (($auteur<> "") && ($titre<>"")  && ($message<>""))
     
     
    									{
     
    																 // Envoi du mail client
     
    												//-----------------------
     
    												//Préparation de l'entête du mail:
    												$mail_entete  = "MIME-Version: 1.0\r\n";
    												$mail_entete .= "From: xx@xx.com\r\n";
    												$mail_entete .= 'Reply-To: '.$_POST['email_ar']."\r\n";
    												$mail_entete .= 'Content-Type: text/plain; charset="iso-8859-1"';
    												$mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n";
    												$mail_entete .= 'X-Mailer:PHP/' . phpversion()."\r\n";
     
    												// préparation du corps du mail
     
     
    												$texte  ="\r\n";
    												$texte .="Bonjour,\r\n";
    												$texte .="\r\n";
    												$texte .="Une discussion sur le forum vient d'être crée.\r\n";
    												$texte .="Si vous désirez y accéder\r\n";
    												$texte .="vous remercie pour votre confiance et votre visite sur notre site.\r\n";
    												$texte .="A très bientôt.\r\n";
    												$texte .="\r\n";
     
    												$texte .="\r\n";
     
     
     
    												$mail_ok = mail("$adresses_mail_separer","discussion sur le forum",$texte,$mail_entete);
     
    						     	if ($ok_mail)
    												 {
    												 "mail parti";
    											    	}
    												   else
    												   {
    											    	 "mail,  pas parti";
    											    	}
     
    												if ($mail_ok)
    												{
    												 "mail client parti";
    												} else
    												 {
    												 "mail client  pas parti";
    												}
    													;
     
     
    									}
    										else
     
     
    											{
     
    											    echo "Veuillez remplir tous les champs.";
     
    											}
     
     
     
     
    			?>
     
     
     
    			<?php
    			// on affiche les erreurs éventuelles
    			if (isset($erreur)) echo '<br /><br />',$erreur;
    			?>
    			</body>
    			</html>
     
     
    <?php include("inc/si.inc.php"); ?>

  2. #2
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Bonjour,

    Difficile de répondre avec précision, mais la méthode à suivre est d'aller là où l'insertion d'un post en DB se fait et d'y faire la requête pour récupérer toutes les adresses email et faire l'envoi.

    Cependant, je recommanderais plutôt de faire ça de façon journalière via ce qu'on appelle une CRON.
    Deux raisons à cela :
    1] s'il y a beaucoup de nouveau messages, ça va flooder les utilisateurs
    2] s'il y a beaucoup d'utilisateurs, ça fait beaucoup de mails en très peu de temps. Ca peut amener le serveur en blacklist, et là, plus aucun mail ne passera !

    Voici donc ce que je propose : une CRON qui passerait tous les jours vers 18h00 (par exemple). Qui récupère tous les sujets actifs de la journée (il suffit de regarder tous les messages postés avec une date de création équivalente à la journée en cours). On créé alors un joli mail qui énumère tous les sujets qu'on envoie à la liste des utilisateurs.

    En espérant que ma réponse soit utile

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 010
    Points : 181
    Points
    181
    Par défaut Envoi d'un message lors d'une nouvelle discussion sur forum
    Oui l'info est bien mais j'ai pas grand monde donc je pense continuer comme j'ai fais surtout que le code marche à peu prés...
    Le truc c'est que juste le fait d'aller sur la page envoyer un message au utilisateur donc j'ai voulu faire des restrictions et là même si j'appuye sur le bouton aucun plus aucun message ne pars...

  4. #4
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Citation Envoyé par Marc31 Voir le message
    Oui l'info est bien mais j'ai pas grand monde donc je pense continuer comme j'ai fais surtout que le code marche à peu prés...
    Le truc c'est que juste le fait d'aller sur la page envoyer un message au utilisateur donc j'ai voulu faire des restrictions et là même si j'appuye sur le bouton aucun plus aucun message ne pars...
    Houla, désolé mais j'ai pas vraiment compris xD

    Théoriquement, l'envoi du message devrai se faire APRÈS l'ajout en base de données.
    Vous devriez normalement avoir une condition quelque part qui vérifie si le formulaire a été soumis, que les données sont correctes, etc... Une fois toutes les vérifications, il devrait y avoir le bout de code permettant l'ajout en base de données. Placez alors l'envoi du mail juste après l'ajout.

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 010
    Points : 181
    Points
    181
    Par défaut Envoi d'un message lors d'une nouvelle discussion sur forum
    Pas de soucis c'est moi aussi qui me suis mal exprimé...
    Et oui je pense que c'est cette condition qui ne marche pas mais je sais pas comment faire pour la faire marcher?

  6. #6
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Citation Envoyé par Marc31 Voir le message
    Et oui je pense que c'est cette condition qui ne marche pas mais je sais pas comment faire pour la faire marcher?
    D'après le bout de code de votre post initial, je dirais aux alentours de la ligne 63 (avant le mysql_close() et après l'insert des réponses en tout cas ^^).
    Ce qui m'étonne est le fait qu'il y ait 2 INSERT. Ca voudrait dire que quand on ajoute une réponse, ça créé automatiquement un sujet avec cette réponse.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo