Probleme fonction mail

Bonjour,

Je viens de faire un formulaire et je rencontre deux difficultés

la première :

<br>
<input name="femme" id="femme" type="checkbox">
<label for="femme">femme</label><br>
<input name="homme" id="homme" type="checkbox">
<label for="homme">homme</label></p>

et voila ce que je fais pour que ca le renvoie pr mail :

switch ($i) {
case "femme":
$msg .="La personne ayant répondu à ce questionnaire est une femme\n";
break;
case "homme":
$msg .="La personne ayant répondu à ce questionnaire est un homme\n";
break;

La deuxième c'est a partir d'une liste déroulante :

<select name="Note" id="Note">
<option value="Note0">0</option>
<option value="Note1">1</option>
<option value="Note2">2</option>
<option value="Note3">3</option>
<option value="Note4">4</option>
<option value="Note5">5</option>
<option value="Note6">6</option>
<option value="Note7">7</option>
<option value="Note8">8</option>
<option value="Note9">9</option>
<option value="Note10">10</option>
</select>

et la par contre je ne vois pas du tout ce que je doit faire pour renvoyer par mail pouvez vous m'aider svp?

Merci d'avance
Configuration: Windows XP
Internet Explorer 7.0

20 réponses

  • Votes
  • Date
  • Date décroissante
Résumé de la discussion

Ce guide résume la gestion d'un formulaire HTML comportant des cases à cocher pour le genre et une liste déroulante pour la note, puis leur envoi par mail via PHP. Plusieurs contributeurs préconisent d'utiliser des boutons radio lorsque seule une sélection est possible et de récupérer la valeur avec $_POST pour l'ajouter ensuite au message. Des conseils insistent sur la validation côté serveur et sur la cohérence des noms de variables (Note ou Note1) afin d'éviter les erreurs et d'afficher les informations pertinentes. Pour les listes déroulantes, il est préférable d'utiliser des valeurs numériques simples et de gérer les champs optionnels pour que l'envoi ne soit pas bloqué.

Bobot (l’IA à votre service)
  1. Salut

    J'ai pas saisie ou était le problème justement dans ton premier "problème"

    Pour le second je pense que tu veux savoir la note, dans ce cas dans le "value" au lieu de mettre "Note0" tu met juste 0 par exemple et tu le recup normalement si tu le passe en POST :

    $note = $_POST['Note'];
    $msg .= "La note est " . $Note;
    1. Bah oui j'ai pas pensé a ca juis bete!!!

      Par contre pour le premier problème qu'est ce que tu ne saisi pas je te dirais
      1. juste pour te tenir au courant ta solution

        $note = $_POST['Note'];
        $msg .= "La note est " . $Note;

        ca ne fonctionne pas c'est bizarre
        1. J'ai pas mis de majuscule au premier $note, j'ai pas fais attention

          Ben ton premier problème en fait il ce passe quoi, ça ne marche pas ? y a rien dans $msg ?
          1. rectification ta solution fonctionne très bien pardon

            Pour la première rien ne s'affiche dans mon mail en fait mais ca se passe que quand c'est des input en fait et je ne sais pas de quoi ca vient
            1. Dans ta variable $i tu est sur qu'il y a bien "Femme" ou "Homme" ? Vérifie avec des "echo"
              Idem pour la variable $msg, vérifie la avant l'envoi

          2. Je ne sais pas je suis étudiant en première année d'info donc je ne suis sur de rien lol

            Que me proposerait tu par rapport a mon code html?
            1. ben en fait, je pense que le mieu serai d'utiliser un bouton radio et pas checkbox, puisque quelqu'un peut etre soit femme soit homme mais pas les deux. sa donnerai quelque chose du genre

              HTML

              <input type=radio name=genre value=homme>
              <input type=radio name=genre value=femme>

              PHP

              $genre = $_POST['genre'];

              switch ($genre)
              {
              case "homme" : $msg .= "Un homme"; break;
              case "femme" : $msg .= "Une femme"; break;
              }

          3. petite question futile mais j'ai trop de mal

            $msg .= "La note pour l'assistance à domicile est " . $Note \n;

            Ca bloque pourquoi svp
            1. ton \n doit etre entre guillement ", il fais partit de la chaine

              $msg .= "La note pour l'assistance à domicile est " . $Note ."\n";
          4. Voila j'ai régler tout mes problèmes hors mis le fait de forcer les gens à remplir quelques champs pourrait tu me donner un exemple stp merci en tout cas
            1. pour vérifier si un champ est rempli ou pas tu teste la variable avec la fonction isset par exemple :

              if (isset($_POST['Champ']))
              {
              //Le champ est rempli tu peu envoyer le mail
              }
              else
              {
              //Le champ n'est pas rempli, retour au formulaire avec un message d'erreur par exemple...
              }
          5. et ca je le met dans la partie html ou dans la page de réponse en php?
            1. ça c'est du code php, donc dans ta page de réponse oui
          6. Ok j'ai un autre petit soucis c'est que mon formulaire répond très bien sous IE mais pas sous firefox aurais tu une idée pourquoi? stp
            1. Et par exemlpe pour la sécurité des champs peux tu me donner un exemple stp car je lutte

              ce serais avec ce code j'adapterais pour le reste

              <input maxlength="15" size="15" name="age">
              1. Pour les différences d'interprétation entre firefox et IE sa peut venir de pas mal de choses comme par exemple le fait de ne pas coder dans les normes W3C, en general en respectant cette norme ton site est sensé être identique sur tous les navigateurs mais c'est parfois un peu contraignant. Pour ton site la je peu pas vraiment dire sans voir le formulaire mais ce qui cloche c'est le HTML ou le CSS si tu en a.

                Pour la sécurité des champs avec ton exemple ça donnerai un truc comme ça :

                if (isset($_POST['age']))
                {
                //Le champ est rempli tu peu envoyer le mail
                }
                else
                {
                echo "<div align=center>Il faut remplir tous les champs du formulaire<br><br><a href='javascript:history.back();'>Retour</a></div>";
                }
            2. tiens voici mon php

              <?php $dest_mail = 'rsr.pcworld@gmail.com'; # Destinataire du mail
              $sujet = "Réponse au questionnaire RSR-pc-world-agence informatique";
              echo "<p>Votre réponse à ce questionnaire a bien été prise en compte. Nous vous remercions de votre participation. Aucune information relative à ce questionnaire ne sera divulguée.</p>";

              $msg .= "Une réponse au questionnaire a été faites\n\n";
              $genre = $_POST['genre'];
              $msg .="La personne ayant répondu à ce questionnaire est 1" . $genre . "\n";
              $msg .=" Son age : ($_POST[age]) \n" ;
              $msg .=" Son adresse mail est : ($_POST[mail]) \n" ;
              $msg .=" Sa région est : ($_POST[region]) \n" ;
              $msg .=" Sa ville est : ($_POST[ville]) \n" ;
              $provenance = $_POST['provenance'];
              $msg .=" Son ordinateur provient dune " . $provenance . "\n" ;
              $type = $_POST['type'];
              $msg .=" Elle possède un ordinateur de " . $type . "\n" ;
              $operateur = $_POST['operateur'];
              $msg .=" Elle est chez " . $operateur . "\n" ;
              $msg .=" Si elle vient de cocher autres alors cest chez : ($_POST[Autres2]) \n" ;
              $niveau = $_POST['niveau'];
              $msg .=" La personne se considère comme " . $niveau . "\n" ;
              $note = $_POST['Note'];
              $msg .= "La note pour l'assistance à domicile est " . $Note ."\n";
              $note1 = $_POST['Note1'];
              $msg .= "La note pour les formations à domicile est " . $Note1 ."\n";
              $note2 = $_POST['Note2'];
              $msg .= "La note pour les installations de matérielle soi meme est " . $Note2 . "\n";
              $note3 = $_POST['Note3'];
              $msg .= "La note pour les achats sur le net est " . $Note3 . "\n";
              $note5 = $_POST['Note5'];
              $msg .= "La note pour les formations des enfants est " . $Note4 . "\n";
              $note6 = $_POST['Note6'];
              $msg .= "La note pour les créations de site est " . $Note5 . "\n";
              if (mail($dest_mail, $sujet, $msg)) {
              echo "Mail envoyé";
              } else {
              echo "Echec envoi mail";
              }
              ?>
              1. Je n'ai pas de css et donc tu mettrait pour la sécurité le code avant ou après celui que je t'ai passé?
                1. <?PHP
                  if (isset($_POST['age']) && isset($_POST['mail']) && isset($_POST['region']) && isset($_POST['ville']))
                  {
                  // Les champs sont rempli donc on envoi le mail
                  $dest_mail = 'rsr.pcworld@gmail.com'; # Destinataire du mail
                  $sujet = "Réponse au questionnaire RSR-pc-world-agence informatique";
                  echo "<p>Votre réponse à ce questionnaire a bien été prise en compte. Nous vous remercions de votre participation. Aucune information relative à ce questionnaire ne sera divulguée.</p>";

                  $msg .= "Une réponse au questionnaire a été faites\n\n";
                  $genre = $_POST['genre'];
                  $msg .="La personne ayant répondu à ce questionnaire est 1" . $genre . "\n";
                  $msg .=" Son age : ($_POST[age]) \n" ;
                  $msg .=" Son adresse mail est : ($_POST[mail]) \n" ;
                  $msg .=" Sa région est : ($_POST[region]) \n" ;
                  $msg .=" Sa ville est : ($_POST[ville]) \n" ;
                  $provenance = $_POST['provenance'];
                  $msg .=" Son ordinateur provient dune " . $provenance . "\n" ;
                  $type = $_POST['type'];
                  $msg .=" Elle possède un ordinateur de " . $type . "\n" ;
                  $operateur = $_POST['operateur'];
                  $msg .=" Elle est chez " . $operateur . "\n" ;
                  $msg .=" Si elle vient de cocher autres alors cest chez : ($_POST[Autres2]) \n" ;
                  $niveau = $_POST['niveau'];
                  $msg .=" La personne se considère comme " . $niveau . "\n" ;
                  $note = $_POST['Note'];
                  $msg .= "La note pour l'assistance à domicile est " . $Note ."\n";
                  $note1 = $_POST['Note1'];
                  $msg .= "La note pour les formations à domicile est " . $Note1 ."\n";
                  $note2 = $_POST['Note2'];
                  $msg .= "La note pour les installations de matérielle soi meme est " . $Note2 . "\n";
                  $note3 = $_POST['Note3'];
                  $msg .= "La note pour les achats sur le net est " . $Note3 . "\n";
                  $note5 = $_POST['Note5'];
                  $msg .= "La note pour les formations des enfants est " . $Note4 . "\n";
                  $note6 = $_POST['Note6'];
                  $msg .= "La note pour les créations de site est " . $Note5 . "\n";
                  if (mail($dest_mail, $sujet, $msg)) {
                  echo "Mail envoyé";
                  } else {
                  echo "Echec envoi mail";
                  }
                  }
                  else
                  {
                  // Un ou plusieurs champs ne sont pas remplis donc on affiche un message d'erreur et un lien retour
                  echo "<div align=center>Il faut remplir tous les champs du formulaire<br><br><a href='javascript:history.back();'>Retour</a></div>";
                  }
                  ?>

                  Si je me suis pas planté c'est un truc comme ça
              2. Y faudrai que je voi ton formulaire coté HTML avec les bouton tout ça pour voir ce qui ce passe
                1. et en faite ton code n'est pas bon car il passe toujours
                  meme les si les champs ne sont pas remplis
                  1. ha bizzare j'ai testé chez moi sa marche

                    essai de remplacer la ligne du if

                    if (isset($_POST['age']) && isset($_POST['mail']) && isset($_POST['region']) && isset($_POST['ville']))

                    par

                    if ($_POST['age'] != "" && $_POST['mail'] != "" && $_POST['region'] != "" && $_POST['ville'] != "")
                2. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
                  <html><head>
                  <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>questionnaire.html</title></head>
                  <body>
                  <form method="post" action="questionnaire.php">
                  <p style="text-align: center;"><big style="text-decoration: underline;"><big><span style="font-weight: bold;">Questionnaire </span></big></big></p>
                  <p style="text-align: left;"></p>
                  <p style="text-align: left;"><big style="font-weight: bold;">Vous êtes :</big></p>
                  <p style="text-align: left;"><br>
                  <select name="genre" id="genre"><option value="femme">Femme</option><option value="homme">Homme</option></select>
                  </p>
                  <br>
                  <div style="text-align: left;"><big><big><span style="font-weight: bold;"><small><br>
                  Adresse E-Mail : (Facultatif)</small><br>
                  <br>
                  </span></big></big><big><big><span style="font-weight: bold;"><input maxlength="40" size="40" name="mail"></span></big></big><br>
                  <br>
                  <big style="font-weight: bold;">Votre âge ?
                  </big><br>
                  <br>
                  <input maxlength="15" size="15" name="age"><br>
                  <br>
                  <big>
                  <p class="MsoNormal"><span style="font-weight: bold;">Dans
                  quelle région de France habitez-vous ?</span> </p>
                  </big><br>
                  <big><input maxlength="15" size="15" name="region"></big><br>
                  <br>
                  <big>
                  </big>
                  <p style="font-weight: bold;" class="MsoNormal"><big>Dans
                  quelle ville résidez-vous ?</big></p>
                  <p class="MsoNormal"><big><input maxlength="15" size="15" name="ville"></big></p>
                  <p style="font-weight: bold;" class="MsoNormal"><big>Avez-vous
                  un ordinateur ? Si
                  oui préciser sa provenance</big></p>
                  <select name="provenance" id="provenance"><option value="boutiquedassemblage">Boutique d'assemblage</option><option value="grandesurface">Grandesurface</option></select>
                  <br>
                  <br>
                  <big><span style="font-weight: bold;">Quel
                  type d’ordinateur possédez-vous ?</span></big><big style="font-weight: bold; text-decoration: underline;">
                  </big><br>
                  <br>
                  <select name="type" id="type"><option value="bureau">Bureau</option><option value="portable">portable</option></select>
                  <br>
                  <br>
                  <p style="font-weight: bold;" class="MsoNormal"><big>Avez-vous
                  internet par
                  l’ADSL ? Si oui quel operateur ?</big></p>
                  <br>
                  <select name="operateur" id="operateur"><option value="orange">Orange</option><option value="neuf">Neuf</option><option value="sfr">SFR</option><option value="free">Free</option><option value="autres">Autres</option></select>
                  <br>
                  <br>
                  <big><span style="font-weight: bold;">Précisez
                  pour autre svp :</span></big>
                  <br>
                  <br>
                  <input maxlength="40" size="40" name="Autres2">
                  <p style="font-weight: bold;" class="MsoNormal"><big>Comment
                  vous considérez-vous en la matière ?</big></p>
                  <select name="niveau" id="niveau"><option value="debutant">Débutant</option><option value="intermediaire">Intermédiaire</option><option value="expert">Expert</option></select>
                  <br>
                  <br>
                  <div style="text-align: center;"><big><span style="font-weight: bold;">Pour cette nouvelle série de question,
                  vous devrez effectuer
                  une notation  entre
                  0 et 10 ce qui nous
                  permettra de juger les différents besoins de services de nôtre
                  clientèle.</span>
                  </big></div>
                  <p style="font-weight: bold;" class="MsoNormal"></p>
                  <p class="MsoListParagraph" style="text-indent: -18pt; font-weight: bold;"><big><span style=""><span style=""><span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"> 
                  </span></span></span>    Que
                  pensez-vous d’une
                  assistance à
                  domicile ?</big></p>
                  <select name="Note" id="Note"><option value="0">0</option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option></select>
                  <p class="MsoListParagraph" style="text-indent: -18pt; font-weight: bold;"></p>
                  <p style="font-weight: bold;" class="MsoNormal"><big>Seriez-vous
                  intéressés par des formations à domicile ?</big></p>
                  <select name="Note1" id="Note"><option value="0">0</option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option></select>
                  <p style="font-weight: bold;" class="MsoNormal"></p>
                  <p style="font-weight: bold;" class="MsoNormal"><big>Trouvez-vous
                  contraignant d’installer votre matériel
                  informatiques vous même ?</big></p>
                  <select name="Note2" id="Note"><option value="0">0</option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option></select>
                  <p style="font-weight: bold;" class="MsoNormal"></p>
                  <big style="font-weight: bold;"><span style="font-size: 11pt; line-height: 115%; font-family: "Calibri","sans-serif";"><big>Commanderiez-vous
                  des pièces informatiques par internet si vous en aviez
                  l’opportunité ?</big> </span><br>
                  <select name="Note3" id="Note"><option value="0">0</option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option></select>
                  <br>
                  <br>
                  <big><span style="font-size: 11pt; line-height: 115%; font-family: "Calibri","sans-serif";">Aimeriez-
                  vous que votre enfant bénéficie d’une formation informatique<span style="">  </span>à l’école dès son plus
                  jeunes âges
                  (Primaire) ?</span></big><br>
                  <select name="Note4" id="Note"><option value="0">0</option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option></select>
                  <br>
                  <big style="text-decoration: underline;"><br>
                  </big><big><span style="font-size: 11pt; line-height: 115%; font-family: "Calibri","sans-serif";">Avez-vous
                  déjà pensé à créer un site internet ? </span></big></big><br>
                  <select name="Note5" id="Note"><option value="0">0</option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option></select>
                  <br>
                  <br>
                  <div style="text-align: center;"><big><big><span style="font-weight: bold;"><a href="questionnaire.php"><input value="Valider" type="submit"></a>   
                         
                      </span></big></big><input value="annuler" type="reset">
                  </div>
                  </div>
                  </form>

                  </body></html>
                  1. pour mon code qui marchai pas j'ai repondu au dessus de ton dernier post, je sais pas si tu l'a lu on a post en même temps.

                    essai d'enlever le lien autour de ton bouton submit, il sert a rien puisque dans la balise <form> plus haut tu a déjà defini qu'il devai aller sur la page questionnaire.php
                3. Si j'ai essayer avec ton nouveau code et il ne fonctionne pas non plus
                  1. bon dans tout les cas on reprendra demain je vais me pioter merci et a demain