Message de remerciements après soumission d'un formulaire
Résolu
Ndrea
-
Ndrea -
Ndrea -
Bonsoir,
Je galère depuis des jours sur une fonction qui me semble toute simple. Je suis un pur débutant ; j'essaie de me faire la main sur mon futur site internet afin de pouvoir l'administrer un minimum correctement lorsqu'il sera publié.
J'ai créé un formulaire HTML. La vérification des champs se fait côté serveur, le process qui traite l'envoi est sur un fichier envoi-mail.php.
Les vérifications et l'envoi se passent à merveille.
J'ai mis actuellement un message de succès d'envoi sous le formulaire HTML. Je préférerais cacher le formulaire lorsque l'envoi s'est bien fait (et uniquement dans ce cas-là) et insérer à la place un message de remerciements, et tout cela sans recharger la page.
Il semblerait que passer par du jQuery serait une bonne idée. La librairie est d'ores et déjà chargée sur ma page, ce ne serait donc pas un problème. Mon formulaire étant traité sous PHP, je ne comprends pas comment conjuguer les deux?
Le script
document.getElementById('id_demonformulaire').style.display = 'none';
inséré sur la même page que mon <form> et sous lui cache bien le formulaire. Il me manque de pouvoir le déclencher uniquement lorsque envoi-mail.php a fait le boulot et puis d'ajouter ma fameuse phrase de remerciements.
Une piste à me suggérer?
Toute aide est la bienvenue. D'ores et déjà merci pour votre soutien et pour votre indulgence.
Ndrea
Je galère depuis des jours sur une fonction qui me semble toute simple. Je suis un pur débutant ; j'essaie de me faire la main sur mon futur site internet afin de pouvoir l'administrer un minimum correctement lorsqu'il sera publié.
J'ai créé un formulaire HTML. La vérification des champs se fait côté serveur, le process qui traite l'envoi est sur un fichier envoi-mail.php.
Les vérifications et l'envoi se passent à merveille.
J'ai mis actuellement un message de succès d'envoi sous le formulaire HTML. Je préférerais cacher le formulaire lorsque l'envoi s'est bien fait (et uniquement dans ce cas-là) et insérer à la place un message de remerciements, et tout cela sans recharger la page.
Il semblerait que passer par du jQuery serait une bonne idée. La librairie est d'ores et déjà chargée sur ma page, ce ne serait donc pas un problème. Mon formulaire étant traité sous PHP, je ne comprends pas comment conjuguer les deux?
Le script
document.getElementById('id_demonformulaire').style.display = 'none';
inséré sur la même page que mon <form> et sous lui cache bien le formulaire. Il me manque de pouvoir le déclencher uniquement lorsque envoi-mail.php a fait le boulot et puis d'ajouter ma fameuse phrase de remerciements.
Une piste à me suggérer?
Toute aide est la bienvenue. D'ores et déjà merci pour votre soutien et pour votre indulgence.
Ndrea
A voir également:
- Message de soumission
- Recuperer message whatsapp supprimé - Guide
- Message supprimé whatsapp - Guide
- Message absence thunderbird - Guide
- Epingler un message whatsapp - Accueil - Messagerie instantanée
- Message du pere noel gratuit whatsapp - Accueil - Messagerie instantanée
5 réponses
Bonjour
Un simple if/else en php te suffirait pour choisir d'afficher ou non le formulaire et/ou le message de remerciement
Un simple if/else en php te suffirait pour choisir d'afficher ou non le formulaire et/ou le message de remerciement
Bonsoir jordane45,
Merci d'avoir pris le temps de me répondre.
J'avais essayé, juste avant le formulaire, d'insérer un bout de code php;
envoi étant l'id de mon bouton de soumission.
Le formulaire se cache effectivement quand j'appuis sur mon bouton (bien qu'il réaparraisse après quelques secondes, mais c'est un autre problème/sujet), mais les vérifications de mon envoi-mail.php ne sont pas faites. Le déclencheur est uniquement le clic sur le bouton.
Il va de soi que mon envoi-mail.php est correctement appelé sur ma page (sans cela je ne pourrais pas envoyer de mails ou vérifier les champs). Il est ainsi appelé, en en-tête;
Le formulaire s'ouvre ainsi ;
Et voici le genre d'input, qui grâce à envoi-mail.php, est soumis à vérification;
Je dois être complètement à côté de la plaque, mais il est vrai que je n'arrive pas à saisir comment utiliser un if/else, où dans le if, je ne dirais non pas ; quand je clique sur le bouton, mais quand le message a bien été envoyé par mon envoi-mail.php alors, etc...
Merci encore à toi et une belle soirée!
Merci d'avoir pris le temps de me répondre.
J'avais essayé, juste avant le formulaire, d'insérer un bout de code php;
<?php $DisplayForm = True; if(isset($_POST['envoi'])){ $DisplayForm = False; echo 'Message envoyé.'; } if ($DisplayForm){ ?> <!--Mon formulaire>--> <?php } ?>
envoi étant l'id de mon bouton de soumission.
Le formulaire se cache effectivement quand j'appuis sur mon bouton (bien qu'il réaparraisse après quelques secondes, mais c'est un autre problème/sujet), mais les vérifications de mon envoi-mail.php ne sont pas faites. Le déclencheur est uniquement le clic sur le bouton.
Il va de soi que mon envoi-mail.php est correctement appelé sur ma page (sans cela je ne pourrais pas envoyer de mails ou vérifier les champs). Il est ainsi appelé, en en-tête;
<?php include './PHPmailer/envoi-mail.php';?>
Le formulaire s'ouvre ainsi ;
<form id='form' method="post" action="<?=$_SERVER['PHP_SELF'];?>">
Et voici le genre d'input, qui grâce à envoi-mail.php, est soumis à vérification;
<input id="nom" type="text" name="nom" value="<?= $nom ?>" required class="validate"> <label for="nom" class="control-label">Nom</label> <span class="error"><?= $nom_error ?></span>
Je dois être complètement à côté de la plaque, mais il est vrai que je n'arrive pas à saisir comment utiliser un if/else, où dans le if, je ne dirais non pas ; quand je clique sur le bouton, mais quand le message a bien été envoyé par mon envoi-mail.php alors, etc...
Merci encore à toi et une belle soirée!
Enfin bon.. ton code devrait ressembler à ça
A noter :
Je t'invite par ailleurs, à lire ET appliquer le contenu de ce lien pour tes codes :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Bonne soirée.
<?php //-----------------------------------------------------------// //affichage des erreurs PHP: //-----------------------------------------------------------// error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //-----------------------------------------------------------// //include du phpMailer //-----------------------------------------------------------// require_once './PHPmailer/envoi-mail.php';? //-----------------------------------------------------------// //récupération PROPRE des variables AVANT de les utiliser //-----------------------------------------------------------// $nom = !empty($_POST['nom']) ? $_POST['nom'] : NULL; $nom_error = $nom ? "" : " Vous devez indiquer votre nom "; $prenom = !empty($_POST['prenom']) ? $_POST['prenom'] : NULL; $prenom_error = $prenom ? "" : " Vous devez indiquer votre prenom "; //initialisation des autres variables $error = ""; $DisplayForm = true; //-----------------------------------------------------------// // Début du traitement et du formulaire //-----------------------------------------------------------// if(isset($_POST['envoi'])){ $mail = new PHPmailer(); //Ici tu traites l'envoi du mail // --- A adapter à ton script actuel ---// $mail->isSMTP(); // Paramétrer le Mailer pour utiliser SMTP $mail->Host = 'mail.votredomaine.com'; // Spécifier le serveur SMTP $mail->SMTPAuth = true; // Activer authentication SMTP $mail->Username = '***@***'; // Votre adresse email d'envoi $mail->Password = 'secret'; // Le mot de passe de cette adresse email $mail->SMTPSecure = 'ssl'; // Accepter SSL $mail->Port = 465; $mail->setFrom('***@***', 'Mailer'); // Personnaliser l'envoyeur $mail->addAddress('***@***', 'Karim User'); // Ajouter le destinataire $mail->addAddress('***@***'); $mail->addReplyTo('***@***', 'Information'); // L'adresse de réponse $mail->addCC('***@***'); $mail->addBCC('***@***'); $mail->isHTML(true); // Paramétrer le format des emails en HTML ou non $mail->Subject = 'Here is the subject'; $mail->Body = 'This is the HTML message body'; $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; //envoi du mail : if(!$mail->send()) { $error .= 'Erreur, message non envoyé.'; $error .= 'Mailer Error: ' . $mail->ErrorInfo; } else { $DisplayForm = false; echo " <span>Merci ! </span>"; } } ?> <?php if($DisplayForm){ ?> <form id='form' method="post" action=""> <input id="nom" type="text" name="nom" value="<?php echo $nom ?>" required class="validate"> <label for="nom" class="control-label">Nom</label> <span class="error"><?php echo $nom_error; ?></span> <!-- Les autres champs de ton formulaire --> <input id="prenom" type="text" name="prenom" value="<?php echo $prenom ?>" required class="validate"> <label for="prenom" class="control-label">Prénom</label> <span class="error"><?php echo $prenom_error; ?></span> <input type="submit" name="envoi" value="Envoyer"> </form> <?php } ?>
A noter :
envoi étant l'id de mon bouton de soumission... pas l' ID .. mais le NAME
Je t'invite par ailleurs, à lire ET appliquer le contenu de ce lien pour tes codes :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Bonne soirée.
ReBonsoir Jordane45,
MERCI MILLE FOIS!!!
J'avais un code en effet très proche de celui que tu postes. Voici la fin telle qu'elle était avant :
J'ai viré le
et aussi tout ce qu'il y a en dessous de
pour y coller ton code ;
Et puis avant tout, j'ai déclaré LA variable qui me manquait
Et puis autour de mon formulaire, j'ai tapé exactement ton code.
J'espère que la fin que j'ai virée au profit de ton code ne posera pas de souci ? Au début de mon code j'ai un
et la partie
devait y répondre d'une certaine manière?... Mais tout cela m'échappe...
Dans tous les cas, ÉNORME MERCI! J'espère que ça aidera d'autres personnes qui comme moi étaient dans la détresse.
(Et merci pour le lien, mes posts ne le suggèrent peut-être pas d'entrée, mais j'espère avoir respecté quelques-unes de ces règles.)
Un tout bon dimanche, cordialement,
Ndrea
P.S.: Tout à fait pour le NAME et non l'ID ; la fatigue, pardon!
MERCI MILLE FOIS!!!
J'avais un code en effet très proche de celui que tu postes. Voici la fin telle qu'elle était avant :
try { $mail = new PHPMailer(true); $mail->isSMTP(); // Paramétrer le Mailer pour utiliser SMTP $mail->Host = 'mail.votredomaine.com'; // Spécifier le serveur SMTP $mail->SMTPAuth = true; // Activer authentication SMTP $mail->Username = '***@***'; // Votre adresse email d'envoi $mail->Password = 'secret'; // Le mot de passe de cette adresse email $mail->SMTPSecure = 'ssl'; // Accepter SSL $mail->Port = 465; $mail->setFrom('***@***', 'Mailer'); // Personnaliser l'envoyeur $mail->addAddress('***@***', 'Karim User'); // Ajouter le destinataire $mail->addAddress('***@***'); $mail->addReplyTo('***@***', 'Information'); // L'adresse de réponse $mail->addCC('***@***'); $mail->addBCC('***@***'); $mail->isHTML(true); // Paramétrer le format des emails en HTML ou non $mail->Subject = 'Here is the subject'; $mail->Body = 'This is the HTML message body'; $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; $mail->send(); } catch (Exception $e) { echo "Message non envoyé. Mailer Error: {$mail->ErrorInfo}"; } catch (\Exception $e) { echo $e->getMessage(); } $success = "Message envoyé."; $message = $nom = $de = ''; }
J'ai viré le
try {
et aussi tout ce qu'il y a en dessous de
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
pour y coller ton code ;
if(!$mail->send()) { $error .= 'Erreur, message non envoyé.'; $error .= 'Mailer Error: ' . $mail->ErrorInfo; } else { $DisplayForm = false; echo " <span>Merci ! </span>"; }
Et puis avant tout, j'ai déclaré LA variable qui me manquait
$DisplayForm = true;.
Et puis autour de mon formulaire, j'ai tapé exactement ton code.
J'espère que la fin que j'ai virée au profit de ton code ne posera pas de souci ? Au début de mon code j'ai un
use PHPMailer\PHPMailer\Exception;
et la partie
catch (Exception $e) { echo "Message non envoyé. Mailer Error: {$mail->ErrorInfo}"; } catch (\Exception $e) { echo $e->getMessage(); }
devait y répondre d'une certaine manière?... Mais tout cela m'échappe...
Dans tous les cas, ÉNORME MERCI! J'espère que ça aidera d'autres personnes qui comme moi étaient dans la détresse.
(Et merci pour le lien, mes posts ne le suggèrent peut-être pas d'entrée, mais j'espère avoir respecté quelques-unes de ces règles.)
Un tout bon dimanche, cordialement,
Ndrea
P.S.: Tout à fait pour le NAME et non l'ID ; la fatigue, pardon!
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, je pense que tu peux réaliser cela en utilisant ajax.
le formulaire sera en réalité traité par ajax, dans le navigateur. ajax contactera le php, récupérera la réponse du php, et modifiera l'affichage en conséquence.
le formulaire sera en réalité traité par ajax, dans le navigateur. ajax contactera le php, récupérera la réponse du php, et modifiera l'affichage en conséquence.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question