Formulaire
Résolu/Fermé
anthonyr_25
Messages postés
165
Date d'inscription
mercredi 5 janvier 2022
Statut
Membre
Dernière intervention
6 juillet 2022
-
Modifié le 11 févr. 2022 à 19:38
anthonyr_25 Messages postés 165 Date d'inscription mercredi 5 janvier 2022 Statut Membre Dernière intervention 6 juillet 2022 - 12 févr. 2022 à 22:13
anthonyr_25 Messages postés 165 Date d'inscription mercredi 5 janvier 2022 Statut Membre Dernière intervention 6 juillet 2022 - 12 févr. 2022 à 22:13
4 réponses
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
11 févr. 2022 à 20:21
11 févr. 2022 à 20:21
Bonjour,
A la ligne de code
D'où viennent les variables a,b,c,d et e ?
En plus tu y as mis tel et content .. sauf que tu n'as pas ça dans ton formulaire..
Et enfin.. la "forme" de l'url n'est pas juste.
ça devrait plutôt être du style :
sachant que nom,mail et msg devraient être transmis en paramètres de la fonction..
par exemple
que tu transmets depuis son appel dans ta fonction send
Pour finir (cette fois c'est vraiment la fin :-) ) ... il faut penser à regarder dans la console javascript de ton navigateur ce qui s'y affiche...
Et pour débuguer de l'ajax je te conseille fortement d'utiliser firefox ( et de bien penser à y activer le débugage xhr )
A la ligne de code
xhr.open("GET", "./php/mail.php" + a + "&firstname=" + b + "&mail=" + c + "&tel=" + d + "&content=" + e);
D'où viennent les variables a,b,c,d et e ?
En plus tu y as mis tel et content .. sauf que tu n'as pas ça dans ton formulaire..
Et enfin.. la "forme" de l'url n'est pas juste.
ça devrait plutôt être du style :
xhr.open("GET", "./php/mail.php?nom=" + nom + "&mail="+mail+"&msg="+msg);
sachant que nom,mail et msg devraient être transmis en paramètres de la fonction..
par exemple
function ajaxC(nom,mail,msg){
que tu transmets depuis son appel dans ta fonction send
ajaxC(nomval , mailval,msgval );
Pour finir (cette fois c'est vraiment la fin :-) ) ... il faut penser à regarder dans la console javascript de ton navigateur ce qui s'y affiche...
Et pour débuguer de l'ajax je te conseille fortement d'utiliser firefox ( et de bien penser à y activer le débugage xhr )
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
11 févr. 2022 à 22:49
11 févr. 2022 à 22:49
Par contre, vu que tu passes par de l'ajax maintenant .. il ne faut plus "submit" ton formulaire.
Donc,
1 - Change le type de bouton
A changer par
2 - retire l'action du form
3 - Dans ton code php,
Il n'y a plus la variable submit .. donc soit tu l'ajoutes dans l'url de ton ajax ..
Soit tu modifies le code en retirant le if sur le $_POST['submit']
Pour finir, si ça ne marche toujours pas .. pense à regarder dans la console et à nous montrer ce qui s'affiche...
Donc,
1 - Change le type de bouton
<button type="submit" name="submit">Envoyer
A changer par
<button type="button" name="submit">Envoyer
2 - retire l'action du form
<form method="post" id="formulaire" name="myForm" onsubmit="return send()" novalidate required>
3 - Dans ton code php,
Il n'y a plus la variable submit .. donc soit tu l'ajoutes dans l'url de ton ajax ..
xhr.open("GET", "./php/mail.php?submit=true&nom=" + nom + "&mail="+mail+"&msg="+msg);
Soit tu modifies le code en retirant le if sur le $_POST['submit']
Pour finir, si ça ne marche toujours pas .. pense à regarder dans la console et à nous montrer ce qui s'affiche...
anthonyr_25
Messages postés
165
Date d'inscription
mercredi 5 janvier 2022
Statut
Membre
Dernière intervention
6 juillet 2022
6
Modifié le 11 févr. 2022 à 23:09
Modifié le 11 févr. 2022 à 23:09
la console n'affiche rien en revanche sa ne marche plus du tout, surement a cause de cette ligne :
le onsubmit devrait peut etre changez non ?
est ce que tu veux le php ?
<form method="get" id="formulaire" name="myForm" onsubmit="return send()" novalidate required>
le onsubmit devrait peut etre changez non ?
est ce que tu veux le php ?
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
>
anthonyr_25
Messages postés
165
Date d'inscription
mercredi 5 janvier 2022
Statut
Membre
Dernière intervention
6 juillet 2022
11 févr. 2022 à 23:22
11 févr. 2022 à 23:22
Je n'avais pas fait attention à ton ondubmit..
Oui il faut le retirer et, à la place, attacher un onclick sur le bouton
Oui il faut le retirer et, à la place, attacher un onclick sur le bouton
anthonyr_25
Messages postés
165
Date d'inscription
mercredi 5 janvier 2022
Statut
Membre
Dernière intervention
6 juillet 2022
6
11 févr. 2022 à 21:36
11 févr. 2022 à 21:36
bha comme je le disais ce bout de code dont tu me parle je l'ai chopper au hazard en penssant qu'il pouvais m'aider, je vais voir ce que je peux faire avec sa et oui je regarde la console mdr enfin pas tout le temps c'est vrai je vais y faire plus atention !
et je vais faire egalement ce que tu m'as dit pour firefox ;)
merci !
et je vais faire egalement ce que tu m'as dit pour firefox ;)
merci !
anthonyr_25
Messages postés
165
Date d'inscription
mercredi 5 janvier 2022
Statut
Membre
Dernière intervention
6 juillet 2022
6
11 févr. 2022 à 23:38
11 févr. 2022 à 23:38
c'est bon c réglé en laissant le button en type submit en plus ;) je vous met le code :
Un formulaire avec 3 input qui fonctionne whaho sa fait du bien quand sa marche !!! haha
<form method="GET" id="formulaire" name="myForm" onsubmit="return send()" novalidate required> <h2>Formulaire de contact</h2> <div class="ligne"></div><!-- ligne en dessous de formulaire --> <div class="form-group"> <h3> <input id="nom" type="text" placeholder="Votre Prénom... (3 lettres minimum obligatoire)" name="nom" title="Ecrivez votre prénom" pattern="[A-Za-z]{3, }" required/> <p class="formp notnom"></p> </h3> </div> <div class="form-group"> <h3> <input id="mail" type="email" placeholder="Adresse mail... (@ et . obligatoire)" name="mail" pattern="[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+.[a-zA-Z.]{2,15}" required/> <p class="formp notmail"></p> </h3> </div> <div class="form-group"> <h3> <textarea id="msg" cols="40" rows="5" placeholder="Message... (facultatif)" name="msg" title="Que voulez-vous ?"></textarea> <p class="formp notmsg"></p> </h3> </div> <div id="mailValid"></div> <button type="submit" name="submit">Envoyer <svg class="send" width="67" height="67" viewBox="0 0 67 67" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M55.8334 11.1665H16.75C13.6708 11.1665 11.1667 13.6706 11.1667 16.7498V30.7082H16.75V22.3332L34.6167 35.7332C35.1001 36.0952 35.6878 36.2908 36.2917 36.2908C36.8956 36.2908 37.4833 36.0952 37.9667 35.7332L55.8334 22.3332V47.4582H33.5V53.0415H55.8334C58.9126 53.0415 61.4167 50.5374 61.4167 47.4582V16.7498C61.4167 13.6706 58.9126 11.1665 55.8334 11.1665ZM36.2917 30.0103L18.6093 16.7498H53.9741L36.2917 30.0103Z" fill="#F8F8F8"/> <path d="M5.58331 33.5H25.125V39.0833H5.58331V33.5ZM11.1666 41.875H27.9166V47.4583H11.1666V41.875ZM19.5416 50.25H30.7083V55.8333H19.5416V50.25Z" fill="#F8F8F8"/> </svg> </button> </form>
<?php /* Page: contact.php */ //mettez ici votre adresse mail $VotreAdresseMail="exemple@exemple.exemple"; // si le bouton "Envoyer" est cliqué if(isset($_GET['submit'])) { //on vérifie que le champ mail est correctement rempli if(empty($_GET['mail'])) { echo "Le champ mail est vide"; } else { //on vérifie que l'adresse est correcte if(!preg_match("#^[a-z0-9_-]+((\.[a-z0-9_-]+){1,})?@[a-z0-9_-]+((\.[a-z0-9_-]+){1,})?\.[a-z]{2,}$#i",$_GET['mail'])){ echo "L'adresse mail entrée est incorrecte"; }else{ //on vérifie que le champ nom est correctement rempli if(empty($_GET['nom'])) { echo "Le champ prenom est vide"; }else{ //on vérifie que le champ message n'est pas vide if(empty($_GET['msg'])) { echo "Le champ message est vide"; }else{ //tout est correctement renseigné, on envoi le mail //on renseigne les entêtes de la fonction mail de PHP $Entetes = "MIME-Version: 1.0\r\n"; $Entetes .= "Content-type: text/html; charset=UTF-8\r\n"; $Entetes .= "From: Formulaire <".$_GET['mail'].">\r\n"; $Entetes .= "Reply-To: Formulaire <".$_GET['mail'].">\r\n"; //on prépare les champs: $Mail=$_GET['mail']; $Sujet='=?UTF-8?B?'.base64_encode($_GET['nom']).'?=';//Cet encodage (base64_encode) est fait pour permettre aux informations binaires d'être manipulées par les systèmes qui ne gèrent pas correctement les 8 bits (=?UTF-8?B? est une norme afin de transmettre correctement les caractères de la chaine) $Message=htmlentities($_GET['msg'],ENT_QUOTES,"UTF-8");//htmlentities() converti tous les accents en entités HTML, ENT_QUOTES Convertit en + les guillemets doubles et les guillemets simples, en entités HTML //en fin, on envoi le mail if(mail($VotreAdresseMail,$Sujet,nl2br($Message),$Entetes)){//la fonction nl2br permet de conserver les sauts de ligne et la fonction base64_encode de conserver les accents dans le titre echo "Le mail à été envoyé avec succès!"; } else { echo "Une erreur est survenue, le mail n'a pas été envoyé"; } } } } } } ?>
const btn = document.querySelector('button');// recuperation du bouton /* ------------------------------------------------------ recuperation des trois inputs */ const nom = document.querySelector('#nom'); const mail = document.querySelector('#mail'); const msg = document.querySelector('#msg'); /* -------------------------------------------------------- recuperation du formulaire entier */ const notsend = document.querySelector('.notsend'); function send(){ /* --------------------------------------------------- récuperation des valeurs des input */ let nomval = nom.value; let mailval = mail.value; let msgval = msg.value; /* --------------------------------------------------- phrases d'erreur */ const notnom = document.querySelector('.notnom'); const notmail = document.querySelector('.notmail'); /* ---------------------------------------------------- reset */ nom.style.border = "5px solid rgba(255, 255, 255, 0)"; mail.style.border = "5px solid rgba(255, 255, 255, 0)"; notnom.innerHTML = ""; notmail.innerHTML = ""; /* ----------------------------------------------------- nom vide */ if ( nomval == '' ) { nom.style.border = "5px solid red"; notnom.innerHTML = "Le champs est vide !"; notnom.style.color = "red"; } else /* ----------------------------------------------------- mail vide */ if( mailval == '' ) { mail.style.border = "5px solid red"; notmail.innerHTML = "Le champs est vide !"; notmail.style.color = "red"; } else /* ---------------------------------------------------- nom moins de deux caractères */ if (nomval.length < 2) { nom.style.border = "5px solid red"; notnom.innerHTML = "Exemple : Max"; notnom.style.color = "red"; } /* --------------------------------------------------- mail incorrect */ const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; if (re.test(String(mailval).toLowerCase()) == false) { mail.style.border = "5px solid red"; notmail.innerHTML = "Exemple : exemple@gmail.com"; notmail.style.color = "red"; } else { let sendmail = document.querySelector('.send');//recuperer l'icon du button btn.textContent = "Merci !";//remplacer le texte dans le button btn.appendChild(sendmail);//replacer l'icon dans le button ajaxC(nomval , mailval,msgval ); return true //Envoie du formulaire } return false //refus d'envoie du formulaire } function ajaxC(nom,mail,msg){ /* let nomval = nom.value; let mailval = mail.value; let msgval = msg.value; */ var xhr = new XMLHttpRequest(); xhr.open("GET", "./php/mail.php?submit=true&nom=" + nom + "&mail="+mail+"&msg="+msg); xhr.onload = function(){ if(xhr.status === 200) { let response = document.querySelector("#mailValid"); response.innerHTML = "<p>" + xhr.responseText + "</p>"; if(xhr.responseText === "Votre mail a bien été envoyé !"){ response.style.color = "#00bcd4"; response.style.border = "2px solid #00bcd4"; } else if(xhr.responseText === "Votre mail n'a pas pu être envoyé") { response.style.color = "red"; response.style.border = "2px solid red"; } else { response.style.color = "orange"; response.style.border = "2px solid orange"; } response.style.display = "block"; } else { console.log(xhr.status); } }; xhr.send(); }
Un formulaire avec 3 input qui fonctionne whaho sa fait du bien quand sa marche !!! haha
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
11 févr. 2022 à 23:42
11 févr. 2022 à 23:42
À mon avis ça ne le fait pas en AJAX...
Je te conseille vraiment de faire ce que je t'ai indiqué
Je te conseille vraiment de faire ce que je t'ai indiqué
anthonyr_25
Messages postés
165
Date d'inscription
mercredi 5 janvier 2022
Statut
Membre
Dernière intervention
6 juillet 2022
6
>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
12 févr. 2022 à 22:13
12 févr. 2022 à 22:13
bha écoute sa donne l'effet escompter la page ne se refresh pas juste le formulaire et le msg est bien envoyer ...
avec ce que tu m'as indiqué sa ne marche pas ...
avec ce que tu m'as indiqué sa ne marche pas ...
11 févr. 2022 à 22:04
11 févr. 2022 à 22:17
11 févr. 2022 à 22:25
11 févr. 2022 à 22:33
Quand tu écrit une fonction, tu peux définir les paramètres que tu vas y envoyer
Dans cette fonction, on va donc devoir utiliser les deux paramètres nb1 et nb2
mais quand tu "appelles" la fonction .. le "nom" des variables peut être tout à faire différent .......
par exemple
Modifié le 11 févr. 2022 à 23:35
peut etre de ma fonction ajaxC