all HTML

Accèdez à votre compte : 

Créer un compte …

Perte de mot de passe …

  • Accueil
  • Forum de discussions
  • Publications
  • Communauté
  • Nous contacter

Dernières publications PHP

  • Encodage UTF-8
  • Créer des tableaux avec N cellules par ligne (modulo)
  • Cases à cocher : Trier les destinataires et envoi d'une newsletter en fonction de leur statut
  • Comparaison de dates
  • Conférence PHP Québec 2008: appel aux conférenciers
  • Playlist pour le dewplayer en php avec surcouche javascript
  • Upload et redimentionnement d'image
  • Sélection d'une liste membres à partir d'une base de données
  • Un print_r mieux formatté
  • Le web, la langue française, les pluriels et leur affichage

Dernières publications

  • Web Audit vous aide à faire l'audit de votre site
  • Premier freeware pour cybercafés
  • Nouvel annuaire de référencement
  • Webnet devient partenaire Gold Microsoft
  • Encodage UTF-8
  • Altavista et échanges de liens
  • Plopibox et Gène Internet
  • Créer des tableaux avec N cellules par ligne (modulo)
  • Cases à cocher : Trier les destinataires et envoi d'une newsletter en fonction de leur statut
  • Comparaison de dates

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

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.

Article classé dans PHP

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

Article publié le 27/11/2007 par elizabeth.

  • nous contacter
  • mentions légales