FORMULAIRE

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour,
Dans mon site j'ai crée un formulaire :

<form method="post" action="mailto:spamdv@hotmail.fr">
<div style="text-align: center;">
<input name="subject" value="Site-principal" type="hidden">
</div>
<table style="text-align: left; margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td style="text-align: left; font-family: Helvetica,Arial,sans-serif;">Nom :</td>
<td><input name="Nom" size="30" type="text"></td>
</tr>
<tr>
<td style="font-family: Helvetica,Arial,sans-serif;">Email:</td>
<td><input name="Mail" size="30" type="text"></td>
</tr>
<tr>
<td><span style="font-family: Helvetica,Arial,sans-serif;">Sujet :</span> </td>
<td>
<select name="subject" size="1">
<option value="----">Choisir dans la liste ci-dessous
</option>
<option value="PoPoint">Site allemand facile
</option>
<option value="Autre">Autre...
</option>
</select>
</td>
</tr>
<tr>
<td colspan="2"><br>
<span style="font-family: Helvetica,Arial,sans-serif;">
Message:</span><br>
<textarea cols="50" rows="6" name="Message"></textarea>
</td>
</tr>
</tbody>
</table>
<br>
<div style="text-align: center;"><a href="envoi.html"><input value="Envoyer" type="submit"></a>
</div>
</form>

Mon problème est que non seulement le code est un peu "bric a brac" mais à l'envoi, on ouvre une fenêtre outlook ! J'ai fait une recherche et j'ai compris qu'il fallait utiliser le PHP mais sinon j'ai rien compris. Je suis également allé sur
https://www.commentcamarche.net/contents/800-php-mail-et-fonctions-reseau
Si vous pouviez m'expliquer clairement le code à rajouter ou et comment.
Merci de votre aide !

