Formulaire de contact

Eléphanteau du PHP | 17 Messages

29 janv. 2020, 11:32

Bonjour je suis bénévole dans une association de protection animal

j'ai un petit soucis aujourd’hui nous devons envoyé des fichiers pdf au futur adoptant ,Famille d’accueil pour qu'il les imprimes remplisse est sois nous les revois par la poste ou scanne et revois par mail

j'aurai aimé facilité la démarche avec un formulaire

j'en ai trouvé un qui me plais beaucoup mais la base a une erreur et je ne trouve pas la solution


Pour moi vue que dans le pdf il a beaucoup de réponse a choix multiple la fonction <input type="checkbox" serai plus simple a mettre en place

Donc je vient a vous pour me dire:

si il serai fonctionnel
si après validation je pourra redirigé la page vers une autre avec texte: nous avons bien reçus ......


avant de me lancé a refaire les 3 pages de question
le fichier :
Page : contact.php

Code : Tout sélectionner

<?php // ----------------- // FONCTIONS utiles /* cette fonction sert à nettoyer et enregistrer un texte */ function Rec($text) { $text = trim($text); // delete white spaces after & before text $text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well return $text; }; /* Cette fonction sert à vérifier la syntaxe d'un email */ function IsEmail($email) { $test = filter_var( $email, FILTER_VALIDATE_EMAIL ); return (!empty($test)); }; /* Cette fonction sert à vérifier la syntaxe d'un numéro de téléphone */ function IsTel($tel) { $pattern = "/^[+]?[0-9. \/]{6,20}$/"; // tél de la forme (6 à 20 caractères): +33 1 23 45 67 89 ou 0123456789 ou 01 23 45 67 89 ou 01.23.45.67.89 ou 01/23/45/67/89... return (preg_match($pattern,$tel)); // true ou false }; // ----------------- // INITIALISATION ou récupération des données // formulaire envoyé, on récupère tous les champs. $organisateur = (isset($_POST['organisateur'])) ? Rec($_POST['organisateur']) : ''; $civilite = (isset($_POST['civilite'])) ? Rec($_POST['civilite']) : ''; $nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : ''; $email = (isset($_POST['email'])) ? Rec($_POST['email']) : ''; $tel = (isset($_POST['tel'])) ? Rec($_POST['tel']) : ''; $horaires = (isset($_POST['horaires'])) ? Rec($_POST['horaires']) : ''; $cp = (isset($_POST['cp'])) ? Rec($_POST['cp']) : ''; $ville = (isset($_POST['ville'])) ? Rec($_POST['ville']) : ''; $option = (isset($_POST['option'])) ? Rec($_POST['option']) : ''; $precision = (isset($_POST['precision'])) ? Rec($_POST['precision']) : ''; // ----------------- // TRAITEMENT du formulaire (INCLUS) $valid_form = 0; // on teste si le formulaire a été soumis if( isset($_POST['submit']) ) { include(__DIR__.'/send_email.php'); // (TRAITEMENT INCLUS) } ?> <!doctype html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>QUESTIONNAIRE POUR ADOPTION</title> <link rel="stylesheet" href="RV-2017.css"/> <script src="/js/jquery.min.js"></script> <script src="/js/responsiveslides.min.js"></script> <script> // You can also use "$(window).load(function() {" $(function () { // Slideshow 4 $("#slider4").responsiveSlides({ auto: true, pager: false, nav: true, speed: 500, namespace: "callbacks", before: function () { $('.events').append("<li>before event fired.</li>"); }, after: function () { $('.events').append("<li>after event fired.</li>"); } }); }); </script> </head> <body> <!-- Début corps de la page--> <!-- Entête et menu --> <div class="row"> <div class="col"> <header> <a href=""><img src="" alt="" class="style-logo" title=""/></a> <div class="base-line"><h2>QUESTIONNAIRE POUR ADOPTION</h2> </div> </header> </div> </div> <!-- fin Entête et menu --> <h3>Pour avoir des renseignements merci de remplir TOUS les champs : </h3> <h4 align="center">Si dans les 48 heures après l'envoi du formulaire vous n'avez pas de nos nouvelles<br /> N'hésitez pas à nous contacter par tel au </h4> <p align="center">.</p> <!-- début formulaire --> <section> <div class="row"> <div class="col col-md-one-half col-lg-one-third"> <form method="POST" target= "" action=""> <div class="container"> <div class="row"> <div class="col-26"> <label for="nom">Nom et Prénom*</label> </div> <div class="col-74"> <input type="text" id="nom" name="nom" placeholder="Vos nom et prénom" required /><br /> </div> </div> <div class="row"> <div class="col-26"> <label for="civilite">Civilité*</label> </div> <div class="col-74"> <input type="radio" name="civilite" value="madame" id="madame" /> <label for="madame">Madame</label> <input type="radio" name="civilite" value="monsieur" id="monsieur" /> <label for="monsieur">Monsieur</label> <br /> </div> </div> <div class="row"> <div class="col-26"> <label for="organisateur">Organisateur*</label> </div> <div class="col-74"> <input type="text" id="organisateur" name="organisateur" placeholder="Asso, CE, Comité des fêtes, Centre de Loisirs, APE, Particulier... " required /><br /> </div> </div> <div class="row"> <div class="col-26"> <label for="cp">Code postal*</label> </div> <div class="col-74"> <input type="text" id="cp" name="cp" placeholder="Votre code postal" required /></div> <div class="row"> <div class="col-26"> <label for="ville"> Ville*</label> </div> <div class="col-74"> <input type="text" id="ville" name="ville" placeholder="Votre ville" required /> <br /> </div> </div> <div class="row"> <div class="col-26"> <label for="email">Email*</label> </div> <div class="col-74"> <input type="email" id="email" name="email" placeholder="Votre email" required /><br /> </div> </div> <div class="row"> <div class="col-26"> <label for="tel">Téléphone*</label> </div> <div class="col-74"> <input type="tel" id="tel" name="tel" placeholder="Votre téléphone" required /><br /> </div> </div> <div class="row"> <div class="col-26"> <label for="horaires">Vos horaires</label> </div> <div class="col-74"> <input type="radio" name="horaires" value="hr" id="hr" /> <label for="hr">Heures de repas</label> <input type="radio" name="horaires" value="hb" id="hb" /> <label for="hb">Heures de bureau</label> </div> </div> </div> </div> </div> <div class="col col-md-one-half col-lg-two-third"> <div class="container"> <div class="row"> <div class="col-26"> <label for="projet">Votre Projet*</label> </div> <div class="col-74"> <input type="checkbox" name="option" id="spectacle" /> <label for="spectacle">Un spectacle de clowns</label><br /> <input type="checkbox" name="option" id="fete-familliale"/> <label for="fete-familliale">Une fête familiale</label><br /> <input type="checkbox" name="option" id="animation-commerciale" /> <label for="animation-commerciale">Une animation commerciale</label><br /> <input type="checkbox" name="option" id="autre" /> <label for="autre">Autre événement</label><br /> </div> </div> <div class="row"> <div class="col-26"> <label for="precision">Précisions</label> </div> <div class="col-74"> <textarea id="precision" name="precision" placeholder="" style="height:250px" required></textarea> </div> </div> <div class="row"> <br /><br /><input type="submit" name="submit" value="Valider" required /> </div> </div> </div> </form> <!-- fin du formulaire --> </section> </div> </div></body> </html>
Page : send_email.php

