La communauté ALL HTML c'est 58646 membres à ce jour dont 1 inscrits aujourd'hui et 35 depuis une semaine.
liste des forums liste des discussions Participer à la discussion
Message publié le mardi 27 novembre 2007 à 19 h 50 par elizabeth. les pieds sur terre et la tête dans les étoiles J'ai été bien aidée sur le forum, alors ça me parraît normal aujourd'hui de vous faire profiter de mon code qui fonctionne grâce aux membre de ce site...
J'ai au départ deux bases de données.
- l'une regroupant les membres avec les champs mail, statut, et d'autres infos diverses.
- l'autre contanant les champs id, sujet, texte avec le contenu de mes newsletters (que je crée préalablement avec fck-editor, dans un formulaire à part)
dans mon fichier "liste.php" je crée un formulaire contenant mes choix.
à noter que ce formulaire peut être créé dynamiquement en extrayant les champs d'une base de donnée, en sélectionnant les statuts avec DISTINCT pour ne pas avoir de doublons, mais c'est une autre histoire...
La variable $id que je fais passer dans le formulaire est une variable récupérée à une page précédente, c'est l'id correspondant à la newsletter que j'ai choisi d'envoyer. je liste simplement mes newsletter et je crée un lien vers liste.php avec l'id de ma lettre.
<? $id=$_GET['id']; ?> <form name="form1" method="post" action="envoi.php"> <p> Envoyer la lettre uniquement aux statuts séléctionnés :<br> <br> <input name="statut[]" type="checkbox" id="statut[]" value="professionnels"> professionnels <br> <input name="statut[]" type="checkbox" id="statut[]" value="particuliers"> particuliers <br> <input name="statut[]" type="checkbox" id="statut[]" value="envoi test"> envoi test<br> <p align="center"> <input name="id" type="hidden" value="<? echo $id ?>"> <input type="submit" name="Submit" value="envoyer selon ce tri"> </p> </form>
d'abord, ma newsletter :
<?php $id=$_POST['id']; mysql_select_db($database_base, $base); $query_news = sprintf("SELECT * FROM newsletter WHERE id = '$id'"); $news = mysql_query($query_news, $base) or die(mysql_error()); $row_news = mysql_fetch_assoc($news); $totalRows_news = mysql_num_rows($news); ?> $sujet=$row_news['sujet']; $message=$row_news['texte']; //**************** recup lettre avec les caractères spéciaux $sujet=stripslashes($sujet); $message=stripslashes($message); htmlentities("$message");
Voilà, j'ai mes variables de newsletter à envoyer. maintenant je récupère mes statuts :
<?php foreach ($_POST['statut'] as $_POST['choix']) { echo "",$_POST['choix'],"<br>"; } ?> </span> <? $statut = ''; // on place les valeurs dans un tableau pour plus de sécurité (risque d'injection de code) $var = array('professionnels','particuliers','envoi test'); foreach ($_POST['statut'] as $k=>$value) { if(in_array($value,$var)){ if(!empty($statut)){ $statut .= " OR statut='$value'"; } else{ $statut .= "statut='$value'"; } } } //pour vérifier : echo "<br />".$statut; ?>
Il faut maintenant sélectionner les adresses mail de tous les membres ayant le statut qu'on a choisi. même si une personne s'est inscrite plusieurs fois, il n'y aura qu'un envoi par adresse mail, et j'envoie le tout :
mysql_select_db($database_base $base); $query_emailing = "SELECT DISTINCT mail, statut FROM membres WHERE $statut; $emailing = mysql_query($query_emailing, $base) or die(mysql_error());while($rang=mysql_fetch_array($emailing)){ $destinataire=$rang['mail']; $From = "From:contact@petite-fee.fr\n"; $From .= "MIME-version: 1.0\n"; $From .= "Content-type: text/html; charset= iso-8859-1\n"; $mail_OK= mail($destinataire, $sujet, $message, $From); } // pour vérifier : echo $destinataire; ?> <?php mysql_free_result($emailing); ?>
Voilà, j'espère que ce code fera des heureux, merci à ceux qui m'ont aidée à le faire, j'ai bien ramé, si je peux l'éviter à d'autres...
Message publié le lundi 17 décembre 2007 à 14 h 32 par pchlj. no comment !
Message publié le dimanche 23 décembre 2007 à 10 h 34 par elizabeth. les pieds sur terre et la tête dans les étoiles liste des forums liste des discussions Participer à la discussion
Vous devez obligatoirement vous identifier en tant que membre pour participer à cette discussion.