Je souhaite que mon formulaire de contact fonctionnent

Résolu/Fermé
julio299 Messages postés 2 Date d'inscription vendredi 8 avril 2022 Statut Membre Dernière intervention 9 avril 2022 - Modifié le 9 avril 2022 à 08:24
julio299 Messages postés 2 Date d'inscription vendredi 8 avril 2022 Statut Membre Dernière intervention 9 avril 2022 - 9 avril 2022 à 10:29
Bonjour,
je souhaite faire un site, j'ai codé, un formulaire de contact,
mais je ne sais pas comment faire pour que les choses écrit dans le tableau s'envoie par mail.
Saurez vous m'aider à coder quelque chose pour que le formulaire soit fonctionnel, merci.


mon code est :
// Comme nous voulons avoir accès à un nœud DOM,
// nous initialisons le script au chargement de la page.
window.addEventListener('load', function (){

  // Ces variables s'utilisent pour stocker les données du formulaire
  var text = document.getElementById("i1");
  var file = {
        dom    : document.getElementById("i2"),
        binary : null
      };

  // Nous utilisons l'API de FileReader pour accéder au contenu du fichier
  var reader = new FileReader();

  // Comme FileReader est asynchrone, stockons son résulata
  // quand il a fini de lire le fichier
  reader.addEventListener("load", function (){
    file.binary = reader.result;
  });

  // Au chargement de la page, si un fichier est déjà choisi, lisons‑le
  if(file.dom.files[0]) {
    reader.readAsBinaryString(file.dom.files[0]);
  }

  // Sinon, lisons le fichier une fois que l'utilisateur l'a sélectionné
  file.dom.addEventListener("change", function (){
    if(reader.readyState === FileReader.LOADING) {
      reader.abort();
    }

    reader.readAsBinaryString(file.dom.files[0]);
  });

  // sendData est notre fonction principale
  function sendData(){
    // S'il y a un fichier sélectionné, attendre sa lecture
    // Sinon, retarder l'exécution de la fonction
    if(!file.binary && file.dom.files.length > 0) {
      setTimeout(sendData, 10);
      return;
    }

    // Pour construire notre requête de données de formulaire en plusieurs parties
    // nous avons besoin d'une instance de XMLHttpRequest
    var XHR = new XMLHttpRequest();

    // Nous avons besoin d'un séparateur pour définir chaque partie de la requête
    var boundary = "blob";

    // Stockons le corps de la requête dans une chaîne littérale
    var data = "";

    // Ainsi, si l'utilisateur a sélectionné un fichier
    if (file.dom.files[0]) {
      // Lancer une nouvelle partie de la requête du corps
      data += "--" + boundary + "\r\n";

      // Décrivons là comme étant des données du formulaire
      data += 'content-disposition: form-data; '
      // Définissons le nom des données du formulaire
            + 'name="'         + file.dom.name          + '"; '
      // Fournissons le vrai nom du fichier
            + 'filename="'     + file.dom.files[0].name + '"\r\n';
      // et le type MIME du fichier
      data += 'Content-Type: ' + file.dom.files[0].type + '\r\n';

      // Il y a une ligne vide entre les métadonnées et les données
      data += '\r\n';

      // Ajoutons les données binaires à la requête du corps
      data += file.binary + '\r\n';
    }

    // C'est plus simple pour les données textuelles
    // Démarrons une nouvelle partie dans notre requête du corps
    data += "--" + boundary + "\r\n";

    // Disons que ce sont des données de formulaire et nommons les
    data += 'content-disposition: form-data; name="' + text.name + '"\r\n';
    // Il y a une ligne vide entre les métadonnées et les données
    data += '\r\n';

    // Ajoutons les données textuelles à la requête du corps
    data += text.value + "\r\n";

    // Ceci fait, "fermons" la requête du corps
    data += "--" + boundary + "--";

    // Définissons ce qui arrive en cas de succès pour la soumission des données
    XHR.addEventListener('load', function(event) {
      alert('Ouais ! Données expédiées et réponse chargée.');
    });

    // Définissons ce qui se passe en cas d'eerreur
    XHR.addEventListener('error', function(event) {
      alert('Oups! Quelque chose s\'est mal passé.');
    });

    // Configurons la requête
    XHR.open('POST', 'https://example.com/cors.php');

    // Ajoutons l'en-tête requise pour gèrer la requête POST des données
    // de formulaire en plusieurs parties
    XHR.setRequestHeader('Content-Type','multipart/form-data; boundary=' + boundary);

    // et finalement, expédions les données.
    XHR.send(data);
  }

  // Accéder au formulaire …
  var form = document.getElementById("myForm");

  // … pour prendre en charge l'événement soumission
  form.addEventListener('submit', function (event) {
    event.preventDefault();
    sendData();
  });
});

Copy to Clipboard

EDIT: Ajout des balises de code !



Configuration: Linux / Chrome 90.0.4430.85

1 réponse

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
9 avril 2022 à 08:29
Bonjour,

