Ce site utilise des cookies pour améliorer uniquement votre expérience utilisateur.
Vous pouvez lire à tout moment comment nous utilisons les cookies sur le site.
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.
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.
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 🙂
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> ';
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 😀