PHP

Newsletter : renvoyer une newsletter

Résolu

Bonjour,


Après que mon client se soit inscris à ma newsletter, s'il ne l'a pas reçu j'aimerais faire une page "Renvoyer newsletter" dans laquelle je prendrais tous les inscris avec pour chacuns d'entre eux un bouton "Renvoyer". L'image en dessous montre ce qui s'affiche du coup :



Mais comment dois je procéder pour renvoyer l'email a la personne concernée ? car ça n'est pas un formulaire ou j'ajoute un email, ni ou je modifie un email existant. Je souhaite juste renvoyer l'email au client correspondant.


exemple, si je click sur le bouton RENVOYER de la ligne dont l'email est rio@gmail.com , cela renverra la newsletter a cet email UNIQUEMENNT.


PS : je ne suis pas dans la demande de "comment envoyer un email pour le moment" mais dans la façon de procéder pour associer l'email, a une variable $email.


PS2 : j'ai déjà récupéré l'id de la newsletter à renvoyer. Dans mon URL, il y a donc :


.../admin/newsletters-renvoyer.php?id=3


Est ce avec FETCH_ASSOC ? (je fais ça en PDO et pas MYSQLI)


J'espère avoir été le plu claire possible.


Cordialement.

1021 vues
16 novembre 2020 à 2:22 (Édité)
Cette pub permet au site de vivre ...

19 commentaires

Bonjour @Flomir72


Alors j'avance un peu grâce a toi !


Ton code ne fonctionne pas il me renvoit une erreur, par contre en suivant ton idée l'email est bien renvoyé a une adresse qui existe dans ma base de donnée.


J'ai ce code la :


$renvoyer_newsletter=$con->prepare("
		SELECT *
		FROM membres_newsletters 
		");
	$renvoyer_newsletter->execute();

	foreach($renvoyer_newsletter as $m_n)
	{
		$id = $m_n['id'];
		$email = $m_n['email'];
		$msg="email envoyé à $email";
		
	}


Par contre mon soucis, c'est que lorsque j'ai 2 ou 10 membres inscris avec 10 boutons " renvoyer", et bien ca n'est renvoyer qu'à la dernière personne d'ajouter dans la base de donnée...


Mon bouton se trouve bien dans le formulaire.


<button class="NEWSLETTER_RENVOYER___bouton_renvoyer" id="submit" name="submit">Renvoyer</button>


Est ce que ça viendrait d'ici ?

Si $r->id fonctionne pas tu peux faire $r['id'];


Mais je ne comprends pas car ça me parait simple si tu veux renvoyer un email pour moi tu cliques sur un bouton, et tu rediriges vers :


newsletters-renvoyer.php?id='.$row['id'].


ça peut que fonctionner...


Essaie de changer déjà l'histoire du ? par le foreach que je t'ai montré, et ensuite vérifie que tu n'as pas d'erreur.

@Flomir72


ah bon ? il me semblait pourtant que c'était de la protection securité les htmlentities, et les trim... Comment je peux proteger contre les injection SQL du coup ?


Oui ok ça 'est pour récupérer l'ID de la newsletters sur une autre page non ? pourquoi l'avoir mis dans un href ?


 r->id? c'est quoi ?


Tu n'as pas voulue metre $r['id'] plutôt ?

Excuse-moi alors @Dieunel,


Attends je viens de te dire une bêtise, en fin de compte tu ne dois pas sélectionner dans ta requête une seule personne spécifique, fait une requête en sélectionnant tous tes utilisateurs


je fonctionnerai comme ça :


$renvoyer_newsletter = $con->prepare('
		SELECT *
		FROM membres_newsletters');
$renvoyer_newsletter->execute();


Puis dans le body :


<?php
  foreach($renvoyer_newsletter as $r){
?>
<div class="col-md-6 col-xl-3">
<div style="padding: 20px 20px 20px 20px; border: none">
<span><a href="newsletters-renvoyer.php?id=<?= r->id?>"></span>
// Tu récupères dans la boucle foreach tes éléments avec le $r->id ou $r->email ...
<?php
   }
?>


Tu peux faire quelque chose comme ça je pense.

Attention, dans ton code tu utilises des htmlentities !! Les hackers peuvent faire des injections SQL avec cette méthode donc à supprimer !

Courage 🙂

@Flomir72


je n'avais pas vue ton message, je n'ai pas été notifié car tu n'as pas mis mon pseudo je pense...

re @Flomir72


je ne vois pas quoi mettre comme arguments justement,


Et justement je bloqué pour que le ?, sois remplaé par un utilisateur. Ca veut dire que lorsque le formulaire est soumis, je dois faire un foreach affin d'associer l'ID utilisateur a une variable : $id ?

Re:


Normal tu n'as pas mis d'arguments dans le execute(), je pense que c'est pour ça. Le ? dois être remplacé par l'ID de l'utilisateur en question.


Redis-moi...

Bonjour @Flomir72


J'ai fais ça, mais ça m'envoie une érreur en disant que ma ligne au niveau de l'éxecute n'est pas bonne. Donc ça vient de ma requete SELECT...


<?php
$renvoyer_newsletter=$con->prepare("
		SELECT email
		FROM membres_newsletters 
		WHERE id=?");
$renvoyer_newsletter->execute();
?>


Le message d'erreur :


Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '?' at line 3 in D:\xampp\htdocs\SITES\BEC\admin\newsletters-renvoyer.php:83 Stack trace: #0 D:\xampp\htdocs\SITES\BEC\admin\newsletters-renvoyer.php(83): PDOStatement->execute() #1 {main} thrown in D:\xampp\htdocs\SITES\BEC\admin\newsletters-renvoyer.php on line 83


Merci en tout cas de m'aider 😁


Est ce que ça ne viendrait pas de mon URL ? ou justement je réccupere déja un ID, celui associé a la newsletter que je souhaite renvoyer ?


dans ma page NEWSLETTER.PHP j'ai fais ça :


//renvoyer la newsletter a une personne spécifique
						echo '<span><a href="newsletters-renvoyer.php?id='.$row['id'].'" title="Renvoyer cette newsletter à une personne spécifique"><div class="logo_renvoyer"></div></a></span>&nbsp;';


qui m'amène a ma page NEWSLETTERS-RENVOYER.PHP ou je vérifie si l'id éxiste en faisant ça :


if(isset($_GET['id']) && $_GET['id']!='')
{
	$id=trim(htmlentities($_GET['id']));
	$sql=$con->prepare("
		SELECT * 
		FROM newsletters 
		WHERE id='$id'");
	$sql->execute();
	$count=$sql->rowCount();
	if($count==0)
	{
		?>
			<script type="text/javascript">
				window.location.href="newsletters.php?";
			</script>
		<?php
	}
}

Salut @Dieunel 😃


Pour cela ce n'est pas compliqué du tout, tu fais une requête en faisant un :


SELECT email FROM users WHERE id= ?


par exemple...


Tu ranges ça dans une variable $renvoyer_email par exemple,

Et dans la méthode d'envoie que tu as déjà fais ultérieurement j'imagine pour envoyer un email de confirmes ; tu remplaces l'email en dur, par $renvoyer_email

Si tu as du mal, n'hésite pas à me le faire savoir.


Florent 😀

Cette pub permet au site de vivre ...
1
2