Tu nous parles de formulaire et de tableau ( et tu as posté dans le forum html ) ... mais tu ne nous montres aucun formulaire...ni aucun tableau...

Le code que tu nous partages est un code Javascript ... qui récupère des données depuis un fichier .. et qui, via AJAX, veut les envoyer à un script côté serveur.
Actuellement, il essaye de les envoyer dans le script qui se trouve : ici
https://example.com/cors.php

Je suppose que ce lien n'existe pas... et n'est pas à toi ...

Il te faut donc remplacer ce lien par un lien vers un fichier PHP à toi ....
Et dans ce script PHP, à toi de coder ce qu'il faut pour faire de l'envoi de mail ( tu trouveras des milliers d'exemples sur le net pour ça..)



1
julio299 Messages postés 2 Date d'inscription vendredi 8 avril 2022 Statut Membre Dernière intervention 9 avril 2022
9 avril 2022 à 10:29
bonjour, le code ne c'est pas mis en entier, la partie que j'ai mis est juste une parti que j'ai copier coller d'un site car je ne savais pas faire ça (envoyer par un formulaire une image par mail).
le code est:

<!DOCTYPE html>
<html>
<head>
<title>page formulaire et avis</title>
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, height=device-height, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
<link rel="stylesheet" type="text/css" href="styles.css">
<title> DÉveloppeurs</title>
<link rel="icon" type="image/jpg" sizes="140x80" href="logo.jpg">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" />
</head>
<body>
<?php
include("menu_deroulant.html");
?>

<!-- page -->
<div class="container">
<h1>Formulaire de contact</h1>
<form action="mailto:FSEmarcelpagnolserignan@gmail.com?subject=Formulaire et Avis Pour le FSE" name="envoi" method=POST enctype="text/plain">
<b>Nom : </b><input name="nom"size=50 maxlength=50><br>
<b>Prenom : </b><input name="PRENOM"size=50 maxlength=50><br>
<label for="sujet">Sujet</label>
<input type="text" id="sujet" name="sujet" list="l1" placeholder="L'objet de votre message" required
pattern="[Ii]nformation|[Dd]emande/question|[Pp]roblème|[Uu]rgence|[Ss]ans titre">
<datalist id="l1">
<option>Information</option>
<option>Demande/question</option>
<option>Problème</option>
<option>Urgence</option>
<option>Sans titre</option>
</datalist>
<label for="emailAddress">Email</label>
<input id="emailAddress" type="email" name="email" placeholder="Votre email">
<label for="subject">Message</label>
<textarea id="subject" name="subject" placeholder="Votre message" style="height:200px"></textarea>
<br>
Est-ce votre 1ère visite sur ce site ?
<br>
<input type="radio" name="visite" value="oui">
Oui -  
<input type="radio" name="visite" value="non">
Non  
<br><br>
Votre avis sur le site ?
<br>
<input type="radio" name="avis" value="tres bien">
Très Bien -  
<input type="radio" name="avis" value="bien">
Bien -  
<input type="radio" name="avis" value="moyen">
Moyen -  
<input type="radio" name="avis" value="Pas bien">
Pas bien<br>
<br>
<br>
<p>
<label for="i2">si vous avez besoins d'envoyer un fichier :</label>
<input id="i2" name="myFile" type="file">
</p>
<br>
<br>
<input type="submit" value="Envoyer" name="Envoyer">
<input type="reset" name="Submit" value="Effacer">
</form>
</div>

<style type="text/css">

body {font-family: Arial, Helvetica, sans-serif;
padding: 0px;}

input[type=text], textarea, input[type=email] {
width: 100%;
padding: 12px;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
margin-top: 6px;
margin-bottom: 16px;
margin-right: 0px;
margin-left: 0px;
resize: vertical;
}
label{margin-right: 0px;
margin-left: 0px;
width: 100%;}

input[type=submit] {
background-color: #1255a2;
color: white;
padding: 12px 20px;
border: none;
border-radius: 4px;
cursor: pointer;
}

input[type=reset] {
background-color: #1255a2;
color: white;
padding: 12px 20px;
border: none;
border-radius: 4px;
cursor: pointer;
}

input[type=reset]:hover {
background-color: #1872D9;
}

input[type=submit]:hover {
background-color: #1872D9;
}

.container {
/* Ajouter box-sizing */
box-sizing : border-box;
border-radius:5px;
background-color:#FFA9A5;
padding:20px;
width: 100%;
/* redéfinition 400 + 2*20 */
max-width: 440px;
margin:0 auto;
}
h1 {
color: #C9D6FF;
width: 100%;
}

</style>
<style type="text/css">
img:not(.MD1){
width: 550px;
height: 550px;
}

@media (max-width: 640px) {
  • {

box-sizing: border-box;
}

/* passer body (et tous les éléments de largeur fixe) en largeur automatique */

body {
width: auto;
margin: 0;
padding: 0;
}

/* fixer une largeur maximale de 100% aux éléments potentiellement problématiques */

img:not(.MD1),
table,
td,
blockquote,
code,
pre,
textarea,
input,
iframe,
object,
embed,
video {
max-width: 100%;
}

/* conserver le ratio des images */

img:not(.MD1){
height: auto;
}

/* gestion des mots longs */

textarea,
table,
td,
th,
code,
pre,
samp {
-webkit-hyphens: auto; /* césure propre */
-moz-hyphens: auto;
hyphens: auto;
word-wrap: break-word; /* passage à la ligne forcé */
}

code,
pre,
samp {
white-space: pre-wrap; /* passage à la ligne spécifique pour les éléments à châsse fixe */
}

/* Passer à une seule colonne (à appliquer aux éléments multi-colonnes) */

.element1,
.element2 {
float: none;
width: auto;
}

/* masquer les éléments superflus */

.hide_mobile {
display: none !important;
}

/* Un message personnalisé */

body:before {
content: "Version mobile du site";
display: block;
text-align: center;
font-style: italic;
color:
#777;
}
}
}
@media (max-device-width:768px) and (orientation: landscape) {
html {
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
}

</style>

<script type="text/javascript">window.addEventListener('load', function (){

// Ces variables s'utilisent pour stocker les données du formulaire
var text = document.getElementById("i1");
var file = {
dom : document.getElementById("i2"),
binary : null
};

// Nous utilisons l'API de FileReader pour accéder au contenu du fichier
var reader = new FileReader();

// Comme FileReader est asynchrone, stockons son résulata
// quand il a fini de lire le fichier
reader.addEventListener("load", function (){
file.binary = reader.result;
});

// Au chargement de la page, si un fichier est déjà choisi, lisons‑le
if(file.dom.files[0]) {
reader.readAsBinaryString(file.dom.files[0]);
}

// Sinon, lisons le fichier une fois que l'utilisateur l'a sélectionné
file.dom.addEventListener("change", function (){
if(reader.readyState === FileReader.LOADING) {
reader.abort();
}

reader.readAsBinaryString(file.dom.files[0]);
});

// sendData est notre fonction principale
function sendData(){
// S'il y a un fichier sélectionné, attendre sa lecture
// Sinon, retarder l'exécution de la fonction
if(!file.binary && file.dom.files.length > 0) {
setTimeout(sendData, 10);
return;
}

// Pour construire notre requête de données de formulaire en plusieurs parties
// nous avons besoin d'une instance de XMLHttpRequest
var XHR = new XMLHttpRequest();

// Nous avons besoin d'un séparateur pour définir chaque partie de la requête
var boundary = "blob";

// Stockons le corps de la requête dans une chaîne littérale
var data = "";

// Ainsi, si l'utilisateur a sélectionné un fichier
if (file.dom.files[0]) {
// Lancer une nouvelle partie de la requête du corps
data += "--" + boundary + "\r\n";

// Décrivons là comme étant des données du formulaire
data += 'content-disposition: form-data; '
// Définissons le nom des données du formulaire
+ 'name="' + file.dom.name + '"; '
// Fournissons le vrai nom du fichier
+ 'filename="' + file.dom.files[0].name + '"\r\n';
// et le type MIME du fichier
data += 'Content-Type: ' + file.dom.files[0].type + '\r\n';

// Il y a une ligne vide entre les métadonnées et les données
data += '\r\n';

// Ajoutons les données binaires à la requête du corps
data += file.binary + '\r\n';
}

// C'est plus simple pour les données textuelles
// Démarrons une nouvelle partie dans notre requête du corps
data += "--" + boundary + "\r\n";

// Disons que ce sont des données de formulaire et nommons les
data += 'content-disposition: form-data; name="' + text.name + '"\r\n';
// Il y a une ligne vide entre les métadonnées et les données
data += '\r\n';

// Ajoutons les données textuelles à la requête du corps
data += text.value + "\r\n";

// Ceci fait, "fermons" la requête du corps
data += "--" + boundary + "--";

// Définissons ce qui arrive en cas de succès pour la soumission des données
XHR.addEventListener('load', function(event) {
alert('Ouais ! Données expédiées et réponse chargée.');
});

// Définissons ce qui se passe en cas d'eerreur
XHR.addEventListener('error', function(event) {
alert('Oups! Quelque chose s\'est mal passé.');
});

// Configurons la requête
XHR.open('POST', 'https://example.com/cors.php');

// Ajoutons l'en-tête requise pour gèrer la requête POST des données
// de formulaire en plusieurs parties
XHR.setRequestHeader('Content-Type','multipart/form-data; boundary=' + boundary);

// et finalement, expédions les données.
XHR.send(data);
}

// Accéder au formulaire …
var form = document.getElementById("myForm");

// … pour prendre en charge l'événement soumission
form.addEventListener('submit', function (event) {
event.preventDefault();
sendData();
});
});</script>


<?php
include("footer.html");
?>

</body>
</html>
</body>
</html>
0