La communauté ALL HTML c'est 58238 membres à ce jour dont 0 inscrits aujourd'hui et 27 depuis une semaine.

Communauté ALL HTML : elizabeth

Cases à cocher : Trier les destinataires et envoi d'une newsletter en fonction de leur statut

Cet article est actuellement publié sur le site.

Photo de elizabeth Article publié le lundi 17 décembre 2007 par elizabeth.
Cet article est classé dans les catégories « PHP »

Ce code permet de lister les statuts sous lesquels sont inscrits les internautes, et de proposer cette liste avec des cases à cocher afin d'envoyer la newsletter uniquement aux membres inscrits sous les statuts que nous avons cochés.

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.

liste.php


<? $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>

et maintenant je vais récupérer la lettre en fonction de son id,
puis récupérer les statuts cochés, afin d'envoyer la lettre à ces personnes, en prenant soin de l'envoyer qu'une fois la lettre même si l'internaute s'est inscrit sous plusieurs statuts.
je me suis inscrite sous le statut "envoi test" ainsi je peux m'envoyer la lettre juste à moi (et éventuellement mes équipiers en leur attribuant ce statut aussi) afin de voir ce que ça donne.
ça se trouve dans...

envoi.php



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...

Petite Fée

ACCÉS COMMUNAUTÉ

Rejoignez ALL HTML

Publiez vos articles, actualités, communiqués ... Donnez votre avis, partagez votre réseau, rencontrez d'autres membres et participez à la vie de la communauté.