Code : Tout sélectionner

<?php // TRAITEMENT du FORMULAIRE // on teste si le formulaire a été soumis if (isset($_POST['submit'])) { /* ************************************************* 1- CONFIGURATION du fichier ************************************************* */ // destinataire : NOUS ! $destinataire = "******@gmail.com"; // Message de confirmation du mail $message_envoye = "<h1>MERCI !</h1> <p>&nbsp;</p> <h2>Votre formulaire a bien &eacute;t&eacute; envoy&eacute; !</h2> <p>&nbsp;</p> <h3> </h3>"; // Message de non envoi du mail $message_non_envoye = "D&eacute;sol&eacute;es l'envoi du mail a &eacute;chou&eacute;, veuillez r&eacute;essayer SVP."; // Messages d'erreur du formulaire $msg_formulaire_invalide = "Il y a une erreur dans votre formulaire :<br />"; /* ************************************************* 2- GESTION d'ERREUR ************************************************* */ // var_dump( $_POST ); // en TEST if ( empty($organisateur) || empty($civilite) || empty($nom) || empty($email) || empty($tel) || empty($horaires) || empty($CP) || empty($ville) || empty($option) || empty($precision) ){ $valid_form = 2; $msg_formulaire_invalide .= '- Remplissez tous les champs obligatoires, merci.<br />'; } // Vérifie la validité de l'email if( !empty($email) && !IsEmail($email) ) { $valid_form = 2; $msg_formulaire_invalide .= '- Email invalide<br />'; } // Vérifie la validité du tel if( !empty($tel) && !IsTel($tel) ) { $valid_form = 2; $msg_formulaire_invalide .= '- Numéro de téléphone invalide<br />'; } /* ************************************************* 3- ENVOI : on génère puis envoie le mail ************************************************* */ // OK ? ENVOI if ( $valid_form == 1 ) // si PAS d'erreur { // Objet du mail // $objet = 'demande renseignements'; // Contenu du message // $msg = 'Bonjour,'."\r\n\r\n"; $msg .= 'cette demande de renseignements nous arrive depuis le QUESTIONNAIRE POUR ADOPTION par '. $civilite.' '.$nom."\r\n\r\n"; $msg .= 'Pour une demande de renseignements pour :'."\r\n\r\n"; $msg .= $civilite." "; $msg .= $nom."\r\n\r\n"; $msg .= $email."\r\n\r\n"; $msg .= $organisateur."\r\n\r\n"; $msg .= $tel." aux "; $msg .= $horaires."\r\n\r\n"; $msg .= $cp." "; $msg .= $ville."\r\n\r\n"; $msg .= $option."\r\n\r\n"; $msg .= $precision."\r\n"; // En-têtes de l'e-mail // $headers = 'From: '.$nom.' <'.$email.'>' . "\r\n"; $headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n"; $headers .='Content-Transfer-Encoding: 8bit'; // echo '<pre>'.$msg.'</pre>'; // en TEST // Envoi du mail if (mail( $destinataire, $objet, $msg, $headers) ) { echo '<p>'.$message_envoye.'</p>'."\n"; } else { echo '<p>'.$message_non_envoye.'</p>'."\n"; }; } else { $valid_form = 2; // ERREUR // une des variables (ou plus) est vide ... $msg_formulaire_invalide .= '<br /><b>Merci de corriger.</b>'; echo '<p style="color:red;">'.$msg_formulaire_invalide.'</p>'."\n"; }; } // fin TRAITEMENT du formulaire ?>
quand j'envoie j'ai ce message la :

