Afficher un message de validation dans un formulaire ?
Résolu
Ame-perdue
-
Ame-perdue -
Ame-perdue -
Bonjour,
Je suis en train de créer une page de contact pour un site web.
J'essaye d'afficher en vain mon message de validation ("message envoyé") dans ma page contact.
Mais je n'y arrive pas. Effectivement lorsque je clique sur envoyer je suis redirigé vers une page blanche et le message s'y affiche. Mon email est bien arrivé !
Je voudrais que tout se passe sur la page contact et que lorsque je clique sur envoyer les champs se vident et un petit "message envoyé" s'affiche en-dessous du formulaire.
Voici mon code:
Merci d'avance ! Je n'ai plus aucune idée et je cherche depuis 2 jours sans résultats. Il va sans dire que je débute en php.
EDIT : Ajout des balises de code.
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 suis en train de créer une page de contact pour un site web.
J'essaye d'afficher en vain mon message de validation ("message envoyé") dans ma page contact.
Mais je n'y arrive pas. Effectivement lorsque je clique sur envoyer je suis redirigé vers une page blanche et le message s'y affiche. Mon email est bien arrivé !
Je voudrais que tout se passe sur la page contact et que lorsque je clique sur envoyer les champs se vident et un petit "message envoyé" s'affiche en-dessous du formulaire.
Voici mon code:
<?php if(isset($_POST['email']) and isset($_POST['sujet']) and isset($_POST['message'])) { $destinataire = '***@***'; $email = htmlentities($_POST['email']); if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{| }~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{ |}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',str_replace('&','&',$email))) { $sujet = 'Contact: '.stripslashes($_POST['sujet']); $message = stripslashes($_POST['message']); $headers = "From: <".$email.">\n"; $headers .= "Reply-To: ".$email."\n"; $headers .= "Content-Type: text/plain; charset=\"iso-8859-1\""; if(mail($destinataire,$sujet,$message,$headers)) { echo "<strong>Votre message a bien été envoyé.</strong>"; } else { echo "<strong style=\"color:#ff0000;\">Une erreur s'est produite lors de l'envois du message.</strong>"; } } else { echo "<strong style=\"color:#ff0000;\">L'email que vous avez entré est invalide.</strong>"; } } else { ?> <form action="Contact.php" method="post"> <legend>Formulaire de contact</legend> <label for="email" style="display:inline-block;width:100px;"><strong>Votre Email:</strong></label> <input type="text" name="email" id="email" /><br /> <label for="sujet" style="display:inline-block;width:100px;"><strong>Sujet:</strong></label> <input type="text" name="sujet" id="sujet" /><br /> <label for="message"><strong>Message:</strong></label><br /> <textarea cols="70" rows="4" name="message" id="message"></textarea><br /> <input type="submit" value="Envoyer" /> </form> <?php } ?>
Merci d'avance ! Je n'ai plus aucune idée et je cherche depuis 2 jours sans résultats. Il va sans dire que je débute en php.
EDIT : Ajout des balises de code.
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
.
A voir également:
- Message de validation formulaire
- Whatsapp formulaire opposition - Guide
- Ethernet n'a pas de configuration ip valide - Guide
- Formulaire de réclamation facebook - Guide
- Recuperer message whatsapp supprimé - Guide
- Message supprimé whatsapp - Guide
5 réponses
Génial !
@Thorak83: Je te remercierai jamais assez, ça fonctionne parfaitement :)
Bon je vais pas vous embêtez plus que ça, toutes mes questions ont trouvé leur réponse. Aussi, je vais clôturer le sujet dans la bonne humeur.
Un grand/gros/immense MERCI à tous pour votre aide :)
@Thorak83: Je te remercierai jamais assez, ça fonctionne parfaitement :)
Bon je vais pas vous embêtez plus que ça, toutes mes questions ont trouvé leur réponse. Aussi, je vais clôturer le sujet dans la bonne humeur.
Un grand/gros/immense MERCI à tous pour votre aide :)
Bonjour,
1 - 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
2 -
Je pense que dans ton HTML .. dans ta balise FORM .. tu as spécifié en ACTION .. le nom de ton fichier PHP de traitement....
Pour rester dans la même page... il faut laisse l'attribut ACTION à vide .. et placer ton code PHP DIRECTEMENT dans ta page....
3 - Tu un ELSE en trop.
Cordialement,
Jordane
1 - 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
2 -
Effectivement lorsque je clique sur envoyer je suis redirigé vers une page blanche et le message s'y affiche. Mon email est bien arrivé !
Je pense que dans ton HTML .. dans ta balise FORM .. tu as spécifié en ACTION .. le nom de ton fichier PHP de traitement....
Pour rester dans la même page... il faut laisse l'attribut ACTION à vide .. et placer ton code PHP DIRECTEMENT dans ta page....
3 - Tu un ELSE en trop.
<?php //---------------------------------------------------------------------------// // Traitement //---------------------------------------------------------------------------// if(isset($_POST['email']) and isset($_POST['sujet']) and isset($_POST['message'])){ $destinataire = '***@***'; $email = htmlentities($_POST['email']); if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{| }~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{ |}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',str_replace('&','&',$email))) { $sujet = 'Contact: '.stripslashes($_POST['sujet']); $message = stripslashes($_POST['message']); $headers = "From: <".$email.">\n"; $headers .= "Reply-To: ".$email."\n"; $headers .= "Content-Type: text/plain; charset=\"iso-8859-1\""; if(mail($destinataire,$sujet,$message,$headers)) { echo "<strong>Votre message a bien été envoyé.</strong>"; } else { echo "<strong style=\"color:#ff0000;\">Une erreur s'est produite lors de l'envois du message.</strong>"; } }else { echo "<strong style=\"color:#ff0000;\">L'email que vous avez entré est invalide.</strong>"; } } ?> <!-- Formulaire --> <form action="" method="post"> <legend>Formulaire de contact</legend> <label for="email" style="display:inline-block;width:100px;"><strong>Votre Email:</strong></label> <input type="text" name="email" id="email" /><br /> <label for="sujet" style="display:inline-block;width:100px;"><strong>Sujet:</strong></label> <input type="text" name="sujet" id="sujet" /><br /> <label for="message"><strong>Message:</strong></label><br /> <textarea cols="70" rows="4" name="message" id="message"></textarea><br /> <input type="submit" value="Envoyer" /> </form>
Cordialement,
Jordane
Bonjour,
Au vu de votre code, la page blanche est normale. je vous explique pourquoi. Voici ce que vous faites :
Donc après avoir valider le formulaire, le script se retrouve dans le test if (isset....) qui ne fait qu'afficher le message et c'est tout
Voila comment faire:
C'est un exemple. Dans ce cas le formulaire sera toujours afficher et en dessous le traitement avec les message
Cordialement
Au vu de votre code, la page blanche est normale. je vous explique pourquoi. Voici ce que vous faites :
if(isset($_POST['email']) and isset($_POST['sujet']) and isset($_POST['message'])) { - traitement donnée - envoi mail ou pas - affichage "Votre message a bien été envoyé" ou "erreur" } else { Affichage du formulaire }
Donc après avoir valider le formulaire, le script se retrouve dans le test if (isset....) qui ne fait qu'afficher le message et c'est tout
Voila comment faire:
Affichage du formulaire if(isset($_POST['email']) and isset($_POST['sujet']) and isset($_POST['message'])) { - traitement donnée - envoi mail ou pas - affichage "Votre message a bien été envoyé" ou "erreur" }
C'est un exemple. Dans ce cas le formulaire sera toujours afficher et en dessous le traitement avec les message
Cordialement
Je te propose de faire ça autrement car là ça se vois vraiment que tu débute en PHP ^^ c'est un peu le boxon ^^ et je comprend pourquoi tu ne comprend pas trop tes erreurs.
Je te fournis un formulaire type en $_POST il suffit de mettre en action="." pour rester sur la même page ou tout simplement de la rappeller ainsi tu recharges ta page mais vide cette fois.
Onsubmit permet de récupérer le résultat de ta page javascript qui va tester ton mail. l'id dans l'input type du mail permet de récupérer la valeur de ton mail afin de voir s'il est valide.
On commence par le test de si tes champs sont remplis ou non ect
à toi de completer à ta guise
on suis par ceci
Enfin le FORMULAIRE
les labels, classes, ect sont des sources pour le Css afin de mettre en forme .
pour tester tes champs tu peux soit faire comme tu fais soit faire appel à une fonction javascript qui fait ce que tu fais mais ainsi c'est plus propre.
enfin javascript, ici je testais le log pour qu'on ne mette pas de majuscule je t'en fait cadeau ;) décidément je suis gentil ;) ..
Si tu as des questions je suis dispo mais bon j'ai déjà fait presque toute ta mise au point ;) !
EDIT : Ajout du langage dans les balises de code.
Je te fournis un formulaire type en $_POST il suffit de mettre en action="." pour rester sur la même page ou tout simplement de la rappeller ainsi tu recharges ta page mais vide cette fois.
Onsubmit permet de récupérer le résultat de ta page javascript qui va tester ton mail. l'id dans l'input type du mail permet de récupérer la valeur de ton mail afin de voir s'il est valide.
On commence par le test de si tes champs sont remplis ou non ect
à toi de completer à ta guise
if(!empty($_POST['Login']) && !empty($_POST['Email'] && ... )) { $_POST['Login'] = htmlentities($_POST['Login'],ENT_QUOTES); // pareil pour les deux autres ou toute autre champs que tu rajoutes. // si tu as une Base de donnée tu peux crypté le mot de passe en md5 } else echo "Champs non remplis";
on suis par ceci
<head> <link rel="stylesheet" href="css/style.css"> <script type="text/javascript" src="ver.js"></script> </head>
Enfin le FORMULAIRE
<body> <form method="post" action="." class="login" onsubmit="return ver()"> <p> <label for="login">Login:</label> <input type="text" name='Login'> </p> <p> <label for="password">Password : </label> <input type="password" name='Password' > </p> <p> <label for="email">Email : </label> <input type="text" name='Mail' id='mail'> </p> <p class="login-submit"> <button type="submit" class="login-button">Se connecter'</button> </p> </form> </body> </html>
les labels, classes, ect sont des sources pour le Css afin de mettre en forme .
pour tester tes champs tu peux soit faire comme tu fais soit faire appel à une fonction javascript qui fait ce que tu fais mais ainsi c'est plus propre.
enfin javascript, ici je testais le log pour qu'on ne mette pas de majuscule je t'en fait cadeau ;) décidément je suis gentil ;) ..
function verif() { var mailSend = document.getElementById("mail").value; var LogSend = document.getElementById("log").value; var REXPmail = new RegExp("^[a-zA-Z0-9_.-]+@[a-zA-Z0-9_-]{2,}[.][a-zA-Z]{2,3}$","i"); var REXPLog = new RegExp("^[^A-Z]*$"); if(REXPmail.test(mailSend) == false) { document.getElementById("alerte").innerHTML="<span class=\"error\"><b>Email invalide</b></span>"; return false; } if(REXPLog.test(LogSend) == false) { document.getElementById("alerte").innerHTML="<span class=\"error\"><b>Login invalide, que des minuscules svp !</b></span>"; return false; } else { return true; } }
Si tu as des questions je suis dispo mais bon j'ai déjà fait presque toute ta mise au point ;) !
EDIT : Ajout du langage dans les balises de code.
Bonjour,
Je vois que je ne peux vous cacher le fait que je débute. En tout cas, c'est sympa d'apporter de l'aide à un débutant merci beaucoup.
Concernant le code il a l'air vraiment pas mal, même si je vais devoir l'adapter parce-qu'il ressemble à une page de connexion. Or, je suis en train de coder une page de contact mais je suppose que je n'ai qu'à modifier le code...
Encore merci pour ton aide, je vais essayer de perfectionner mon algorithme.
Je vois que je ne peux vous cacher le fait que je débute. En tout cas, c'est sympa d'apporter de l'aide à un débutant merci beaucoup.
Concernant le code il a l'air vraiment pas mal, même si je vais devoir l'adapter parce-qu'il ressemble à une page de connexion. Or, je suis en train de coder une page de contact mais je suppose que je n'ai qu'à modifier le code...
Encore merci pour ton aide, je vais essayer de perfectionner mon algorithme.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Vous êtes super sympa j'ai réussi à faire ce que je voulais, encore merci !
Voici mon code qui fonctionne:
Je ne veux pas abuser de votre gentillesse car vous m'avez déjà beaucoup aider et c'est inestimable pour moi. Mais j'aimerais un dernier coup de pouce si ce n'est pas trop vous demandez, est-il possible d'afficher mon petit message de confirmation ("message envoyé") à côté de mon bouton "envoyer" ou alors juste en dessous du formulaire. En effet, le message s'affiche en haut de la page et ça n'est pas très idéal.
Est-ce qu'on peut atteindre une balise HTML en PHP pour lui insérer un texte ? Aucune idée !?
Voici mon code qui fonctionne:
if(isset($_POST['email']) and isset($_POST['sujet']) and isset($_POST['message'])) { $destinataire = '***@***'; $email = htmlentities($_POST['email']); if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',str_replace('&','&',$email))) { $sujet = 'Contact: '.stripslashes($_POST['sujet']); $message = stripslashes($_POST['message']); $headers = "From: <".$email.">\n"; $headers .= "Reply-To: ".$email."\n"; $headers .= "Content-Type: text/plain; charset=\"iso-8859-1\""; if(mail($destinataire,$sujet,$message,$headers)) { echo "<strong>Votre message a bien été envoyé.</strong>"; }else{ echo "<strong style=\"color:#ff0000;\">Une erreur s'est produite lors de l'envois du message.</strong>"; } }else{ echo "<strong style=\"color:#ff0000;\">L'email que vous avez entré est invalide.</strong>"; } } ?> <form action="" method="post"> <legend>Formulaire de contact</legend> <label for="email" style="display:inline-block;width:100px;"><strong>Votre Email:</strong></label> <input type="text" name="email" id="email" /><br /> <label for="sujet" style="display:inline-block;width:100px;"><strong>Sujet:</strong></label> <input type="text" name="sujet" id="sujet" /><br /> <label for="message"><strong>Message:</strong></label><br /> <textarea cols="70" rows="4" name="message" id="message"></textarea><br /> <input type="submit" value="Envoyer" /> </form>
Je ne veux pas abuser de votre gentillesse car vous m'avez déjà beaucoup aider et c'est inestimable pour moi. Mais j'aimerais un dernier coup de pouce si ce n'est pas trop vous demandez, est-il possible d'afficher mon petit message de confirmation ("message envoyé") à côté de mon bouton "envoyer" ou alors juste en dessous du formulaire. En effet, le message s'affiche en haut de la page et ça n'est pas très idéal.
Est-ce qu'on peut atteindre une balise HTML en PHP pour lui insérer un texte ? Aucune idée !?