Variable manquante dans un envoi mail php
Résolu
houba_houbi
Messages postés
119
Date d'inscription
Statut
Membre
Dernière intervention
-
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai réalisé un formulaire de commande, sur ma page de confirmation de commande, le client doit choisir son mode de paiement. J'ai donc créé 2 formulaires sur cette même page : un pour le paiement par chèque et un autre pour le paiement par CB car l'action du formulaire est différente pour les 2 (retour page accueil ou espace sécurisé de paiement).
Le fait de cliquer sur le bouton du choix correspondant renvoie vers la page concerné + envoi un email de confirmation de commande. Dans mon message je souhaite indiquer le paiement choisi. Or ma variable Paiement doit avoir un souci, car je ne récupère pas l'info...
Voici mon code html :
<form id="form_chq" method="post" action="index.html">
<p class="center"><strong>Chèque bancaire :</strong></p>
<ul>
<li>Je rédige mon chèque à l'ordre XXX</li>
<li>J'envoie mon chèque + <a href="javascript:window.print()">impression de cette page</a> à l'adresse : XXXX</li>
</ul>
<input name="cheque" type="submit" id="cheque" value="Je choisis le paiement par chèque" />
</form>
<form id="form_cb" method="post" action="xxx.html">
<p class="center"><strong>Carte bancaire :</strong></p>
<ul>
<li>Je vais être redirigé vers l'espace de paiement sécurisé :</li>
<li>[LogoCartesXXXXX]</li>
</ul>
<input name="cb" type="submit" id="cb" value="Je choisis le paiement par carte bancaire" />
</form>
Et php :
<?php
if($_POST['cheque'])
{
$Paiement = "chq";
}
if($_POST['cb'])
{
$Paiement = "cb";
}
{
$QuantiteT800 = $_POST['QuantiteT800'];
$PrixT800 = $_POST['PrixT800'];
$TotalT800 = $_POST['TotalT800'];
$QuantiteT1600 = $_POST['QuantiteT1600'];
$PrixT1600 = $_POST['PrixT1600'];
$TotalT1600 = $_POST['TotalT1600'];
$QuantiteT3200 = $_POST['QuantiteT3200'];
$PrixT3200 = $_POST['PrixT3200'];
$TotalT3200 = $_POST['TotalT3200'];
$QuantiteT5400 = $_POST['QuantiteT5400'];
$PrixT5400 = $_POST['PrixT5400'];
$TotalT5400 = $_POST['TotalT5400'];
$Montant = $_POST['Montant'];
$CiviliteFacture = $_POST['CiviliteFacture'];
$NomFacture = $_POST['NomFacture'];
$PrenomFacture = $_POST['PrenomFacture'];
$SocieteFacture = $_POST['SocieteFacture'];
$AdresseFacture = $_POST['AdresseFacture'];
$CpFacture = $_POST['CpFacture'];
$VilleFacture = $_POST['VilleFacture'];
$Email = $_POST['Email'];
$Tel = $_POST['Tel'];
$CiviliteLivraison = $_POST['CiviliteLivraison'];
$NomLivraison = $_POST['NomLivraison'];
$PrenomLivraison = $_POST['PrenomLivraison'];
$SocieteLivraison = $_POST['SocieteLivraison'];
$AdresseLivraison = $_POST['AdresseLivraison'];
$CpLivraison = $_POST['CpLivraison'];
$Villelivraison = $_POST['VilleLivraison'];
$CommentLivraison = $_POST['CommentLivraison'];
$email_destinataire = "xxxx";
$subject = "Votre commande xxx";
$headers = "From: xxxx\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: text/plain;\n";
$headers .= "\tformat=flowed;\n";
$headers .= "\tcharset=\"utf-8\";\n";
$headers .= "\treply-type=original\n";
$headers .= "Content-Transfer-Encoding: 8bit\n";
$headers .= "Reply-To: xxx"; // pas de \r\n à la fin PHP s'en charge
$body = "Bonjour,\n\n"
."Nous vous remercions pour votre commande passée sur xxxx. Vous trouverez ci-dessous le récapitulatif de votre commande :\n\n"
."Articles :\n"
."T800 : $QuantiteT800 article(s) à $PrixT800 euros, soit $TotalT800 euros\n\n"
."T1600 : $QuantiteT1600 article(s) à $PrixT1600 euros, soit $TotalT1600 euros\n\n"
."T3200 : $QuantiteT3200 article(s) à $PrixT3200 euros, soit $TotalT3200 euros\n\n"
."T5400 : $QuantiteT5400 article(s) à $PrixT5400 euros, soit $TotalT5400 euros\n\n\n"
."Total commande : $Montant euros\n\n"
."Adresse facturation :\n"
."$CiviliteFacture $NomFacture $PrenomFacture - Société : $SocieteFacture - Adresse : $AdresseFacture $CpFacture $VilleFacture - Email : $Email - Tél. : $Tel\n\n"
."Adresse livraison :\n"
."$CiviliteLivraison $NomLivraison $PrenomLivraison - Société : $SocieteLivraison - Adresse : $AdresseLivraison $CpLivraison $Villelivraison\n\n"
."Commentaire : $CommentLivraison\n\n"
."Mode de paiement : $Paiement\n\n"; <---------- c'est ici !!!!!!!!!
mail($email_destinataire, $subject, $body, $headers);
}
?>
Merci de vos lumières... car j'avoue que je câle (suis débutante en php....)
J'ai réalisé un formulaire de commande, sur ma page de confirmation de commande, le client doit choisir son mode de paiement. J'ai donc créé 2 formulaires sur cette même page : un pour le paiement par chèque et un autre pour le paiement par CB car l'action du formulaire est différente pour les 2 (retour page accueil ou espace sécurisé de paiement).
Le fait de cliquer sur le bouton du choix correspondant renvoie vers la page concerné + envoi un email de confirmation de commande. Dans mon message je souhaite indiquer le paiement choisi. Or ma variable Paiement doit avoir un souci, car je ne récupère pas l'info...
Voici mon code html :
<form id="form_chq" method="post" action="index.html">
<p class="center"><strong>Chèque bancaire :</strong></p>
<ul>
<li>Je rédige mon chèque à l'ordre XXX</li>
<li>J'envoie mon chèque + <a href="javascript:window.print()">impression de cette page</a> à l'adresse : XXXX</li>
</ul>
<input name="cheque" type="submit" id="cheque" value="Je choisis le paiement par chèque" />
</form>
<form id="form_cb" method="post" action="xxx.html">
<p class="center"><strong>Carte bancaire :</strong></p>
<ul>
<li>Je vais être redirigé vers l'espace de paiement sécurisé :</li>
<li>[LogoCartesXXXXX]</li>
</ul>
<input name="cb" type="submit" id="cb" value="Je choisis le paiement par carte bancaire" />
</form>
Et php :
<?php
if($_POST['cheque'])
{
$Paiement = "chq";
}
if($_POST['cb'])
{
$Paiement = "cb";
}
{
$QuantiteT800 = $_POST['QuantiteT800'];
$PrixT800 = $_POST['PrixT800'];
$TotalT800 = $_POST['TotalT800'];
$QuantiteT1600 = $_POST['QuantiteT1600'];
$PrixT1600 = $_POST['PrixT1600'];
$TotalT1600 = $_POST['TotalT1600'];
$QuantiteT3200 = $_POST['QuantiteT3200'];
$PrixT3200 = $_POST['PrixT3200'];
$TotalT3200 = $_POST['TotalT3200'];
$QuantiteT5400 = $_POST['QuantiteT5400'];
$PrixT5400 = $_POST['PrixT5400'];
$TotalT5400 = $_POST['TotalT5400'];
$Montant = $_POST['Montant'];
$CiviliteFacture = $_POST['CiviliteFacture'];
$NomFacture = $_POST['NomFacture'];
$PrenomFacture = $_POST['PrenomFacture'];
$SocieteFacture = $_POST['SocieteFacture'];
$AdresseFacture = $_POST['AdresseFacture'];
$CpFacture = $_POST['CpFacture'];
$VilleFacture = $_POST['VilleFacture'];
$Email = $_POST['Email'];
$Tel = $_POST['Tel'];
$CiviliteLivraison = $_POST['CiviliteLivraison'];
$NomLivraison = $_POST['NomLivraison'];
$PrenomLivraison = $_POST['PrenomLivraison'];
$SocieteLivraison = $_POST['SocieteLivraison'];
$AdresseLivraison = $_POST['AdresseLivraison'];
$CpLivraison = $_POST['CpLivraison'];
$Villelivraison = $_POST['VilleLivraison'];
$CommentLivraison = $_POST['CommentLivraison'];
$email_destinataire = "xxxx";
$subject = "Votre commande xxx";
$headers = "From: xxxx\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: text/plain;\n";
$headers .= "\tformat=flowed;\n";
$headers .= "\tcharset=\"utf-8\";\n";
$headers .= "\treply-type=original\n";
$headers .= "Content-Transfer-Encoding: 8bit\n";
$headers .= "Reply-To: xxx"; // pas de \r\n à la fin PHP s'en charge
$body = "Bonjour,\n\n"
."Nous vous remercions pour votre commande passée sur xxxx. Vous trouverez ci-dessous le récapitulatif de votre commande :\n\n"
."Articles :\n"
."T800 : $QuantiteT800 article(s) à $PrixT800 euros, soit $TotalT800 euros\n\n"
."T1600 : $QuantiteT1600 article(s) à $PrixT1600 euros, soit $TotalT1600 euros\n\n"
."T3200 : $QuantiteT3200 article(s) à $PrixT3200 euros, soit $TotalT3200 euros\n\n"
."T5400 : $QuantiteT5400 article(s) à $PrixT5400 euros, soit $TotalT5400 euros\n\n\n"
."Total commande : $Montant euros\n\n"
."Adresse facturation :\n"
."$CiviliteFacture $NomFacture $PrenomFacture - Société : $SocieteFacture - Adresse : $AdresseFacture $CpFacture $VilleFacture - Email : $Email - Tél. : $Tel\n\n"
."Adresse livraison :\n"
."$CiviliteLivraison $NomLivraison $PrenomLivraison - Société : $SocieteLivraison - Adresse : $AdresseLivraison $CpLivraison $Villelivraison\n\n"
."Commentaire : $CommentLivraison\n\n"
."Mode de paiement : $Paiement\n\n"; <---------- c'est ici !!!!!!!!!
mail($email_destinataire, $subject, $body, $headers);
}
?>
Merci de vos lumières... car j'avoue que je câle (suis débutante en php....)
A voir également:
- Variable manquante dans un envoi mail php
- Programmer envoi mail gmail - Guide
- Publipostage mail - Accueil - Word
- Envoi mail cci - Guide
- Gmail envoyer un mail - Guide
- Windows live mail - Télécharger - Mail
10 réponses
normal tu postes un formulaire sans rien dedans
il faut y mettre un champ caché "hidden"
il faut y mettre un champ caché "hidden"
<form id="form_chq" method="post" action="index.html"> <p class="center"><strong>Chèque bancaire :</strong></p> <ul> <li>Je rédige mon chèque à l'ordre XXX</li> <li>J'envoie mon chèque + <a href="javascript:window.print()">impression de cette page</a> à l'adresse : XXXX</li> </ul> <input name="cheque" type="hidden" id="cheque" value="cheque" /> <input name="cheque" type="submit" id="cheque" value="Je choisis le paiement par chèque" /> </form> <form id="form_cb" method="post" action="xxx.html"> <p class="center"><strong>Carte bancaire :</strong></p> <ul> <li>Je vais être redirigé vers l'espace de paiement sécurisé :</li> <li>[LogoCartesXXXXX]</li> </ul> <input name="cb" type="hidden" id="cb" value="cd" /> <input name="cb" type="submit" id="cb" value="Je choisis le paiement par carte bancaire" /> </form> Et php : <?php if(isset($_POST['cheque']) AND $_POST['cheque']=="cheque") { $Paiement = "chq"; } if(isset($_POST['cb']) AND $_POST['cb']=="cb") { $Paiement = "cb"; } //{ //je ne vois pas du tout a quoi sert cette accolade $QuantiteT800 = $_POST['QuantiteT800']; $PrixT800 = $_POST['PrixT800']; $TotalT800 = $_POST['TotalT800']; $QuantiteT1600 = $_POST['QuantiteT1600']; $PrixT1600 = $_POST['PrixT1600']; $TotalT1600 = $_POST['TotalT1600']; $QuantiteT3200 = $_POST['QuantiteT3200']; $PrixT3200 = $_POST['PrixT3200']; $TotalT3200 = $_POST['TotalT3200']; $QuantiteT5400 = $_POST['QuantiteT5400']; $PrixT5400 = $_POST['PrixT5400']; $TotalT5400 = $_POST['TotalT5400']; $Montant = $_POST['Montant']; $CiviliteFacture = $_POST['CiviliteFacture']; $NomFacture = $_POST['NomFacture']; $PrenomFacture = $_POST['PrenomFacture']; $SocieteFacture = $_POST['SocieteFacture']; $AdresseFacture = $_POST['AdresseFacture']; $CpFacture = $_POST['CpFacture']; $VilleFacture = $_POST['VilleFacture']; $Email = $_POST['Email']; $Tel = $_POST['Tel']; $CiviliteLivraison = $_POST['CiviliteLivraison']; $NomLivraison = $_POST['NomLivraison']; $PrenomLivraison = $_POST['PrenomLivraison']; $SocieteLivraison = $_POST['SocieteLivraison']; $AdresseLivraison = $_POST['AdresseLivraison']; $CpLivraison = $_POST['CpLivraison']; $Villelivraison = $_POST['VilleLivraison']; $CommentLivraison = $_POST['CommentLivraison']; $email_destinataire = "xxxx"; $subject = "Votre commande xxx"; $headers = "From: xxxx\n"; $headers .= "MIME-Version: 1.0\n"; $headers .= "Content-Type: text/plain;\n"; $headers .= "\tformat=flowed;\n"; $headers .= "\tcharset=\"utf-8\";\n"; $headers .= "\treply-type=original\n"; $headers .= "Content-Transfer-Encoding: 8bit\n"; $headers .= "Reply-To: xxx"; // pas de \r\n à la fin PHP s'en charge $body = "Bonjour,\n\n" ."Nous vous remercions pour votre commande passée sur xxxx. Vous trouverez ci-dessous le récapitulatif de votre commande :\n\n" ."Articles :\n" ."T800 : $QuantiteT800 article(s) à $PrixT800 euros, soit $TotalT800 euros\n\n" ."T1600 : $QuantiteT1600 article(s) à $PrixT1600 euros, soit $TotalT1600 euros\n\n" ."T3200 : $QuantiteT3200 article(s) à $PrixT3200 euros, soit $TotalT3200 euros\n\n" ."T5400 : $QuantiteT5400 article(s) à $PrixT5400 euros, soit $TotalT5400 euros\n\n\n" ."Total commande : $Montant euros\n\n" ."Adresse facturation :\n" ."$CiviliteFacture $NomFacture $PrenomFacture - Société : $SocieteFacture - Adresse : $AdresseFacture $CpFacture $VilleFacture - Email : $Email - Tél. : $Tel\n\n" ."Adresse livraison :\n" ."$CiviliteLivraison $NomLivraison $PrenomLivraison - Société : $SocieteLivraison - Adresse : $AdresseLivraison $CpLivraison $Villelivraison\n\n" ."Commentaire : $CommentLivraison\n\n" ."Mode de paiement : $Paiement\n\n"; mail($email_destinataire, $subject, $body, $headers); // } //meme remarque ?>
isset ça veut dire is set c'est a dire est ce que la variable existe donc
on s'en sert pour tester si le formulaire est posté
Pour le 2ème $_POST, je pense qu'il s'agit de l'id de l'input "hidden" ? ou du bouton "submit" ? Bon j'ai essayé les 2, je ne récupère pas ma variable dans le mail.
l'id ne sert pas a reuperer les valeurs postées par un champ, ça sert pour atteindre un objet en CSS ou javascript
tu dois récuperer par le name
$_POST['name_du_champ']
on s'en sert pour tester si le formulaire est posté
Pour le 2ème $_POST, je pense qu'il s'agit de l'id de l'input "hidden" ? ou du bouton "submit" ? Bon j'ai essayé les 2, je ne récupère pas ma variable dans le mail.
l'id ne sert pas a reuperer les valeurs postées par un champ, ça sert pour atteindre un objet en CSS ou javascript
tu dois récuperer par le name
$_POST['name_du_champ']
<form .... ... <input name="cheque" type="submit" id="cheque" value="Je choisis le paiement par chèque" /> <input type="hidden" name="chq" id="chq" value="chq" /> ... </form> <form ..... .... <input name="carte_b" type="submit" id="carte_b" value="Je choisis le paiement par carte bancaire" /> <input type="hidden" name="cb" id="cb" value="cb" /> </form> <?php if(isset($_POST['chq']) AND $_POST['chq']=="chq") { $Paiement = "chèque bancaire"; } if(isset($_POST['cb']) AND $_POST['cb']=="cb") { $Paiement = "carte bancaire"; }
Merci pour tes explications claires... J'aurais appris quelque chose !!
En revanche, comme je mets les mêmes noms pour mes id et name, mon script était donc correct. J'ai essayé aussi avec des noms différents. Rien à faire je n'arrive pas à récupérer ma variable Paiement...
J'ai remodifié mes noms dans le formulaire et le code php :
<input name="paiement_cheque" type="submit" id="paiement_cheque" value="Je choisis le paiement par chèque" /><input type="hidden" name="Paiement" id="chq" value="chèque bancaire" />
<input name="paiement_cb" type="submit" id="paiement_cb" value="Je choisis le paiement par carte bancaire" /><input type="hidden" name="Paiement" id="cb" value="carte bancaire" />
<?php
if(isset($_POST['paiement_cheque']))
{
$Paiement = $_POST['Paiement'];
}
if(isset($_POST['paiement_cb']))
{
$Paiement = $_POST['Paiement'];
}
Si je fais un echo de ma variable Paiement sur la page de destination, j'ai bien ma variable correspondante ! En revanche, c'est dans le mail qu'elle ne veut pas apparaître !!
As-tu essayé chez toi ? ça fonctionne ?
En revanche, comme je mets les mêmes noms pour mes id et name, mon script était donc correct. J'ai essayé aussi avec des noms différents. Rien à faire je n'arrive pas à récupérer ma variable Paiement...
J'ai remodifié mes noms dans le formulaire et le code php :
<input name="paiement_cheque" type="submit" id="paiement_cheque" value="Je choisis le paiement par chèque" /><input type="hidden" name="Paiement" id="chq" value="chèque bancaire" />
<input name="paiement_cb" type="submit" id="paiement_cb" value="Je choisis le paiement par carte bancaire" /><input type="hidden" name="Paiement" id="cb" value="carte bancaire" />
<?php
if(isset($_POST['paiement_cheque']))
{
$Paiement = $_POST['Paiement'];
}
if(isset($_POST['paiement_cb']))
{
$Paiement = $_POST['Paiement'];
}
Si je fais un echo de ma variable Paiement sur la page de destination, j'ai bien ma variable correspondante ! En revanche, c'est dans le mail qu'elle ne veut pas apparaître !!
As-tu essayé chez toi ? ça fonctionne ?
je reçois un premier mail MAIS AVANT d'avoir cliqué sur le bouton avec mes variables récupérées de ma page précédente" + Paiement vide
cela s'explique car ta fonction mail(....) se déclenche dès l'exécution de ta 2 ième page
- puis lorsque je clique sur le bouton je reçois le un autre mail sans mes variables précédentes mais cette fois-ci Paiement est rempli.
normal aussi puique ce sont seulement les valurs postées par un des deux formulaires paiement ch ou cb qui sont postées
il faut que tu t'organises différement
une solution:
page 1 toutes les saisies
ensuite affichage de page2 avec les boutons choix paiement mais il faut "t'arranger " pour faire suivre les valeurs de la page 1
une autre solution en stockant tes valeurs dans des variables de session
cela s'explique car ta fonction mail(....) se déclenche dès l'exécution de ta 2 ième page
- puis lorsque je clique sur le bouton je reçois le un autre mail sans mes variables précédentes mais cette fois-ci Paiement est rempli.
normal aussi puique ce sont seulement les valurs postées par un des deux formulaires paiement ch ou cb qui sont postées
il faut que tu t'organises différement
une solution:
page 1 toutes les saisies
ensuite affichage de page2 avec les boutons choix paiement mais il faut "t'arranger " pour faire suivre les valeurs de la page 1
<form name="form1" method="post" action=""> <input name="paiement_cheque" type="submit" id="paiement_cheque" value="Je choisis le paiement par chèque" /> <!-- champs cachés pour les valeurs postées par la page1 --> <input type="hidden" name="QuantiteT800" id="QuantiteT800" value="<?php if(isset($_POST['QuantiteT800'])) echo $_POST['QuantiteT800']; ?>" /> <input type="hidden" name="TotalT800" id="PrixT800" value="<?php if(isset($_POST['PrixT800'])) echo $_POST['PrixT800']; ?>" /> <input type="hidden" name="TotalT800" id="TotalT800" value="<?php if(isset($_POST['TotalT800'])) echo $_POST['TotalT800']; ?>" /> <!-- tu mets tous tes champs page1 ainsi --> <input type="hidden" name="Paiement" id="chq" value="chèque bancaire" /> </form> <form name="form2" method="post" action=""> <input name="paiement_cb" type="submit" id="paiement_cb" value="Je choisis le paiement par carte bancaire" /> <!-- champs cachés pour les valeurs postées par la page1 --> <input type="hidden" name="QuantiteT800" id="QuantiteT800" value="<?php if(isset($_POST['QuantiteT800'])) echo $_POST['QuantiteT800']; ?>" /> <input type="hidden" name="TotalT800" id="PrixT800" value="<?php if(isset($_POST['PrixT800'])) echo $_POST['PrixT800']; ?>" /> <input type="hidden" name="TotalT800" id="TotalT800" value="<?php if(isset($_POST['TotalT800'])) echo $_POST['TotalT800']; ?>" /> <!-- tu mets tous tes champs page1 ainsi --> <input type="hidden" name="Paiement" id="cb" value="carte bancaire" /> </form> <?php if(isset($_POST['paiement_cheque'])) { $Paiement = $_POST['Paiement']; //echo $Paiement; } if(isset($_POST['paiement_cb'])) { $Paiement = $_POST['Paiement']; //echo $Paiement; } if(isset($_POST['paiement_cheque']) OR isset($_POST['paiement_cb'])){ //on ne va faire le mail que si le choix du paiement a ete fait $QuantiteT800 = $_POST['QuantiteT800']; $PrixT800 = $_POST['PrixT800']; $TotalT800 = $_POST['TotalT800']; $QuantiteT1600 = $_POST['QuantiteT1600']; $PrixT1600 = $_POST['PrixT1600']; $TotalT1600 = $_POST['TotalT1600']; $QuantiteT3200 = $_POST['QuantiteT3200']; $PrixT3200 = $_POST['PrixT3200']; $TotalT3200 = $_POST['TotalT3200']; $QuantiteT5400 = $_POST['QuantiteT5400']; $PrixT5400 = $_POST['PrixT5400']; $TotalT5400 = $_POST['TotalT5400']; $Montant = $_POST['Montant']; $CiviliteFacture = $_POST['CiviliteFacture']; $NomFacture = $_POST['NomFacture']; $PrenomFacture = $_POST['PrenomFacture']; $SocieteFacture = $_POST['SocieteFacture']; $AdresseFacture = $_POST['AdresseFacture']; $CpFacture = $_POST['CpFacture']; $VilleFacture = $_POST['VilleFacture']; $Email = $_POST['Email']; $Tel = $_POST['Tel']; $CiviliteLivraison = $_POST['CiviliteLivraison']; $NomLivraison = $_POST['NomLivraison']; $PrenomLivraison = $_POST['PrenomLivraison']; $SocieteLivraison = $_POST['SocieteLivraison']; $AdresseLivraison = $_POST['AdresseLivraison']; $CpLivraison = $_POST['CpLivraison']; $Villelivraison = $_POST['VilleLivraison']; $CommentLivraison = $_POST['CommentLivraison']; $email_destinataire = "xxxx"; $subject = "Votre commande xxx"; $headers = "From: xxxx\n"; $headers .= "Reply-To: xxx\n"; $headers .= "MIME-Version: 1.0\n"; $headers .= "Content-Type: text/plain;\n"; $headers .= "\tformat=flowed;\n"; $headers .= "\tcharset=\"utf-8\";\n"; $headers .= "\treply-type=original\n"; $headers .= "Content-Transfer-Encoding: 8bit\n"; $body = "Bonjour,\n\n"; $body .="Nous vous remercions pour votre commande passée sur xxxx. Vous trouverez ci-dessous le récapitulatif de votre commande :\n\n"; $body .="Articles :\n"; $body .="T800 : $QuantiteT800 article(s) à $PrixT800 euros, soit $TotalT800 euros\n\n"; $body .="T1600 : $QuantiteT1600 article(s) à $PrixT1600 euros, soit $TotalT1600 euros\n\n"; $body .="T3200 : $QuantiteT3200 article(s) à $PrixT3200 euros, soit $TotalT3200 euros\n\n"; $body .="T5400 : $QuantiteT5400 article(s) à $PrixT5400 euros, soit $TotalT5400 euros\n\n\n"; $body .="Total commande : $Montant euros\n\n"; $body .="Adresse facturation :\n"; $body .="$CiviliteFacture $NomFacture $PrenomFacture - Société : $SocieteFacture - Adresse : $AdresseFacture $CpFacture $VilleFacture - Email : $Email - Tél. : $Tel\n\n"; $body .="Adresse livraison :\n"; $body .="$CiviliteLivraison $NomLivraison $PrenomLivraison - Société : $SocieteLivraison - Adresse : $AdresseLivraison $CpLivraison $Villelivraison\n\n"; $body .="Commentaire : $CommentLivraison\n\n"; $body .="Mode de paiement : $Paiement\n\n"; mail($email_destinataire, $subject, $body, $headers); } ?>
une autre solution en stockant tes valeurs dans des variables de session
Je vois une solution
dans tes formulaires tu mets:
et dans le script nommé env_mail.php
tu y mets la partie:
dans tes formulaires tu mets:
<form name="form1" method="post" action="env_mail.php?redir=accueil"> <input name="paiement_cheque" type="submit" id="paiement_cheque" value="Je choisis le paiement par chèque" /> <!-- champs cachés pour les valeurs postées par la page1 --> <input type="hidden" name="QuantiteT800" id="QuantiteT800" value="<?php if(isset($_POST['QuantiteT800'])) echo $_POST['QuantiteT800']; ?>" /> <input type="hidden" name="TotalT800" id="PrixT800" value="<?php if(isset($_POST['PrixT800'])) echo $_POST['PrixT800']; ?>" /> <input type="hidden" name="TotalT800" id="TotalT800" value="<?php if(isset($_POST['TotalT800'])) echo $_POST['TotalT800']; ?>" /> <!-- tu mets tous tes champs page1 ainsi --> <input type="hidden" name="Paiement" id="chq" value="chèque bancaire" /> </form> <form name="form2" method="post" action="env_mail.php?redir=secur"> <input name="paiement_cb" type="submit" id="paiement_cb" value="Je choisis le paiement par carte bancaire" /> <!-- champs cachés pour les valeurs postées par la page1 --> <input type="hidden" name="QuantiteT800" id="QuantiteT800" value="<?php if(isset($_POST['QuantiteT800'])) echo $_POST['QuantiteT800']; ?>" /> <input type="hidden" name="TotalT800" id="PrixT800" value="<?php if(isset($_POST['PrixT800'])) echo $_POST['PrixT800']; ?>" /> <input type="hidden" name="TotalT800" id="TotalT800" value="<?php if(isset($_POST['TotalT800'])) echo $_POST['TotalT800']; ?>" /> <!-- tu mets tous tes champs page1 ainsi --> <input type="hidden" name="Paiement" id="cb" value="carte bancaire" /> </form>
et dans le script nommé env_mail.php
tu y mets la partie:
<?php if(isset($_POST['paiement_cheque'])) { $Paiement = $_POST['Paiement']; //echo $Paiement; } if(isset($_POST['paiement_cb'])) { $Paiement = $_POST['Paiement']; //echo $Paiement; } if(isset($_POST['paiement_cheque']) OR isset($_POST['paiement_cb'])){ //on ne va faire le mail que si le choix du paiement a ete fait $QuantiteT800 = $_POST['QuantiteT800']; $PrixT800 = $_POST['PrixT800']; $TotalT800 = $_POST['TotalT800']; $QuantiteT1600 = $_POST['QuantiteT1600']; $PrixT1600 = $_POST['PrixT1600']; $TotalT1600 = $_POST['TotalT1600']; $QuantiteT3200 = $_POST['QuantiteT3200']; $PrixT3200 = $_POST['PrixT3200']; $TotalT3200 = $_POST['TotalT3200']; $QuantiteT5400 = $_POST['QuantiteT5400']; $PrixT5400 = $_POST['PrixT5400']; $TotalT5400 = $_POST['TotalT5400']; $Montant = $_POST['Montant']; $CiviliteFacture = $_POST['CiviliteFacture']; $NomFacture = $_POST['NomFacture']; $PrenomFacture = $_POST['PrenomFacture']; $SocieteFacture = $_POST['SocieteFacture']; $AdresseFacture = $_POST['AdresseFacture']; $CpFacture = $_POST['CpFacture']; $VilleFacture = $_POST['VilleFacture']; $Email = $_POST['Email']; $Tel = $_POST['Tel']; $CiviliteLivraison = $_POST['CiviliteLivraison']; $NomLivraison = $_POST['NomLivraison']; $PrenomLivraison = $_POST['PrenomLivraison']; $SocieteLivraison = $_POST['SocieteLivraison']; $AdresseLivraison = $_POST['AdresseLivraison']; $CpLivraison = $_POST['CpLivraison']; $Villelivraison = $_POST['VilleLivraison']; $CommentLivraison = $_POST['CommentLivraison']; $email_destinataire = "xxxx"; $subject = "Votre commande xxx"; $headers = "From: xxxx\n"; $headers .= "Reply-To: xxx\n"; $headers .= "MIME-Version: 1.0\n"; $headers .= "Content-Type: text/plain;\n"; $headers .= "\tformat=flowed;\n"; $headers .= "\tcharset=\"utf-8\";\n"; $headers .= "\treply-type=original\n"; $headers .= "Content-Transfer-Encoding: 8bit\n"; $body = "Bonjour,\n\n"; $body .="Nous vous remercions pour votre commande passée sur xxxx. Vous trouverez ci-dessous le récapitulatif de votre commande :\n\n"; $body .="Articles :\n"; $body .="T800 : $QuantiteT800 article(s) à $PrixT800 euros, soit $TotalT800 euros\n\n"; $body .="T1600 : $QuantiteT1600 article(s) à $PrixT1600 euros, soit $TotalT1600 euros\n\n"; $body .="T3200 : $QuantiteT3200 article(s) à $PrixT3200 euros, soit $TotalT3200 euros\n\n"; $body .="T5400 : $QuantiteT5400 article(s) à $PrixT5400 euros, soit $TotalT5400 euros\n\n\n"; $body .="Total commande : $Montant euros\n\n"; $body .="Adresse facturation :\n"; $body .="$CiviliteFacture $NomFacture $PrenomFacture - Société : $SocieteFacture - Adresse : $AdresseFacture $CpFacture $VilleFacture - Email : $Email - Tél. : $Tel\n\n"; $body .="Adresse livraison :\n"; $body .="$CiviliteLivraison $NomLivraison $PrenomLivraison - Société : $SocieteLivraison - Adresse : $AdresseLivraison $CpLivraison $Villelivraison\n\n"; $body .="Commentaire : $CommentLivraison\n\n"; $body .="Mode de paiement : $Paiement\n\n"; mail($email_destinataire, $subject, $body, $headers); //redirection on peut mettre un header puique qu'on a rien envoyé avant au navigateur if(isset($_GET['redir'])){ if($_GET['redir'] =="accueil"){ //vers page d'accueil header("Location:accueil.html"); }elseif($_GET['redir'] =="secur") //vers page securisée header("Location:paiement_securise.php"); } } } ?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci Alain pour ta réponse rapide.
Je ne pensais pas qu'il fallait envoyer des champs masqués...
Je pensais tout simplement qu'en "disant" si le bouton qui porte le nom X est cliqué, ma variable a le texte X.
Effectivement, j'ai supprimé les accolades -> ça fonctionne
Isset c'est quoi, c'est pour dire, si le bouton est cliqué ?
Pour le 2ème $_POST, je pense qu'il s'agit de l'id de l'input "hidden" ? ou du bouton "submit" ? Bon j'ai essayé les 2, je ne récupère pas ma variable dans le mail.
<input name="cheque" type="submit" id="cheque" value="Je choisis le paiement par chèque" />
<input type="hidden" name="chq" id="chq" value="chq" />
<input name="carte_b" type="submit" id="carte_b" value="Je choisis le paiement par carte bancaire" />
<input type="hidden" name="cb" id="cb" value="cb" />
<?php
if(isset($_POST['cheque']) AND $_POST['chq']=="chq")
{
$Paiement = "chèque bancaire";
}
if(isset($_POST['carte_b']) AND $_POST['cb']=="cb")
{
$Paiement = "carte bancaire";
}
Merci de ton aide
Je ne pensais pas qu'il fallait envoyer des champs masqués...
Je pensais tout simplement qu'en "disant" si le bouton qui porte le nom X est cliqué, ma variable a le texte X.
Effectivement, j'ai supprimé les accolades -> ça fonctionne
Isset c'est quoi, c'est pour dire, si le bouton est cliqué ?
Pour le 2ème $_POST, je pense qu'il s'agit de l'id de l'input "hidden" ? ou du bouton "submit" ? Bon j'ai essayé les 2, je ne récupère pas ma variable dans le mail.
<input name="cheque" type="submit" id="cheque" value="Je choisis le paiement par chèque" />
<input type="hidden" name="chq" id="chq" value="chq" />
<input name="carte_b" type="submit" id="carte_b" value="Je choisis le paiement par carte bancaire" />
<input type="hidden" name="cb" id="cb" value="cb" />
<?php
if(isset($_POST['cheque']) AND $_POST['chq']=="chq")
{
$Paiement = "chèque bancaire";
}
if(isset($_POST['carte_b']) AND $_POST['cb']=="cb")
{
$Paiement = "carte bancaire";
}
Merci de ton aide
chez moi je vois aussi la variable mais j'ai modifié un peu ta methode de concatenation du body et le reply-to
<form name="form1" method="post" action=""> <input name="paiement_cheque" type="submit" id="paiement_cheque" value="Je choisis le paiement par chèque" /> <input type="hidden" name="Paiement" id="chq" value="chèque bancaire" /> </form> <form name="form2" method="post" action=""> <input name="paiement_cb" type="submit" id="paiement_cb" value="Je choisis le paiement par carte bancaire" /> <input type="hidden" name="Paiement" id="cb" value="carte bancaire" /> </form> <?php if(isset($_POST['paiement_cheque'])) { $Paiement = $_POST['Paiement']; //echo $Paiement; } if(isset($_POST['paiement_cb'])) { $Paiement = $_POST['Paiement']; //echo $Paiement; } $QuantiteT800 = $_POST['QuantiteT800']; $PrixT800 = $_POST['PrixT800']; $TotalT800 = $_POST['TotalT800']; $QuantiteT1600 = $_POST['QuantiteT1600']; $PrixT1600 = $_POST['PrixT1600']; $TotalT1600 = $_POST['TotalT1600']; $QuantiteT3200 = $_POST['QuantiteT3200']; $PrixT3200 = $_POST['PrixT3200']; $TotalT3200 = $_POST['TotalT3200']; $QuantiteT5400 = $_POST['QuantiteT5400']; $PrixT5400 = $_POST['PrixT5400']; $TotalT5400 = $_POST['TotalT5400']; $Montant = $_POST['Montant']; $CiviliteFacture = $_POST['CiviliteFacture']; $NomFacture = $_POST['NomFacture']; $PrenomFacture = $_POST['PrenomFacture']; $SocieteFacture = $_POST['SocieteFacture']; $AdresseFacture = $_POST['AdresseFacture']; $CpFacture = $_POST['CpFacture']; $VilleFacture = $_POST['VilleFacture']; $Email = $_POST['Email']; $Tel = $_POST['Tel']; $CiviliteLivraison = $_POST['CiviliteLivraison']; $NomLivraison = $_POST['NomLivraison']; $PrenomLivraison = $_POST['PrenomLivraison']; $SocieteLivraison = $_POST['SocieteLivraison']; $AdresseLivraison = $_POST['AdresseLivraison']; $CpLivraison = $_POST['CpLivraison']; $Villelivraison = $_POST['VilleLivraison']; $CommentLivraison = $_POST['CommentLivraison']; $email_destinataire = "xxxx"; $subject = "Votre commande xxx"; $headers = "From: xxxx\n"; $headers .= "Reply-To: xxx\n"; // pas de \r\n à la fin PHP s'en charge ?? pas d'accord pourquoi php le rajouterai ici et pas sur les autre slignes ! $headers .= "MIME-Version: 1.0\n"; $headers .= "Content-Type: text/plain;\n"; $headers .= "\tformat=flowed;\n"; $headers .= "\tcharset=\"utf-8\";\n"; $headers .= "\treply-type=original\n"; $headers .= "Content-Transfer-Encoding: 8bit\n"; $body = "Bonjour,\n\n"; $body .="Nous vous remercions pour votre commande passée sur xxxx. Vous trouverez ci-dessous le récapitulatif de votre commande :\n\n"; $body .="Articles :\n"; $body .="T800 : $QuantiteT800 article(s) à $PrixT800 euros, soit $TotalT800 euros\n\n"; $body .="T1600 : $QuantiteT1600 article(s) à $PrixT1600 euros, soit $TotalT1600 euros\n\n"; $body .="T3200 : $QuantiteT3200 article(s) à $PrixT3200 euros, soit $TotalT3200 euros\n\n"; $body .="T5400 : $QuantiteT5400 article(s) à $PrixT5400 euros, soit $TotalT5400 euros\n\n\n"; $body .="Total commande : $Montant euros\n\n"; $body .="Adresse facturation :\n"; $body .="$CiviliteFacture $NomFacture $PrenomFacture - Société : $SocieteFacture - Adresse : $AdresseFacture $CpFacture $VilleFacture - Email : $Email - Tél. : $Tel\n\n"; $body .="Adresse livraison :\n"; $body .="$CiviliteLivraison $NomLivraison $PrenomLivraison - Société : $SocieteLivraison - Adresse : $AdresseLivraison $CpLivraison $Villelivraison\n\n"; $body .="Commentaire : $CommentLivraison\n\n"; $body .="Mode de paiement : $Paiement\n\n"; /* //TEST echo $headers."<br>"; echo $subject."<br>"; echo $body."<br>"; */ mail($email_destinataire, $subject, $body, $headers); ?>
Merci pour ton aide !!!!
Malheureusement, cela ne change pas grand chose... Je m'explique :
Si je mets action ="" (comme toi) :
- je reçois un premier mail MAIS AVANT d'avoir cliqué sur le bouton avec mes variables récupérées de ma page précédente" + Paiement vide
- puis lorsque je clique sur le bouton je reçois le un autre mail sans mes variables précédentes mais cette fois-ci Paiement est rempli.
Si je mets action ="mon url destination" : je reçois j'ai le même fonctionnement sans le 2ème mail car je suis redirigée sur la page de destination.
Donc, j'ai l'impression que la fonction isset n'est pas prise en compte ? ou le script du mail intercalé différemment ? J'ai beau essayé pleins de solutions, je tourne en rond....
Malheureusement, cela ne change pas grand chose... Je m'explique :
Si je mets action ="" (comme toi) :
- je reçois un premier mail MAIS AVANT d'avoir cliqué sur le bouton avec mes variables récupérées de ma page précédente" + Paiement vide
- puis lorsque je clique sur le bouton je reçois le un autre mail sans mes variables précédentes mais cette fois-ci Paiement est rempli.
Si je mets action ="mon url destination" : je reçois j'ai le même fonctionnement sans le 2ème mail car je suis redirigée sur la page de destination.
Donc, j'ai l'impression que la fonction isset n'est pas prise en compte ? ou le script du mail intercalé différemment ? J'ai beau essayé pleins de solutions, je tourne en rond....
Merci pour ton aide.
Au sujet du formulaire sur 2 pages, c'est déjà ce que j'ai fait : j'ai ma page commande, puis ma page confirmation avec le choix du paiement où je récupère toutes les variables de la page commande.
Ce qu'il me manquait, c'est de les rajouter dans les 2 formulaires du choix du paiement. C'est fait ! Plutôt que de les répéter 3 fois, j'ai fait par un include.
cela s'explique car ta fonction mail(....) se déclenche dès l'exécution de ta 2 ième page
Justement je pensais que le fait d'avoir ajouté un isset ne déclenchais le mail que lorsque le bouton était cliqué ? C'était peut-être pour cela les accolades du départ ?
En voyant ton "ou", je pense que c'est plus simple comme cela :
if(isset($_POST['paiement_cheque']) OR isset($_POST['paiement_cb'])) <----je n'ai mis que ces conditions
//on ne va faire le mail que si le choix du paiement a été fait
{
//Récupération des variables du formulaire par méthode POST
$QuantiteT800 = $_POST['QuantiteT800'];
....
$Paiement = $_POST['Paiement']; <---j'ai ajouté la variable
....
}
Verdict : ça fonctionne !
Mais uniquement avec un action="" pour les formulaires !
Le problème qui reste vient du fait que je veux rediriger vers une page différente :
-vers la page d'accueil pour le paiement par chèque
-vers la page de paiement sécurisé pour le paiement CB
Donc si je mets dans mon formulaire un action="pagex", je suis bien redirigé vers la page, mais le script d'envoi de mail n'a pas le temps de s'exécuter !!! Enfin c'est je que je pense...
Alors est-ce qu'il existerait une fonction php à ajouter à la fin de mon script d'envoi de mail qui permettrait de rediriger vers une page x ou y selon la condition ?
Je n'ai pas trouvé grand chose pour l'instant à part des fonctions header ou meta, qui ne fonctionnent pas dans le cas présent car les entêtes sont déjà envoyées...
Au sujet du formulaire sur 2 pages, c'est déjà ce que j'ai fait : j'ai ma page commande, puis ma page confirmation avec le choix du paiement où je récupère toutes les variables de la page commande.
Ce qu'il me manquait, c'est de les rajouter dans les 2 formulaires du choix du paiement. C'est fait ! Plutôt que de les répéter 3 fois, j'ai fait par un include.
cela s'explique car ta fonction mail(....) se déclenche dès l'exécution de ta 2 ième page
Justement je pensais que le fait d'avoir ajouté un isset ne déclenchais le mail que lorsque le bouton était cliqué ? C'était peut-être pour cela les accolades du départ ?
En voyant ton "ou", je pense que c'est plus simple comme cela :
if(isset($_POST['paiement_cheque']) OR isset($_POST['paiement_cb'])) <----je n'ai mis que ces conditions
//on ne va faire le mail que si le choix du paiement a été fait
{
//Récupération des variables du formulaire par méthode POST
$QuantiteT800 = $_POST['QuantiteT800'];
....
$Paiement = $_POST['Paiement']; <---j'ai ajouté la variable
....
}
Verdict : ça fonctionne !
Mais uniquement avec un action="" pour les formulaires !
Le problème qui reste vient du fait que je veux rediriger vers une page différente :
-vers la page d'accueil pour le paiement par chèque
-vers la page de paiement sécurisé pour le paiement CB
Donc si je mets dans mon formulaire un action="pagex", je suis bien redirigé vers la page, mais le script d'envoi de mail n'a pas le temps de s'exécuter !!! Enfin c'est je que je pense...
Alors est-ce qu'il existerait une fonction php à ajouter à la fin de mon script d'envoi de mail qui permettrait de rediriger vers une page x ou y selon la condition ?
Je n'ai pas trouvé grand chose pour l'instant à part des fonctions header ou meta, qui ne fonctionnent pas dans le cas présent car les entêtes sont déjà envoyées...