Page 1 sur 1
Faire apparaître dans un formulaire de contact par mail
Posté : 07 mai 2019, 11:42
par wagscd
Bonjour à toutes et à tous,
Suite à un précédent sujet et grâce à votre aide, j'ai pu avancer sur la mise en page de mon formulaire de contact envoyé par mail.
Dans ce formulaire, il y a des cases à cocher qui sont traitées et qui affichent False ou True.
2 questions....
- Est il possible de mettre autre chose que False ou True ?
- Est il possible que lorsque c'est False, rien ne s'affiche, ni la valeur $caseàcocher ni le texte qui précède
Mon code est basique dans le traitement du formulaire d'envoi du mail
Le code du fichier .JS
Code : Tout sélectionner
var caseàcocher= document.getElementById('caseàcocher').checked;
Merci d'avance pour vos aides et pistes.
Bonne journée
Re: Faire apparaître dans un formulaire de contact par mail
Posté : 07 mai 2019, 12:00
par Spols
quelque chose comme ceci
<?php
if ($caseàcocher) {
echo '<p>texte '. 'texte_si_True' . '</p>';
}
mais avec si peu de code difficile d'être plus précis.
Re: Faire apparaître dans un formulaire de contact par mail
Posté : 07 mai 2019, 13:56
par wagscd
Bonjour Spols
Merci pour cette explication, je vais tester.
Re: Faire apparaître dans un formulaire de contact par mail
Posté : 07 mai 2019, 14:19
par wagscd
Test effectué sans succès.
Un exemple du code php
Code : Tout sélectionner
$body = "
<H2>Formulaire de contact</H2>
<br>
<p>Texte</p>
<li>Paiement mensuel $paiemensuel </li>
<li>Paiement annuel $paieannuel </li>
Je voudrais que l'un ou d'autre s'affiche en fonction de la case cochée ou non dans le formulaire.
Merci
Re: Faire apparaître dans un formulaire de contact par mail
Posté : 07 mai 2019, 15:43
par Spols
$body = "
<H2>Formulaire de contact</H2>
<br>
<p>Texte</p>
";
if ($paiemensuel) $body .= " <li>Paiement mensuel</li>";
elseif ($paieannuel) $body .= " <li>Paiement annuel</li>";
$body .= "[RESTE DU TEXTE SI IL Y A]";
en utilisant .= plutot que = dès la deuxième fois je dis à php de rajouter du texte à la valeur actuelle de la variable.
comme si j'avais mis $body = $body . "texte en plus";
cela me permet de faire 2 conditions if et elseif qui ajouteront le texte idoine si la valeur correspond;
si besoin, tu peux continuer a àjouter du texte en utilisant toujours .=
la toute première fois que tu utilise une variable, il ne faut pas utiliser le ;= au risque d'avoir une erreur de type NOTICE elle ne bloquera pas le code mais ce n'est jamais beau d'avoir une erreur.
PS les balises LI doivent être encadré par une balise UL et n'a de sens que si il y en a plusieurs sinon utilise une balise P
Re: Faire apparaître dans un formulaire de contact par mail
Posté : 07 mai 2019, 15:51
par wagscd
Re bonjour,
Je te remercie pour le code et surtout pour les explications qui me permettent de comprendre (et aussi de me rendre compte qu'il y a des choses que je retiens pas comme le fameux .=
Je vais tester cela tout à l'heure.
Le problème est que mon exemple est bien puisque j'en ai besoin

mais j'ai aussi une liste de plusieurs "options" dans ce formulaire.
Et qui dit options dit que je peux en avoir 0, 1 ou plusieurs, dont plusieurs lignes à afficher.
Est ce que je peux ajouter plusieurs elseif ?
Code : Tout sélectionner
<li>option 1</li>
<li>option 2</li>
<li>option 3</li>
<li>option 4</li>
Code : Tout sélectionner
if ($option1) $body .= " <li>Option1</li>";
elseif ($opton2) $body .= " <li>Option2</li>";
elseif ($opton3) $body .= " <li>Option3</li>";
elseif ($opton4) $body .= " <li>Option4</li>";
$body .= "[RESTE DU TEXTE SI IL Y A]";
J'ai pas testé, suis pas devant mon pc "travail"
Merci
Re: Faire apparaître dans un formulaire de contact par mail
Posté : 07 mai 2019, 15:56
par Spols
tu peux mettre autant de elseif qu'il te faut. mais si tu en as beaucoup, le mieux est encore de mettre le tout dans une boucle.
Re: Faire apparaître dans un formulaire de contact par mail
Posté : 07 mai 2019, 16:37
par wagscd
Merci Spols
Je teste tout ça d'ici ce soir ou demain.
La boucle, je vais étudier la chose

Re: Faire apparaître dans un formulaire de contact par mail
Posté : 07 mai 2019, 18:08
par wagscd
Test effectué mais toujours pas le bon résultat
Voici le code
Code : Tout sélectionner
<br>";
if ($paiemensuel) $body .= " <li>Paiement mensuel</li>";
elseif ($paieannuel) $body .= " <li>Paiement annuel</li>";
$body .= "
<li>Paiement mensuel $paiemensuel </li>
<li>Paiement annuel $paieannuel </li>
J'ai laissé dan la suite du code les 2 paiements pour voir le False et True pour bien vérifier mais ça fonctionne pas.
Que ce soit True ou False, c'est toujours Paiement mensuel qui s'affiche dans le mail.
Merci.
Re: Faire apparaître dans un formulaire de contact par mail
Posté : 08 mai 2019, 08:18
par Spols
montre nous plus de code, comment tes variables sont créer, affiche les avec var_dump pour être sur de leur contenu et de leur type. et montre nous aussi le contenu du mail correspondant au code.
Re: Faire apparaître dans un formulaire de contact par mail
Posté : 08 mai 2019, 10:59
par wagscd
Bonjour Spols,
Merci pour ton aide.
Variables dans le PHP
Code : Tout sélectionner
$paiemensuel = $_POST["paiemensuel"];
$paieannuel = $_POST["paieannuel"];
J'ai également ceci en JS
Code : Tout sélectionner
var paiemensuel = document.getElementById('paiemensuel').checked;
var paieannuel = document.getElementById('paieannuel').checked;
Le contenu du mail
Paiement mensuel
Paiement mensuel false
Paiement annuel true
ou
Paiement mensuel
Paiement mensuel true
Paiement annuel false
Concernant var_dump (désolé suis loin de tout comprendre), j'ai cru comprendre en lisant le manuel mais comment je l'applique.
J'ajoute dans mon code existant ?
Merci
PS : Je viens d'essayer en ajouter cette ligne (soyons fou

)
J'ai ceci comme message dans la page php qui confirme l'envoi du mail
string(5) "false" string(4) "true"
Re: Faire apparaître dans un formulaire de contact par mail
Posté : 08 mai 2019, 11:44
par Spols
parfait ceci indique que $paieannuel et paiemensuel ne sont pas des booléen mais des chaines de caractère. sans doute du à ton traitement javascript.
<br>";
if ($paiemensuel == 'true') $body .= " <li>Paiement mensuel</li>";
elseif ($paieannuel == 'true') $body .= " <li>Paiement annuel</li>";
$body .= "
<li>Paiement mensuel $paiemensuel </li>
<li>Paiement annuel $paieannuel </li>
ce code ci devrait mieux fonctionner. je vérifie la valeur des variable en les comparant à la chaine 'true' plutot que de les considéré comme des booléens
Re: Faire apparaître dans un formulaire de contact par mail
Posté : 08 mai 2019, 12:04
par wagscd
Merci Spols, ça fonctionne.
Donc si je résume le principe.
1 - Faire un var_dump pour savoir à quoi on a affaire comme données.
2 - En fonction, (ici chaines de caractère), adapter le code.
Merci, vais pouvoir peaufiner mon mail

Re: [RESOLU] Faire apparaître dans un formulaire de contact par mail
Posté : 08 mai 2019, 14:45
par Spols
exactement