Il y a une erreur dans votre formulaire :
- Remplissez tous les champs obligatoires, merci.

Merci de corriger.

Merci d'avance
Cordialement
Modifié en dernier par dg-59 le 29 janv. 2020, 22:44, modifié 1 fois.

Mammouth du PHP | 1967 Messages

29 janv. 2020, 12:40

Habituellement les check box servent à valider ou non un champs

ce que tu cherche à faire ressemble plus à ders boutons radios (comme pour la civilité)
les bouton radios d'une même "famille" (name identique) ne peuvent prendre qu'une seule valeur.
si tu as besoin d'autoriser plus d'une valeur, tu peux utiliser des checkboxs mais alors chaque checkbox doit avoir un nom(name) différent
Eventuellement un nom avec crochet pour obtenir un tableau. Mais il me semble que des bouton radios serait plus adapté à ton cas.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 17 Messages

29 janv. 2020, 13:00

Bonjour oui dans mon formulaire il va y avoir des question avec réponse simple donc en <input type="radio" mais j'ai des questions ou plusieurs réponse seront possible "check box"
9 choix possible si je mais en "radio" sa me fait 9 fois oui ou non
ou je me trompe
la il a déjà une erreur de base dans le formulaire qui m’empêche de faire des essais

Mammouth du PHP | 1967 Messages

29 janv. 2020, 14:49

Oui alors ce sera bien des checkbox dont tu auras besoin mais elle doivent avoir un attribut name différent pour pouvoir récupèrer les valeurs individuellement.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 17 Messages

29 janv. 2020, 22:48

un peux comme ça ?

Code : Tout sélectionner

<label for="projet">Votre Projet*</label> </div> <div class="col-74"> <input type="checkbox" name="option" id="spectacle" /> <label for="spectacle">Un spectacle de clowns</label><br /> <input type="checkbox" name="option" id="fete-familliale"/> <label for="fete-familliale">Une fête familiale</label><br /> <input type="checkbox" name="option" id="animation-commerciale" /> <label for="animation-commerciale">Une animation commerciale</label><br /> <input type="checkbox" name="option" id="autre" /> <label for="autre">Autre événement</label><br />
ou on change le name="" aussi ?

j'aurai test comme ça

Code : Tout sélectionner

<input type="checkbox" name="spectacle" id="spectacle" />

Mammouth du PHP | 1967 Messages

30 janv. 2020, 08:55

c'est le name qui doit être différent

l'id doit aussi être unique mais pour une autre raison, chaque id doittoujours être unique sur une page HTML
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 17 Messages

30 janv. 2020, 13:09

ok merci je regarderai a ça quand sa ira j'ai toujours une erreur la

Eléphanteau du PHP | 17 Messages

31 janv. 2020, 21:45

Personne a une idée de l'erreur ??

dooki
Invité n'ayant pas de compte PHPfrance

02 févr. 2020, 01:52

