Formulaire php envoyer uniquement les données complétées
AlexandraBr
Messages postés
13
Date d'inscription
Statut
Membre
Dernière intervention
-
VlkPr3s Messages postés 235 Date d'inscription Statut Membre Dernière intervention -
VlkPr3s Messages postés 235 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
J'ai un formulaire de commande avec des champs obligatoire ( nom, adresse,...) et puis des champs non obligatoire ( quantité de produit souhaite, zone libre,...)
J'envoie le tout par mail, tout fonctionne mais j'aimerais rendre la réception plus lisible et n'afficher que les champs complète.
Pour le moment, le mail reçu reprend tout les champs même les champs vide.
J'aimerais que dans le mail reçu ne s'affiche que les champs complète.... Je suppose que ça ne doit pas être compliqué mais je coince....
Merci pour votre aide
J'ai un formulaire de commande avec des champs obligatoire ( nom, adresse,...) et puis des champs non obligatoire ( quantité de produit souhaite, zone libre,...)
J'envoie le tout par mail, tout fonctionne mais j'aimerais rendre la réception plus lisible et n'afficher que les champs complète.
Pour le moment, le mail reçu reprend tout les champs même les champs vide.
J'aimerais que dans le mail reçu ne s'affiche que les champs complète.... Je suppose que ça ne doit pas être compliqué mais je coince....
Merci pour votre aide
A voir également:
- Formulaire php envoyer uniquement les données complétées
- Whatsapp formulaire opposition - Guide
- Fuite données maif - Guide
- Formulaire de réclamation facebook - Guide
- Supprimer les données de navigation - Guide
- Formulaire de reclamation instagram - Guide
4 réponses
Bonjour,
Difficile de vous répondre sans informations complémentaires. Je dirais qu'il suffit de tester chaque variable avec l'envoi du mail. Mais ne sachant pas comment est envoyé le mail ...
Cordialement
Difficile de vous répondre sans informations complémentaires. Je dirais qu'il suffit de tester chaque variable avec l'envoi du mail. Mais ne sachant pas comment est envoyé le mail ...
Cordialement
Bonjour,
Comme le dit Thorak, on manque d'informations....
Il faudrait que tu nous postes ici le code qui te permet de générer ton mail.
PS: Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Comme le dit Thorak, on manque d'informations....
Il faudrait que tu nous postes ici le code qui te permet de générer ton mail.
PS: Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
je vous mets un morceau de mon formulaire simplifié, je vous note beaucoup moins de champs que l'original...
Mais je pensais que je devais paramètrer cela dans la page qui génère le mail, voilà déjà pourquoi je coince...
Et ci-dessous le code php du fichier "cible2.php", je pensais que c'était dans ce fichier que je devais régler mon problème mais apparemment non...
Voilà...
EDIT : Ajout du langage dans les balises de code.
Mais je pensais que je devais paramètrer cela dans la page qui génère le mail, voilà déjà pourquoi je coince...
<script type="text/javascript"> //<![CDATA[ function valider(){ // On reteste le mail et le numéro de téléphone if(!(VerifMail() !== false && valider_numero() !== false)){return false} // Teste les champs qui ont la classe "nombre" dans le bloc ayant l'id "formulaire_commande" var champs = document.getElementById('formulaire_commande').getElementsByClassName('nombre'); var verif_nombre = ""; var str; var label; for (var i=0; i < champs.length; i++) { str = champs[i].value; if (isNaN(str)) { // récupère le texte du label (qui est le parent) et concatène à verif_nombre label = champs[i].parentNode.textContent; verif_nombre += "\n- "+label; } } if(verif_nombre != "") { alert("le(s) champ(s): "+verif_nombre+"\n nécessite(nt) un nombre"); return false; } else { return true; } // si la valeur du champ prenom est non vide if(document.formulaire_commande.nom.value != "" && document.formulaire_commande.rue.value != "" && document.formulaire_commande.code_postal.value != "" && document.formulaire_commande.ville.value != "" && document.formulaire_commande.telephone.value != "" && document.formulaire_commande.mail.value != "" && document.formulaire_commande.date_enlevement.value != "" ) { // les données sont ok, on peut envoyer le formulaire return true; } else { // sinon on affiche un message alert("Les champs avec une * sont obligatoire"); // et on indique de ne pas envoyer le formulaire return false; } } function VerifMail() { var regex = /^[a-z0-9._-]+@[a-z0-9._-]+\.[a-z]{2,6}$/; if(!regex.test(document.formulaire_commande.mail.value)) { alert("Veuillez entrez une adresse mail correcte") return false; } } function valider_numero() { var nombre = document.formulaire_commande.telephone.value; var chiffres = new String(nombre); // Enlever tous les charactères sauf les chiffres chiffres = chiffres.replace(/[^0-9]/g, ''); // Nombre de chiffres compteur = chiffres.length; if ((compteur<9) || (compteur>10) ) { alert("Veuillez saisir un numéro de téléphone valide"); return false; } } </script> //il y a du code mais sans intérêt pour mon problème <form method="post" action="cible2.php" onsubmit="return valider()" id="formulaire_commande" name="formulaire_commande"> <p><label>Nom : <input type="text" name="nom" class="textfield" size="50" required="required"/></label>* </p> <p><label>Rue : <input type="text" name="rue" class="textfield" size="50" required="required"/></label>* </p> <p><label>Code postal : <input type="text" name="code_postal" class="textfield nombre" size="10" required="required"/></label>* </p> <p><label>Ville : <input type="text" name="ville" class="textfield" size="50" required="required"/></label>* </p> <p> <label>GSM : <input type="text" name="telephone" class="textfield nombre" size="30" onblur="valider_numero();" required="required" /></label>* <br /> <p><label>Adresse mail : <input type="text" name="mail" class="textfield" onchange="VerifMail();" required="required"/></label>*</p> <p> <label>Jus de pomme <input type="text" name="jus_pomme_litre" class="nombre" size="5" /> par 1 litre</label></p> <p><label>Jus de pomme input type="text" name="jus_pomme_pushup" class="nombre" size="5" /> par 3 litres push up</label></p> <p> <label>Jus de pommes-poires <input type="text" name="jus_pomme_poire_litre" class="nombre" size="5" /> par 1 litre</label></p> <p> <label>Jus de pommes-poires<input type="text" name="jus_pomme_poire_pushup" class="nombre" size="5" /> par 3 litres push up</label></p> <p><label>Jus de pomme-cerise <input type="text" name="jus_pomme_cerise_litre" class="nombre" size="5" /> par 1 litre</label></p> <p><label>Jus de pomme-cerise <input type="text" name="jus_pomme_cerise_cinq_litre" class="nombre" size="5" /> par 5 litre</label></p> <p id="buttons"> <input type="submit" value="Envoyer" /> <input type="reset" value="Recommencer" /> </p> </p> </form>
Et ci-dessous le code php du fichier "cible2.php", je pensais que c'était dans ce fichier que je devais régler mon problème mais apparemment non...
<?php $msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis :<br/><br/>"; $msg_ok = "Votre commande est bien transmise. <br/> Un email de confirmation vous sera envoyé.<br/><br/><br/>"; $message = $msg_erreur; $destinataire ="alexandra.brouwers@gmail.com"; define('MAIL_SUJET','Commande venant du site Ferme de la Waide'); // vérification des champs if (empty($_POST['nom'])) $message .= "Votre nom<br/>"; if (empty($_POST['rue'])) $message .= "Votre rue<br/>"; if (empty($_POST['code_postal'])) $message .= "Votre code postal<br/>"; if (empty($_POST['ville'])) $message .= "Votre ville<br/>"; if (empty($_POST['telephone'])) $message .= "Votre numéro de téléphone<br/>"; if (empty($_POST['mail'])) $message .= "Votre adresse e-mail<br/>"; if (empty($_POST['date_enlevement'])) $message .= "Veuillez entrer une date d'enlèvement<br/>"; // si un champ est vide, on affiche le message d'erreur et on stoppe le script if (strlen($message) > strlen($msg_erreur)) { echo $message; die(); } // sinon c'est ok => on continue foreach($_POST as $index => $valeur) { $$index = stripslashes(trim($valeur)); } //Préparation de l'entête du mail: $mail_entete = "MIME-Version: 1.0\r\n"; $mail_entete .= "From: {$_POST['nom']} " ."<{$_POST['mail']}>\r\n"; $mail_entete .= 'Reply-To: '.$_POST['mail']."\r\n"; $mail_entete .= 'Cc: '.$_POST['mail']."\n"; $mail_entete .= 'Content-Type: text/html; charset="iso-8859-1"'; $mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n"; $mail_entete .= 'X-Mailer:PHP/' . phpversion()."\r\n"; // préparation du corps du mail $mail_corps = "<p>Message de : $nom\n<br>"; $mail_corps .= "Adresse : $rue, $code_postal $ville, $pays\n<br>"; $mail_corps .= "Telephone : $telephone \n<br>"; $mail_corps .= "Adresse mail : $mail \n<br>"; $mail_corps .= "<p>Commande de produits locaux \n\n</p>"; $mail_corps .= "<p>Jus de pomme : <strong>$jus_pomme_litre</strong> par 1 litre - <strong>$jus_pomme_pushup</strong> par 3 litre push up \n<br>"; $mail_corps .= "Jus de pommes-poires : <strong>$jus_pomme_poire_litre</strong> par 1 litre - <strong>$jus_pomme_poire_pushup</strong> par 3 litre push up \n<br>"; $mail_corps .= "Jus de pomme-cerise : <strong>$jus_pomme_cerise_litre</strong> par 1 litre - <strong>$jus_pomme_cerise_5litre</strong> par 5 litre \n<br>"; // envoi du mail if (mail($destinataire,MAIL_SUJET,$mail_corps,$mail_entete)) { //Le mail est bien expédié echo $msg_ok; } else { //Le mail n'a pas été expédié echo "Une erreur est survenue lors de l'envoi du formulaire par email"; } ?>
Voilà...
EDIT : Ajout du langage dans les balises de code.
effectivement tout va se jouer dans cible2.php.
Je vois bien la partie des champs obligatoires (zone // vérification des champs) mais je ne vois pas où sont les autres champs optionnels (qté, texte libre...) ? J'ai un peu de mal a comprendre le contenu de la variable $mail_corps. ($jus_pomme_poire_litre...)
Je vois bien la partie des champs obligatoires (zone // vérification des champs) mais je ne vois pas où sont les autres champs optionnels (qté, texte libre...) ? J'ai un peu de mal a comprendre le contenu de la variable $mail_corps. ($jus_pomme_poire_litre...)
en fait, les gens complètent la quantité de bouteille de jus qu'ils veulent et ce sont ces infos qui doivent être envoyée par mail. Mais si ce n'est pas compléter, ce serait bien que l'intitulé ne s'affiche...
Je n'ai pas mis tout le formulaire, juste quelque champs pour montrer le principe de mon code.
Si ce n'est pas correct, dites le moi... Ca fonctionne mais il y a peut être de meilleure méthode, je ne fait pas souvent de php et c'est fort abstrait pour moi
Merci pour votre aide
Je n'ai pas mis tout le formulaire, juste quelque champs pour montrer le principe de mon code.
Si ce n'est pas correct, dites le moi... Ca fonctionne mais il y a peut être de meilleure méthode, je ne fait pas souvent de php et c'est fort abstrait pour moi
Merci pour votre aide
Pourquoi tu utilises pas la méthode $_GET ou $_POST ainsi tu sais si le champ est vide en le testant
bien à toi ;)
if(!empty($_POST['q']) )) // si le champ est vide
{
$_POST['Login'] = htmlentities($_POST['Login'],ENT_QUOTES);
}
else
{
$_POST['Login'] = htmlentities($_POST['Login'],ENT_QUOTES);
$_POST['q'] = htmlentities($_POST['q'],ENT_QUOTES);
}
bien à toi ;)