6 réponses

  1. lulu
     
    salut,

    il faut mettre dans action la page ou se situe ton script

    exemple :

    <form method="post" action="contact.php"> 


    ensuite pour envoi du mail il faut utiliser la fonction mail()
    0
    1. Utilisateur anonyme
       
      Je suis un peu mou du bulbe ^^ reprenons : j'ajoute <form method="post" action="contact.php"> a la place de
      <form method="post" action="mailto:spamdv@hotmail.fr"> et apres comment on sait a quelle adresse mail l'envoyer ?

      Et peux-tu être plus précis sur
      "ensuite pour envoi du mail il faut utiliser la fonction mail()"
      ça veut dire quoi ? ou faut t'il mettre ce code et faut il le modifier ?

      en tous cas super merci pour ta réponse plutôt rapide !
      0
    2. Utilisateur anonyme
       
      j'ai regarder la video en 2 min mais elle m'a l'air bien expliqué. Je la regarderai attentivement demain. Merci beaucoup de tes réponses, je te donne des nouvelles demain et si quelque chose m'échappe encore je te demenderai
      Merci
      0
    3. Utilisateur anonyme
       
      Voila j'ai tout fait omme dans la video et la ils mettent :


      Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE or '$' in /mnt/136/sda/1/f/kiloo120/test/contact.php on line 4
      0
  2. lulu
     
    montre ton code tu as fais des erreur de syntax en le recopiant
    0
    1. Utilisateur anonyme
       
      oki alors j'ai revu tout ça au calme ce matin, je me suis arreté la :
      <?php

      if(isset($_POST) && isset($_POST['nom']) && isset($_POST['email']) && isset ($_POST['message'])){
      extract($_POST);
      if(!empty($nom) && !empty($email) && !empty($message)){
      echo $message;
      ;
      }
      ?>
      Jusqu'à la j'ai corrigé toutes mes fautes mais quand je lance sous fiefox pour tester mon code ils me mettent

      Parse error: syntax error, unexpected $end in /mnt/136/sda/1/f/site/test/contact.php on line 9

      J'ai pourtant bien recopié et ma ligne 9 est identique a celle de la video or dans la video, lorsqu'il corrige ses erreurs, le code fonctionne !
      Quelle est l'erreur de cette ligne ?
      Merci,

      PS j'ai aussi eut un probleme avec la ligne 7, dans la video c'est une parenthese qui est affichée mais quand je met une parenthèse ils me disent que la parenthese n'est pas attendue ici mais c'est ';' qui est attendu ^^

      Merci bcp !
      0
  3. lulu
     
    en ligne 7 c'est une accolade qu'il faut mettre et pas une parenthèse :

    <?php
    
    if(isset($_POST) && isset($_POST['nom']) && isset($_POST['email']) && isset ($_POST['message'])){
    extract($_POST);
    	if(!empty($nom) && !empty($email) && !empty($message)){
    	echo $message;
    	}
    }
    ?>  
    0
    1. Utilisateur anonyme
       
      On avance, doucement mais surement...
      La j'ai le code en entier

      <?php

      if(isset($_POST) && isset($_POST['nom']) && isset($_POST['email']) && isset ($_POST['message'])){
      extract($_POST);
      if(!empty($nom) && !empty($email) && !empty($message)){
      $destinataire="spamdv@hotmail.fr";
      $sujet="Formulare de contact";
      $msg="Une question est arrivée \n
      Nom : $nom \n
      Email : $email \n
      Message : $message";
      $entete="From: $nom \n Reply-To: $email";
      mail($destinataire,$sujet,$msg,$entete)
      }
      else{
      echo "Vous n'avez pas rempli tous les champs";
      }
      }
      ?>


      Le probleme c'est qu'ils mettent :


      Parse error: syntax error, unexpected '}' in /mnt/136/sda/1/f/kiloo120/test/contact.php on line 14

      Pourquoi ? dans la video, il en met pourtant ?
      Peux-tu me donner ton code sinon et je le copie colle, la je désespere ^^
      Merci
      0
  4. Alain_42 Messages postés 5413 Statut Membre 904
     
    il te manque le ; a la fin de cette ligne

    mail($destinataire,$sujet,$msg,$entete)

    il faut parfois regarder la ligne au dessus de celle indiquée, comme tu n'as pas mis de ; php considère les deux lignes (la 13 et la 14) comme une seule (la 14)
    0
    1. Utilisateur anonyme
       
      Alors la j'écris mon message et quand je click sur envoyer, j'ai une page blanche. je me suis alors dit : c'est normal y'a pas de
      echo="votre message a bien été envoyé !"

      Le problème c'est où le placer ?
      Sinon je ne comprend pas : j'ai beau avoir mis la bonne adresse le mail n'arrive pas ! ça fait maintenant 3 minutes que j'attends sans aucun mail ! l'adresse est pourtant bonne !

      C'est bien ligne 6 qu'il faut mettre
      $destinataire="monadresse@hotmail.fr";
      Si oui l'adresse est bonne ! pourquoi le message n'arrive t'il pas ?
      Merci !
      0
    2. Utilisateur anonyme
       
      Ah ! un autre probleme : quand je laisse des champs vides, aucun message ne s'affiche, j'ai pourtant bien mis le echo="blablabla" que je laisse des champs vides ou pas, page blanche et aucuns messages !
      Pourquoi ?
      Merci !
      0
    3. Utilisateur anonyme
       
      Bon j'ai travaillé sur ce formulaire toute la soirée et voila ou j'en suis :

      j'ai pêché un code que j'ai modifié... le voila :

      <?php

      if(isset($_POST) && isset($_POST['nom']) && isset($_POST['email']) && isset($_POST['message'])){
      $nom = htmlspecialchars($_POST['nom']);
      $message = htmlspecialchars(trim($_POST['message']));
      $email = htmlspecialchars($_POST['email']);
      #Verification de la validité de l'email#
      if(preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $email)) //si l'email est valide
      {



      if(!empty($nom) && !empty($email) && !empty($message)){
      $message=str_replace("\'","'",$message);
      $destinataire="spamdv@hotmail.fr";
      $sujet="Formulaire de contact";
      $message="Une nouvelle question est arrivée \n
      Nom : $nom \n
      Email : $email \n
      Message: $message";
      $entete="From: $nom \n Reply-To: $email";
      mail(utf8_decode($destinataire),utf8_decode($sujet),utf8_decode($message),utf8_decode($entete));
      $a= "<p>Le mail a bien été envoyé.</p>";
      }
      else{
      $erreur .= "<p>Veuillez remplir tous les champs.</p>";
      }

      }
      else{
      $erreur .= "<p>Votre adresse email est invalide.</p>";
      }

      }
      if(isset($a))

      {

      echo "<font color='green'>$a</font>";

      }
      if(isset($erreur))

      {

      echo "<font color='red'>$erreur</font>";

      }
      ?>

      <form action="<?php echo $_SERVER['PHP_SELF'];?>"method="post">
      <table><tr><td><label for="nom">Nom:</label></td><td><input type="text" name="nom" id="nom"/></td></tr><tr><td><label for="email">Email:</label></td><td><input type="text" name="email" id="email" /></td></tr><tr><td><label for="message">Message :</label></td><td><textarea name="message" cols="30" rows="15" id="message" ></textarea></td></tr><tr><td></td><td><input type="submit" value="Envoyer" /></td></tr></table>


      Quand j'insere ça dans une page vide, le formulaire marche à 1000% avec l'email qui arrive bien et tout !
      Maintenant quand je met ce code dans une page contenant d'autres choses (banniere et menu) la le formulaire n'envoi plus rien, le PHP est inopérationel ! pourquoi ce code marche tout seul et pas en compagnie d'autres choses ?
      0
    4. lulu
       
      ta oublie de fermer ta balise </form>.

      sinon mais un htmlentities devant $_SERVER['PHP_SELF'] ou met directement le lien de ta page
      0
    5. Utilisateur anonyme
       
      Lors d'un instant ça a marché mais apres j'ai modifié une police et paf !
      Expliquez moi une derniere fois ce qui cloche dans ce code : (Bon il est brouillon mais...)

      <?php if(isset($_POST) && isset($_POST['nom']) && isset($_POST['email']) && isset($_POST['message'])){ $nom = htmlspecialchars($_POST['nom']); $message = htmlspecialchars(trim($_POST['message'])); $email = htmlspecialchars($_POST['email']); #Verification de la validité de l'email# if(preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $email)) //si l'email est valide { if(!empty($nom) && !empty($email) && !empty($message)){ $message=str_replace("\'","'",$message); $destinataire="spamdv@hotmail.fr"; $sujet="Formulaire de contact"; $message="Une nouvelle question est arrivée \n Nom : $nom \n Email : $email \n Message: $message"; $entete="From: $nom \n Reply-To: $email"; mail(utf8_decode($destinataire),utf8_decode($sujet),utf8_decode($message),utf8_decode($entete)); $a= "<p>Le mail a bien été envoyé.</p>"; } else{ $erreur .= "<p>Veuillez remplir tous les champs.</p>"; } } else{ $erreur .= "<p>Votre adresse email est invalide.</p>"; } } if(isset($a)) { echo "<font color='green'>$a</font>"; } if(isset($erreur)) { echo "<font color='red'>$erreur</font>"; } ?>
      <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
      <table>
      <tbody>
      <tr>
      <td><label for="nom">Nom:</label></td>
      <td><input name="nom" id="nom" type="text"></td>
      </tr>
      <tr>
      <td><label for="email">Email:</label></td>
      <td><input name="email" id="email" type="text"></td>
      </tr>
      <tr>
      <td><label for="message">Message :</label></td>
      <td><textarea name="message" cols="30" rows="15" id="message"></textarea></td>
      </tr>
      <tr>
      <td></td>
      <td><input value="Envoyer" type="submit"></td>
      </tr>
      </tbody>
      </table>
      </form>



      Merci ! Je commençais a désespérer mais vous êtes la !
      Merci du temps et de l'attention que vous m'avez accordé !
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lulu
     
    tu peux mettre ton formulaire de contact ?
    0
  7. Alain_42 Messages postés 5413 Statut Membre 904
     
    pour avoir un état de l'envoi du mail il faut faire:

    ........
    $env_mail=mail($destinataire,$sujet,$msg,$entete) ;
    
    if($env_mail){
       echo 'mail envoyé !';
    }else{
       echo 'pb envoi mail !!';
    }
    
    .......
    
    0