if ( empty($organisateur)
|| empty($civilite)
|| empty($nom)
|| empty($email)
|| empty($tel)
|| empty($horaires)
|| empty($CP)
|| empty($ville)
|| empty($option)
|| empty($precision)

Tu peux essayer un var_dump de chaque variables ci dessus :
<?php var_dump ($civilite) ?>
<?php var_dump ($nom) ?>
...
Je pense qu'il doit y en avoir une qui est null

dooki
Invité n'ayant pas de compte PHPfrance

02 févr. 2020, 02:32

J'avais oublier le ";" aprés la parenthèse
<?php var_dump ($nom); ?>

string(2) "CE" string(6) "madame"
string(4) "okok" string(11) "[email protected]"
string(10) "0130464552" string(0) " :!: :!:
" string(3) "gui" string(2) "on" string(3) "okk"

Ducoup ta variable $cp ne renvoie rien,
Essaie de comprendre pourquoi la case Code Postale ne transmet pas l'info et tu seras tranquil

Eléphanteau du PHP | 17 Messages

02 févr. 2020, 10:34

Slt Merci du retour il y avais une erreur sur empty($CP) ces || empty($cp)

ces bien modifier mais il a toujours une erreur

contact.php

Code : Tout sélectionner

<?php // ----------------- // FONCTIONS utiles /* cette fonction sert à nettoyer et enregistrer un texte */ function Rec($text) { $text = trim($text); // delete white spaces after & before text $text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well return $text; }; /* Cette fonction sert à vérifier la syntaxe d'un email */ function IsEmail($email) { $test = filter_var( $email, FILTER_VALIDATE_EMAIL ); return (!empty($test)); }; /* Cette fonction sert à vérifier la syntaxe d'un numéro de téléphone */ function IsTel($tel) { $pattern = "/^[+]?[0-9. \/]{6,20}$/"; // tél de la forme (6 à 20 caractères): +33 1 23 45 67 89 ou 0123456789 ou 01 23 45 67 89 ou 01.23.45.67.89 ou 01/23/45/67/89... return (preg_match($pattern,$tel)); // true ou false }; // ----------------- // INITIALISATION ou récupération des données // formulaire envoyé, on récupère tous les champs. $organisateur = (isset($_POST['organisateur'])) ? Rec($_POST['organisateur']) : ''; $civilite = (isset($_POST['civilite'])) ? Rec($_POST['civilite']) : ''; $nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : ''; $email = (isset($_POST['email'])) ? Rec($_POST['email']) : ''; $tel = (isset($_POST['tel'])) ? Rec($_POST['tel']) : ''; $horaires = (isset($_POST['horaires'])) ? Rec($_POST['horaires']) : ''; $cp = (isset($_POST['cp'])) ? Rec($_POST['cp']) : ''; $ville = (isset($_POST['ville'])) ? Rec($_POST['ville']) : ''; $option = (isset($_POST['option'])) ? Rec($_POST['option']) : ''; $precision = (isset($_POST['precision'])) ? Rec($_POST['precision']) : ''; // ----------------- // TRAITEMENT du formulaire (INCLUS) $valid_form = 1; // on teste si le formulaire a été soumis if( isset($_POST['submit']) ) { include(__DIR__.'/send_email.php'); // (TRAITEMENT INCLUS) } ?> <!doctype html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>QUESTIONNAIRE POUR ADOPTION</title> <link rel="stylesheet" href="RV-2017.css"/> <script src="/js/jquery.min.js"></script> <script src="/js/responsiveslides.min.js"></script> <script> // You can also use "$(window).load(function() {" $(function () { // Slideshow 4 $("#slider4").responsiveSlides({ auto: true, pager: false, nav: true, speed: 500, namespace: "callbacks", before: function () { $('.events').append("<li>before event fired.</li>"); }, after: function () { $('.events').append("<li>after event fired.</li>"); } }); }); </script> </head> <body> <!-- Début corps de la page--> <!-- Entête et menu --> <div class="row"> <div class="col"> <header> <a href=""><img src="" alt="" class="style-logo" title=""/></a> <div class="base-line"><h2>QUESTIONNAIRE POUR ADOPTION</h2> </div> </header> </div> </div> <!-- fin Entête et menu --> <h3>Pour avoir des renseignements merci de remplir TOUS les champs : </h3> <h4 align="center">Si dans les 48 heures après l'envoi du formulaire vous n'avez pas de nos nouvelles<br /> N'hésitez pas à nous contacter par tel au </h4> <p align="center">.</p> <!-- début formulaire --> <section> <div class="row"> <div class="col col-md-one-half col-lg-one-third"> <form method="POST" target= "" action=""> <div class="container"> <div class="row"> <div class="col-26"> <label for="nom">Nom et Prénom*</label> </div> <div class="col-74"> <input type="text" id="nom" name="nom" placeholder="Vos nom et prénom" required /><br /> </div> </div> <div class="row"> <div class="col-26"> <label for="civilite">Civilité*</label> </div> <div class="col-74"> <input type="radio" name="civilite" value="madame" id="madame" /> <label for="madame">Madame</label> <input type="radio" name="civilite" value="monsieur" id="monsieur" /> <label for="monsieur">Monsieur</label> <br /> </div> </div> <div class="row"> <div class="col-26"> <label for="organisateur">Organisateur*</label> </div> <div class="col-74"> <input type="text" id="organisateur" name="organisateur" placeholder="Asso, CE, Comité des fêtes, Centre de Loisirs, APE, Particulier... " required /><br /> </div> </div> <div class="row"> <div class="col-26"> <label for="cp">Code postal*</label> </div> <div class="col-74"> <input type="text" id="cp" name="cp" placeholder="Votre code postal" required /></div> <div class="row"> <div class="col-26"> <label for="ville"> Ville*</label> </div> <div class="col-74"> <input type="text" id="ville" name="ville" placeholder="Votre ville" required /> <br /> </div> </div> <div class="row"> <div class="col-26"> <label for="email">Email*</label> </div> <div class="col-74"> <input type="email" id="email" name="email" placeholder="Votre email" required /><br /> </div> </div> <div class="row"> <div class="col-26"> <label for="tel">Téléphone*</label> </div> <div class="col-74"> <input type="tel" id="tel" name="tel" placeholder="Votre téléphone" required /><br /> </div> </div> <div class="row"> <div class="col-26"> <label for="horaires">Vos horaires</label> </div> <div class="col-74"> <input type="radio" name="horaires" value="hr" id="hr" /> <label for="hr">Heures de repas</label> <input type="radio" name="horaires" value="hb" id="hb" /> <label for="hb">Heures de bureau</label> </div> </div> </div> </div> </div> <div class="col col-md-one-half col-lg-two-third"> <div class="container"> <div class="row"> <div class="col-26"> <label for="projet">Votre Projet*</label> </div> <div class="col-74"> <input type="checkbox" name="option" id="spectacle" /> <label for="spectacle">Un spectacle de clowns</label><br /> <input type="checkbox" name="option" id="fete-familliale"/> <label for="fete-familliale">Une fête familiale</label><br /> <input type="checkbox" name="option" id="animation-commerciale" /> <label for="animation-commerciale">Une animation commerciale</label><br /> <input type="checkbox" name="option" id="autre" /> <label for="autre">Autre événement</label><br /> </div> </div> <div class="row"> <div class="col-26"> <label for="precision">Précisions</label> </div> <div class="col-74"> <textarea id="precision" name="precision" placeholder="" style="height:250px" required></textarea> </div> </div> <div class="row"> <br /><br /><input type="submit" name="submit" value="Valider" required /> </div> </div> </div> </form> <!-- fin du formulaire --> </section> </div> </div></body> </html>


send_email.php

Code : Tout sélectionner

<?php // TRAITEMENT du FORMULAIRE // on teste si le formulaire a été soumis if (isset($_POST['submit'])) { /* ************************************************* 1- CONFIGURATION du fichier ************************************************* */ // destinataire : NOUS ! $destinataire = "[email protected]"; // Message de confirmation du mail $message_envoye = "<h1>MERCI !</h1> <p>&nbsp;</p> <h2>Votre formulaire a bien &eacute;t&eacute; envoy&eacute; !</h2> <p>&nbsp;</p> <h3> </h3>"; // Message de non envoi du mail $message_non_envoye = "D&eacute;sol&eacute;es l'envoi du mail a &eacute;chou&eacute;, veuillez r&eacute;essayer SVP."; // Messages d'erreur du formulaire $msg_formulaire_invalide = "Il y a une erreur dans votre formulaire :<br />"; /* ************************************************* 2- GESTION d'ERREUR ************************************************* */ // var_dump( $_POST ); // en TEST if ( empty($organisateur) || empty($civilite) || empty($nom) || empty($email) || empty($tel) || empty($horaires) || empty($cp) || empty($ville) || empty($option) || empty($precision) ){ $valid_form = 2; $msg_formulaire_invalide .= '- Remplissez tous les champs obligatoires, merci.<br />'; } // Vérifie la validité de l'email if( !empty($email) && !IsEmail($email) ) { $valid_form = 2; $msg_formulaire_invalide .= '- Email invalide<br />'; } // Vérifie la validité du tel if( !empty($tel) && !IsTel($tel) ) { $valid_form = 2; $msg_formulaire_invalide .= '- Numéro de téléphone invalide<br />'; } /* ************************************************* 3- ENVOI : on génère puis envoie le mail ************************************************* */ // OK ? ENVOI if ( $valid_form == 1 ) // si PAS d'erreur { // Objet du mail // $objet = 'demande renseignements'; // Contenu du message // $msg = 'Bonjour,'."\r\n\r\n"; $msg .= 'cette demande de renseignements nous arrive depuis le QUESTIONNAIRE POUR ADOPTION par '. $civilite.' '.$nom."\r\n\r\n"; $msg .= 'Pour une demande de renseignements pour :'."\r\n\r\n"; $msg .= $civilite." "; $msg .= $nom."\r\n\r\n"; $msg .= $email."\r\n\r\n"; $msg .= $organisateur."\r\n\r\n"; $msg .= $tel." aux "; $msg .= $horaires."\r\n\r\n"; $msg .= $cp." "; $msg .= $ville."\r\n\r\n"; $msg .= $option."\r\n\r\n"; $msg .= $precision."\r\n"; // En-têtes de l'e-mail // $headers = 'From: '.$nom.' <'.$email.'>' . "\r\n"; $headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n"; $headers .='Content-Transfer-Encoding: 8bit'; // echo '<pre>'.$msg.'</pre>'; // en TEST // Envoi du mail if (mail( $destinataire, $objet, $msg, $headers) ) { echo '<p>'.$message_envoye.'</p>'."\n"; } else { echo '<p>'.$message_non_envoye.'</p>'."\n"; }; } else { $valid_form = 2; // ERREUR // une des variables (ou plus) est vide ... $msg_formulaire_invalide .= '<br /><b>Merci de corriger.</b>'; echo '<p style="color:red;">'.$msg_formulaire_invalide.'</p>'."\n"; }; } // fin TRAITEMENT du formulaire ?>


La partie

Code : Tout sélectionner

<label for="projet">Votre Projet*</label> </div> <div class="col-74"> <input type="checkbox" name="option" id="spectacle" /> <label for="spectacle">Un spectacle de clowns</label><br /> <input type="checkbox" name="option" id="fete-familliale"/> <label for="fete-familliale">Une fête familiale</label><br /> <input type="checkbox" name="option" id="animation-commerciale" /> <label for="animation-commerciale">Une animation commerciale</label><br /> <input type="checkbox" name="option" id="autre" /> <label for="autre">Autre événement</label><br /> </div>

ne fonctionne pas dans le mail reçus l'information est : "on" au lieux des réponses

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

02 févr. 2020, 11:36

Je dirai que c'est normal car tu utilises mal les checkbox.
http://www.expreg.com/expreg_article.php?art=checkbox

Soit tu donnes un name différent à chaque checkbox et ensuite si elle a été cochée, tu va recevoir un true en testant la valeur retournée du name en question.
Soit tu donnes un name unique à toutes tes checkbox en précisant que c'est un tableau (donc en mettant des crochets après le nom de la variable (cf l'exemple) et par contre il faut que tu mettes des value différent à chaque checkbox pour que le formulaire renvoie un tableau avec les variables cochées.

