Variable manquante dans un envoi mail php

Résolu/Fermé
houba_houbi Messages postés 119 Date d'inscription vendredi 23 janvier 2009 Statut Membre Dernière intervention 3 juin 2010 - 19 juin 2009 à 18:33
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 23 juin 2009 à 11:30
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....)
A voir également:

10 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
19 juin 2009 à 18:44
normal tu postes un formulaire sans rien dedans

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
?> 
1
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
21 juin 2009 à 10:14
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']

<form ....
...
<input name="cheque" type="submit" id="cheque" value="Je choisis le paiement par ch&egrave;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&egrave;que bancaire";
}
if(isset($_POST['cb']) AND $_POST['cb']=="cb")
{
$Paiement = "carte bancaire";
} 
1
houba_houbi Messages postés 119 Date d'inscription vendredi 23 janvier 2009 Statut Membre Dernière intervention 3 juin 2010 16
22 juin 2009 à 11:07
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 ?
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
22 juin 2009 à 17:58
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

<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
1
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
23 juin 2009 à 10:09
Je vois une solution

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");
		}
	}
}
?> 
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
houba_houbi Messages postés 119 Date d'inscription vendredi 23 janvier 2009 Statut Membre Dernière intervention 3 juin 2010 16
20 juin 2009 à 12:19
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
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
22 juin 2009 à 13:43
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);

?> 
0
houba_houbi Messages postés 119 Date d'inscription vendredi 23 janvier 2009 Statut Membre Dernière intervention 3 juin 2010 16
22 juin 2009 à 16:07
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....
0
houba_houbi Messages postés 119 Date d'inscription vendredi 23 janvier 2009 Statut Membre Dernière intervention 3 juin 2010 16
22 juin 2009 à 19:53
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...
0
houba_houbi Messages postés 119 Date d'inscription vendredi 23 janvier 2009 Statut Membre Dernière intervention 3 juin 2010 16
23 juin 2009 à 11:26
Bonjour,
Génial !!! Cela fonctionne impeccable !!

Je te remercie pour tout le temps passé..... ta patience... et ta pédagogie, car tes explications sont très claires avec des annotations dans le code.
Un très grand merci !!!
Bonne continuation
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
23 juin 2009 à 11:30
Ok
Ce fut avec plaisir

Mets Résolu
0