Je souhaite que mon formulaire de contact fonctionnent

Résolu
julio299 Messages postés 2 Statut Membre -  
julio299 Messages postés 2 Statut Membre -
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

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 833
     
    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
    1. julio299 Messages postés 2 Statut Membre
       
      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