Si tu as un doute, passe ton formulaire en GET (pour le debug) plutôt qu'en POST, ça te permettra de voir dans l'url les variables passées c'est pratique pour débuguer.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 17 Messages

02 févr. 2020, 11:45

Code : Tout sélectionner

<?php error_reporting(E_ALL); if(!empty($_POST)) { echo '<pre>'; echo print_r($_POST['choix'],true); echo '</pre><br /> Faire un autre test : <a href="checkbox.php">Tester à nouveau</a>'; } else { echo '<b>Test de récupération dans le cas de checkbox multiple</b>'; echo '<form method="POST" action="checkbox.php"> <input type="checkbox" name="choix[]" value="1"> nom 1<br> <input type="checkbox" name="choix[]" value="2"> nom 2<br> <input type="checkbox" name="choix[]" value="3"> nom 3<br> <input type="checkbox" name="choix[]" value="4"> nom 4<br> <input type="checkbox" name="choix[]" value="5"> nom 5<br> <input type="submit" value="test"> </form>'; } ?>
ok mais j'arrive pas a voir ou je doit placé la partie

Code : Tout sélectionner

<?php error_reporting(E_ALL); if(!empty($_POST)) { echo '<pre>'; echo print_r($_POST['choix'],true); echo '</pre><br /> Faire un autre test : <a href="checkbox.php">Tester à nouveau</a>'; } else { echo '<b>Test de récupération dans le cas de checkbox multiple</b>'; echo '
est comment je fait pour la placé ou je veux dans le mail



Voila le test que je vient de faire

contact.php

Code : Tout sélectionner

<?php // ----------------- // FONCTIONS utiles /* cette fonction sert à nettoyer et enregistrer un texte */ function Rec($text) { $text = trim($text); // delete white spaces after & before text $text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well return $text; }; /* Cette fonction sert à vérifier la syntaxe d'un email */ function IsEmail($email) { $test = filter_var( $email, FILTER_VALIDATE_EMAIL ); return (!empty($test)); }; /* Cette fonction sert à vérifier la syntaxe d'un numéro de téléphone */ function IsTel($tel) { $pattern = "/^[+]?[0-9. \/]{6,20}$/"; // tél de la forme (6 à 20 caractères): +33 1 23 45 67 89 ou 0123456789 ou 01 23 45 67 89 ou 01.23.45.67.89 ou 01/23/45/67/89... return (preg_match($pattern,$tel)); // true ou false }; // ----------------- // INITIALISATION ou récupération des données // formulaire envoyé, on récupère tous les champs. $organisateur = (isset($_POST['organisateur'])) ? Rec($_POST['organisateur']) : ''; $civilite = (isset($_POST['civilite'])) ? Rec($_POST['civilite']) : ''; $nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : ''; $email = (isset($_POST['email'])) ? Rec($_POST['email']) : ''; $tel = (isset($_POST['tel'])) ? Rec($_POST['tel']) : ''; $horaires = (isset($_POST['horaires'])) ? Rec($_POST['horaires']) : ''; $cp = (isset($_POST['cp'])) ? Rec($_POST['cp']) : ''; $ville = (isset($_POST['ville'])) ? Rec($_POST['ville']) : ''; $choix[] = (isset($_POST['choix[]'])) ? Rec($_POST['choix[]']) : ''; $choixautre = (isset($_POST['choixautre'])) ? Rec($_POST['choixautre']) : ''; $precision = (isset($_POST['precision'])) ? Rec($_POST['precision']) : ''; // ----------------- // TRAITEMENT du formulaire (INCLUS) $valid_form = 1; // on teste si le formulaire a été soumis if( isset($_POST['submit']) ) { include(__DIR__.'/send_email.php'); // (TRAITEMENT INCLUS) } ?> <!doctype html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>QUESTIONNAIRE POUR ADOPTION</title> <link rel="stylesheet" href="RV-2017.css"/> <script src="/js/jquery.min.js"></script> <script src="/js/responsiveslides.min.js"></script> <script> // You can also use "$(window).load(function() {" $(function () { // Slideshow 4 $("#slider4").responsiveSlides({ auto: true, pager: false, nav: true, speed: 500, namespace: "callbacks", before: function () { $('.events').append("<li>before event fired.</li>"); }, after: function () { $('.events').append("<li>after event fired.</li>"); } }); }); </script> </head> <body> <!-- Début corps de la page--> <!-- Entête et menu --> <div class="row"> <div class="col"> <header> <a href=""><img src="" alt="" class="style-logo" title=""/></a> <div class="base-line"><h2>QUESTIONNAIRE POUR ADOPTION</h2> </div> </header> </div> </div> <!-- fin Entête et menu --> <h3>Pour avoir des renseignements merci de remplir TOUS les champs : </h3> <h4 align="center">Si dans les 48 heures après l'envoi du formulaire vous n'avez pas de nos nouvelles<br /> N'hésitez pas à nous contacter par tel au </h4> <p align="center">.</p> <!-- début formulaire --> <section> <div class="row"> <div class="col col-md-one-half col-lg-one-third"> <form method="POST" target= "" action=""> <div class="container"> <div class="row"> <div class="col-26"> <label for="nom">Nom et Prénom*</label> </div> <div class="col-74"> <input type="text" id="nom" name="nom" placeholder="Vos nom et prénom" required /><br /> </div> </div> <div class="row"> <div class="col-26"> <label for="civilite">Civilité*</label> </div> <div class="col-74"> <input type="radio" name="civilite" value="madame" id="madame" /> <label for="madame">Madame</label> <input type="radio" name="civilite" value="monsieur" id="monsieur" /> <label for="monsieur">Monsieur</label> <br /> </div> </div> <div class="row"> <div class="col-26"> <label for="organisateur">Organisateur*</label> </div> <div class="col-74"> <input type="text" id="organisateur" name="organisateur" placeholder="Asso, CE, Comité des fêtes, Centre de Loisirs, APE, Particulier... " required /><br /> </div> </div> <div class="row"> <div class="col-26"> <label for="cp">Code postal*</label> </div> <div class="col-74"> <input type="text" id="cp" name="cp" placeholder="Votre code postal" required /></div> <div class="row"> <div class="col-26"> <label for="ville"> Ville*</label> </div> <div class="col-74"> <input type="text" id="ville" name="ville" placeholder="Votre ville" required /> <br /> </div> </div> <div class="row"> <div class="col-26"> <label for="email">Email*</label> </div> <div class="col-74"> <input type="email" id="email" name="email" placeholder="Votre email" required /><br /> </div> </div> <div class="row"> <div class="col-26"> <label for="tel">Téléphone*</label> </div> <div class="col-74"> <input type="tel" id="tel" name="tel" placeholder="Votre téléphone" required /><br /> </div> </div> <div class="row"> <div class="col-26"> <label for="horaires">Vos horaires</label> </div> <div class="col-74"> <input type="radio" name="horaires" value="hr" id="hr" /> <label for="hr">Heures de repas</label> <input type="radio" name="horaires" value="hb" id="hb" /> <label for="hb">Heures de bureau</label><br /><br /> <label for="horaires">Comment laisserez-vous votre animal à l'extérieur ? (Considérer toutes les possibilités)</label><br /> <input type="checkbox" name="choix[]" value="1"> Libre dehors<br> <input type="checkbox" name="choix[]" value="2"> Cour clôturée<br> <input type="checkbox" name="choix[]" value="3"> Marche en laisse avec vous<br> <input type="checkbox" name="choix[]" value="4"> Attaché à une niche<br> <input type="checkbox" name="choix[]" value="5"> Enclos extérieur<br> <input type="checkbox" name="choix[]" value="6"> Autres<br> <input type="choixautre" id="choixautre" name="choixautre" placeholder="" /><br /><br /> <div class="row"> <div class="col-26"> <label for="precision">Précisions</label> </div> <div class="col-74"> <textarea id="precision" name="precision" placeholder="" style="height:250px" required></textarea> </div> </div> <div class="row"> <br /><br /><input type="submit" name="submit" value="Valider" required /> </div> </div> </div> </form> <!-- fin du formulaire --> </section> </div> </div></body> </html>
send_email.php

Code : Tout sélectionner

<?php // TRAITEMENT du FORMULAIRE // on teste si le formulaire a été soumis if (isset($_POST['submit'])) { /* ************************************************* 1- CONFIGURATION du fichier ************************************************* */ // destinataire : NOUS ! $destinataire = "[email protected]"; // Message de confirmation du mail $message_envoye = "<h1>MERCI !</h1> <p>&nbsp;</p> <h2>Votre formulaire a bien &eacute;t&eacute; envoy&eacute; !</h2> <p>&nbsp;</p> <h3> </h3>"; // Message de non envoi du mail $message_non_envoye = "D&eacute;sol&eacute;es l'envoi du mail a &eacute;chou&eacute;, veuillez r&eacute;essayer SVP."; // Messages d'erreur du formulaire $msg_formulaire_invalide = "Il y a une erreur dans votre formulaire :<br />"; /* ************************************************* 2- GESTION d'ERREUR ************************************************* */ // var_dump( $_POST ); // en TEST if ( empty($organisateur) || empty($civilite) || empty($nom) || empty($email) || empty($tel) || empty($horaires) || empty($cp) || empty($ville) || empty($choix) || empty($choixautre) || empty($precision) ){ $valid_form = 2; $msg_formulaire_invalide .= '- Remplissez tous les champs obligatoires, merci.<br />'; } // Vérifie la validité de l'email if( !empty($email) && !IsEmail($email) ) { $valid_form = 2; $msg_formulaire_invalide .= '- Email invalide<br />'; } // Vérifie la validité du tel if( !empty($tel) && !IsTel($tel) ) { $valid_form = 2; $msg_formulaire_invalide .= '- Numéro de téléphone invalide<br />'; } /* ************************************************* 3- ENVOI : on génère puis envoie le mail ************************************************* */ // OK ? ENVOI if ( $valid_form == 1 ) // si PAS d'erreur { // Objet du mail // $objet = 'demande renseignements'; // Contenu du message // $msg = 'Bonjour,'."\r\n\r\n"; $msg .= 'cette demande de renseignements nous arrive depuis le QUESTIONNAIRE POUR ADOPTION par '. $civilite.' '.$nom."\r\n\r\n"; $msg .= 'Pour une demande de renseignements pour :'."\r\n\r\n"; $msg .= $civilite." "; $msg .= $nom."\r\n\r\n"; $msg .= $email."\r\n\r\n"; $msg .= $organisateur."\r\n\r\n"; $msg .= $tel." aux "; $msg .= $horaires."\r\n\r\n"; $msg .= $cp." "; $msg .= $ville."\r\n\r\n"; $msg .= 'Comment laisserez-vous votre animal à l\'extérieur ? '.$choix."\r\n\r\n"; $msg .= $choixautre."\r\n\r\n"; $msg .= $precision."\r\n"; // En-têtes de l'e-mail // $headers = 'From: '.$nom.' <'.$email.'>' . "\r\n"; $headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n"; $headers .='Content-Transfer-Encoding: 8bit'; // echo '<pre>'.$msg.'</pre>'; // en TEST // Envoi du mail if (mail( $destinataire, $objet, $msg, $headers) ) { echo '<p>'.$message_envoye.'</p>'."\n"; } else { echo '<p>'.$message_non_envoye.'</p>'."\n"; }; } else { $valid_form = 2; // ERREUR // une des variables (ou plus) est vide ... $msg_formulaire_invalide .= '<br /><b>Merci de corriger.</b>'; echo '<p style="color:red;">'.$msg_formulaire_invalide.'</p>'."\n"; }; } // fin TRAITEMENT du formulaire ?>
Array to string conversion in /test/send_email.php on line 93

dans le mail j'ai maintenant un : "Array"

est la case autre qui devrai être une option est obligatoire

Code : Tout sélectionner

<input type="choixautre" id="choixautre" name="choixautre" placeholder="" /><br /><br />

Eléphanteau du PHP | 17 Messages

02 févr. 2020, 20:22

Je dirai que c'est normal car tu utilises mal les checkbox.
http://www.expreg.com/expreg_article.php?art=checkbox

Soit tu donnes un name différent à chaque checkbox et ensuite si elle a été cochée, tu va recevoir un true en testant la valeur retournée du name en question.
Soit tu donnes un name unique à toutes tes checkbox en précisant que c'est un tableau (donc en mettant des crochets après le nom de la variable (cf l'exemple) et par contre il faut que tu mettes des value différent à chaque checkbox pour que le formulaire renvoie un tableau avec les variables cochées.

Si tu as un doute, passe ton formulaire en GET (pour le debug) plutôt qu'en POST, ça te permettra de voir dans l'url les variables passées c'est pratique pour débuguer.
Merci j'ai réussi a le faire fonctionné

Eléphanteau du PHP | 17 Messages

02 févr. 2020, 20:29

J'ai 2 autres question
*comment faire pour que certaine question ne soit pas obligatoire
* peux t'on mettre en forme ex:

Code : Tout sélectionner

$msg = 'Bonjour, '."\r\n"; $msg .= </u>'Nom de l\'animal choisi :'</u><FONT color="#ff0000">'.$organisateur.'</FONT>"\r\n\r\n";
j'ai test ça comme sur un autre formulaire mais ça ne fonctionne pas