Formulaire php envoyer uniquement les données complétées
Fermé
AlexandraBr
Messages postés
13
Date d'inscription
mercredi 30 juillet 2014
Statut
Membre
Dernière intervention
25 mars 2015
-
19 mars 2015 à 10:50
VlkPr3s Messages postés 235 Date d'inscription vendredi 30 mai 2014 Statut Membre Dernière intervention 27 juin 2016 - 25 mars 2015 à 13:21
VlkPr3s Messages postés 235 Date d'inscription vendredi 30 mai 2014 Statut Membre Dernière intervention 27 juin 2016 - 25 mars 2015 à 13:21
A voir également:
- Formulaire php envoyer uniquement les données complétées
- Easy php - Télécharger - Divers Web & Internet
- Effacer les données de navigation - Guide
- Formulaire de réclamation facebook - Guide
- Comment sauvegarder toutes les données de mon téléphone - Guide
- Reinstaller windows sans perte de données - Guide
4 réponses
Thorak83
Messages postés
1051
Date d'inscription
jeudi 20 juin 2013
Statut
Membre
Dernière intervention
22 décembre 2017
156
19 mars 2015 à 11:06
19 mars 2015 à 11:06
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
jordane45
Messages postés
38238
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 septembre 2024
4 689
19 mars 2015 à 11:18
19 mars 2015 à 11:18
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
AlexandraBr
Messages postés
13
Date d'inscription
mercredi 30 juillet 2014
Statut
Membre
Dernière intervention
25 mars 2015
Modifié par jordane45 le 20/03/2015 à 11:21
Modifié par jordane45 le 20/03/2015 à 11:21
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.
Thorak83
Messages postés
1051
Date d'inscription
jeudi 20 juin 2013
Statut
Membre
Dernière intervention
22 décembre 2017
156
Modifié par Thorak83 le 19/03/2015 à 12:00
Modifié par Thorak83 le 19/03/2015 à 12:00
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...)
AlexandraBr
Messages postés
13
Date d'inscription
mercredi 30 juillet 2014
Statut
Membre
Dernière intervention
25 mars 2015
23 mars 2015 à 20:50
23 mars 2015 à 20:50
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
VlkPr3s
Messages postés
235
Date d'inscription
vendredi 30 mai 2014
Statut
Membre
Dernière intervention
27 juin 2016
130
20 mars 2015 à 11:00
20 mars 2015 à 11:00
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 ;)
AlexandraBr
Messages postés
13
Date d'inscription
mercredi 30 juillet 2014
Statut
Membre
Dernière intervention
25 mars 2015
23 mars 2015 à 20:51
23 mars 2015 à 20:51
Et si le champs est vide, il ne s'affichera pas dans le mail ?
VlkPr3s
Messages postés
235
Date d'inscription
vendredi 30 mai 2014
Statut
Membre
Dernière intervention
27 juin 2016
130
>
AlexandraBr
Messages postés
13
Date d'inscription
mercredi 30 juillet 2014
Statut
Membre
Dernière intervention
25 mars 2015
24 mars 2015 à 11:15
24 mars 2015 à 11:15
Tu met une condition pour qu'il ne s'affiche pas dans le mail donc en gros tu ne récupère pas le post manquant
AlexandraBr
Messages postés
13
Date d'inscription
mercredi 30 juillet 2014
Statut
Membre
Dernière intervention
25 mars 2015
24 mars 2015 à 20:13
24 mars 2015 à 20:13
Dans le bout de code que tu me note, 'login' correspond au nom du champs du formulaire ?
VlkPr3s
Messages postés
235
Date d'inscription
vendredi 30 mai 2014
Statut
Membre
Dernière intervention
27 juin 2016
130
>
AlexandraBr
Messages postés
13
Date d'inscription
mercredi 30 juillet 2014
Statut
Membre
Dernière intervention
25 mars 2015
25 mars 2015 à 11:42
25 mars 2015 à 11:42
oui
AlexandraBr
Messages postés
13
Date d'inscription
mercredi 30 juillet 2014
Statut
Membre
Dernière intervention
25 mars 2015
25 mars 2015 à 13:07
25 mars 2015 à 13:07
Par hasard, il n'y a pas une fonction qui évite de le faire pour chaque champs ?
Merci pour ton aide, je testerai ça ce soir... je mets ça dans le même fichier que mon formulaire, c'est bien ça ?
Merci pour ton aide, je testerai ça ce soir... je mets ça dans le même fichier que mon formulaire, c'est bien ça ?