formulaire PHP

WRInaute discret
Bonjour,

Jusqu'à présent je codais mes formulaires en HTML mais on m'a conseillé de les faire en PHP.

Alors voilà 2 jours que je fais des tests et des tests et que je n'arrive pas à faire fonctionner mon formulaire.

Je suis vraiment découragé alors est-ce que quelqu'un aurait la gentillesse de me donner le début du code PHP de mon formulaire :

Code:
<form action="envoi.php" method=post >

<table style="border:0">
<tr>
<td style="text-align:left">Raison_sociale  </td>
<td><input type="text" name="raison_sociale"></td>
</tr>
<tr>
<td style="text-align:left">Nom </td>
<td><input type="text" name="nom"></td>
</tr>
<tr>
<td style="text-align:left">Prénom  </td>
<td><input type="text" name="prénom"></td>
</tr>
<tr>
<td style="text-align:left">Adresse </td>
<td><input type="text" name="adresse"></td>
</tr>
<tr>
<td style="text-align:left">Téléphone : </td>
<td><input type="text" name="téléphone"></td>
</tr>
<tr>
<td style="text-align:left">E-Mail  </td>
<td><input type="text" name="email"></td>
</tr>
<td style="text-align:left">
</table>

Par avance merci.
 
WRInaute impliqué
Peut-être le
Code:
method=post
qui doit devenir
Code:
method="post"

Sinon quels sont les problèmes? Et que contient le fichier envoi.php?
 
WRInaute discret
As-tu créé la page envoie.php pour récupérer ton formulaire ? Vu comme cela il a l'air bon, hormis POST que tu n'as pas mis entre guillemets. Ta page porte bien l'extension PHP ?
 
WRInaute accro
$contenu="Raison_sociale : ".$_POST['Raison_sociale']."<br/> Nom :".$_POST['nom']."<br/> Prénom : ".$_POST['prenom']." (etc...)";

et tu maile le contenu :-)

dis nous ou tu coinces

ps : post sans guillement ca marche, c est pas beau mais ca marche :-)
 
WRInaute discret
Merci à tous de vos réponses rapides.

En fait, j'avais 2 fichiers :

1 fichier "contact.html" dans lequel il y a le formulaire
1 fichier "envoi.php" que j'ai détrui tellement j'avais les boules depuis 2 jours.
 
WRInaute discret
Je veux tout recommencer à zéro avec de bonnes bases parce que je crois que j'ai voulu aller trop vite en prenant des informations sur le web et maintenant je suis complètement perdu!!
 
WRInaute accro
en parlant de base, sais tu recuperer une variable en php ? sais tu créer une chaine de caracteres constitué de textes et variables php ? et sais tu envoyer un mail en php ?
 
WRInaute discret
Oui ça , "$contenu="Raison_sociale : ".$_POST['Raison_sociale']."<br/> Nom :".$_POST['nom']."<br/> Prénom : ".$_POST['prenom']." (etc...)"; ce sont des variables.

Chaîne de caractères ?

Non je ne sais récupérer un mail en php!!

Comme je l'ai dit dans mon précédent message j'ai voulu apprendre trop de chose en même temps et maintenant je suis dégoûté du PHP!!
 
WRInaute occasionnel
Ce code :
Code:
<?php
$contenu="Raison_sociale : ".$_POST['raison_sociale']."<br/> Nom :".$_POST['nom']."<br/> Prénom : ".$_POST['prenom']." (etc...)";
mail( "ton_adresse@example.com", "L'objet du message", $contenu );
?>
te permettra d'envoyer un mail à ton_adresse@example.com.
Il contiendra les infos de ton formulaire.
La doc pour envoyer un mail en php : http://fr.php.net/manual/fr/function.mail.php
le $_POST['raison_sociale'] et les autres sont les valeurs rentrées par l'utilisateur dans ton formulaire.
 
WRInaute discret
Merci je commence à comprendre car vos explications sont courtes et claires!

Maintenant si je désire rajouter dans mon formulaire des boutons type="radio" pour obtenir ceci :

demande de devis pour

° peinture
° tapisserie
° moquette

et également un textarea pour les commentaires, comment faire pour récupérer les infos en php ?
 
WRInaute discret
Un petit bout de code...


Code:
<? function sendMail($mFrom,$mTo,$sujet,$body) {
   // l'émetteur
   $tete = "From: ".$mFrom."\n";
   $tete .= "Reply-To: ".$mFrom."\n";
   return mail($mTo,$sujet,$body,$tete);
}

 // SI LE FORM A ETE POSTE
if(!empty($_POST["Email"])) {

   $temp="";
   while (list($truc, $val) = each($HTTP_POST_VARS))
      $temp .= $truc." : ".$val."\n\n";
   $temp = stripslashes($temp);


   $ladresse = "tonadresse";

   
   if(sendmail($_POST["Email"],$ladresse,"Formulaire du site",$temp)) {  ?><?
      echo "Le formulaire a bien &eacute;t&eacute; envoy&eacute; !<br>Merci de nous avoir contact&eacute;";
   } else {
      echo "<font color=red>Impossible d'envoyer le formulaire !</font>";
   }


} else { 

// ON AFFICHE LE FORMULAIRE ?>
              <script language="JavaScript">
      // Teste si le mail a une forme correcte
      function checkmail(email) {
         var reg = /^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,4}$/
         return (reg.exec(email)!=null)
      }
      // Teste le contenu des champs du form avant submit
      function test(nom,mail) {
         if(nom.value=="") {
            alert("Indiquez votre nom !"); nom.focus(); return false;
         } else if(!checkmail(mail.value)) {
            alert("Email incorrect !"); mail.focus(); return false;
         }
         return true;
      }
      </script>
              <form method="post" onsubmit="return test(this.Nom,this.Email)">
                        <input name="Nom"  size="70">
                        <input name="Email"  size="70">
                        <textarea name="Message" cols=60 rows=10 wrap=virtual></textarea>                   
                  <input type="submit" value="Envoyer le formulaire">
                          <input type="hidden" name="IP" value="<?echo $REMOTE_ADDR?>">
                </form>

<? } ?>
 
WRInaute discret
Merci magicien, j'ai un peu de mal à comprendre tout ton script mais en tous cas il va me servir.

Les variables $contenu="Raison_sociale : ".$_POST['raison_sociale']."<br/> Nom :".$_POST['nom']."<br/> Prénom : ".$_POST['prenom']." (etc...)"; doivent être insérées au début du script ?
 
WRInaute impliqué
Non pas obligatoirement, mais avant le echo qui servira a afficher cette variable, sinon pour plus de clarté je propose cela:
Code:
$raison_sociale = $_POST['raison_sociale'];
$nom = $_POST[['nom'];
$prenom = $_POST['prenom'];

echo 'Votre nom: '.$nom.'<br/>Votre prénom '.$prenom.'<br/>Votre raison sociale'.$raison_sociale;
 
WRInaute discret
Voilà à quoi ressemble mon script :

Code:
	<?php
	
mail( "mon_adresse@wanadoo.fr", "demande de devis", $contenu ); 

$contenu=
"Raison_sociale : "
.$_POST['Raison_sociale']."
<br/> 
Nom :".$_POST['nom'].
"<br/> 
Prénom : ".$_POST['prenom']." 
"<br/>
Adresse :".$_POST['adresse']." 
"<br/>
Telephone " : $_POST['telephone']."
"<br/>
Email ": $_POST['email']."

echo 'Votre nom: '.$nom.'<br/>Votre prénom '.$prenom.'<br/>Votre raison sociale'.$raison_sociale; 'Votre adresse: '.$adresse.'<br/>;'Votre telephone: '.$telephone.'<br/>;'Votre email: '.$email.'<br/>


<? function sendMail($mFrom,$mTo,$sujet,$body) { 
   // l'émetteur 
   $tete = "From: ".$mFrom."\n"; 
   $tete .= "Reply-To: ".$mFrom."\n"; 
   return mail($mTo,$sujet,$body,$tete); 
} 

 // SI LE FORM A ETE POSTE 
if(!empty($_POST["Email"])) { 

   $temp=""; 
   while (list($truc, $val) = each($HTTP_POST_VARS)) 
      $temp .= $truc." : ".$val."\n\n"; 
   $temp = stripslashes($temp); 


   $ladresse = "mon_adresse@wanadoo.fr"; 

    
   if(@sendmail($_POST["Email"],$ladresse,"Formulaire du site",$temp)) {  ?><? 
      echo "Le formulaire a bien &eacute;t&eacute; envoy&eacute; !<br>Merci de nous avoir contact&eacute;"; 
   } else { 
      echo "<font color=red>Impossible d'envoyer le formulaire !</font>"; 
   } 


} else { 

// ON AFFICHE LE FORMULAIRE ?> 
              <script language="JavaScript"> 
      // Teste si le mail a une forme correcte 
      function checkmail(email) { 
         var reg = /^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,4}$/ 
         return (reg.exec(email)!=null) 
      } 
      // Teste le contenu des champs du form avant submit 
      function test(nom,mail) { 
         if(nom.value=="") { 
            alert("Indiquez votre nom !"); nom.focus(); return false; 
         } else if(!checkmail(mail.value)) { 
            alert("Email incorrect !"); mail.focus(); return false; 
         } 
         return true; 
      } 
      </script> 
              <form method="post" onsubmit="return test(this.Nom,this.Email)"> 
                        <input name="Nom"  size="70"> 
                        <input name="Email"  size="70"> 
                        <textarea name="Message" cols=60 rows=10 wrap=virtual></textarea>                    
                  <input type="submit" value="Envoyer le formulaire"> 
                          <input type="hidden" name="IP" value="<?echo $REMOTE_ADDR?>&quot;&gt; 
                </form> 

<? } ?>


Maintenant si je désire rajouter dans mon formulaire des boutons type="radio" pour obtenir ceci :

demande de devis pour

° peinture
° tapisserie
° moquette

et également un textarea pour les commentaires, comment faire pour récupérer les infos en php ?


Par avance merci.
 
WRInaute discret
Hum... ca ne marchera pas...
L'envoi du mail doit être dans la condition du test si le champ E-mail a été renseigné...
Le code est mélangé et les fonctions ne sont pas appelées correctement.
J'ai mis un code tout fait que tu glisse dans une page et tu ne change que le formulaire.
Dans mon code, le champ d'e-mail est testé en javascript (ne pas changer le nom du champ dans le formulaire.) les autres sont modifiables.

Bon courage.
 
WRInaute discret
Ceci devrait marcher à coller tel quel dans ta page :

Code:
<? function sendMail($mFrom,$mTo,$sujet,$body) { 
   // l'émetteur 
   $tete = "From: ".$mFrom."\n"; 
   $tete .= "Reply-To: ".$mFrom."\n"; 
   return mail($mTo,$sujet,$body,$tete); 
} 

 // SI LE FORM A ETE POSTE 
if(!empty($_POST["Email"])) { 

   $temp=""; 
   while (list($truc, $val) = each($HTTP_POST_VARS)) 
      $temp .= $truc." : ".$val."\n\n"; 
   $temp = stripslashes($temp); 


   $ladresse = "tonadresse"; 

    
   if(sendmail($_POST["Email"],$ladresse,"Formulaire du site",$temp)) {  ?><? 
      echo "Le formulaire a bien &eacute;t&eacute; envoy&eacute; !<br>Merci de nous avoir contact&eacute;"; 
   } else { 
      echo "<font color=red>Impossible d'envoyer le formulaire !</font>"; 
   } 


} else { 

// ON AFFICHE LE FORMULAIRE ?> 
              <script language="JavaScript"> 
      // Teste si le mail a une forme correcte 
      function checkmail(email) { 
         var reg = /^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,4}$/ 
         return (reg.exec(email)!=null) 
      } 
      // Teste le contenu des champs du form avant submit 
      function test(nom,mail) { 
         if(nom.value=="") { 
            alert("Indiquez votre nom !"); nom.focus(); return false; 
         } else if(!checkmail(mail.value)) { 
            alert("Email incorrect !"); mail.focus(); return false; 
         } 
         return true; 
      } 
      </script> 
              <form method="post" onsubmit="return test(this.Nom,this.Email)"> 
 <input type="submit" value="Envoyer le formulaire"> 
<table style="border:0"> 
<tr> 
<td style="text-align:left">Raison_sociale  </td> 
<td><input type="text" name="raison_sociale"></td> 
</tr> 
<tr> 
<td style="text-align:left">Nom </td> 
<td><input type="text" name="nom"></td> 
</tr> 
<tr> 
<td style="text-align:left">Prénom  </td> 
<td><input type="text" name="prénom"></td> 
</tr> 
<tr> 
<td style="text-align:left">Adresse </td> 
<td><input type="text" name="adresse"></td> 
</tr> 
<tr> 
<td style="text-align:left">Téléphone : </td> 
<td><input type="text" name="téléphone"></td> 
</tr> 
<tr> 
<td style="text-align:left">E-Mail  </td> 
<td><input type="text" name="Email"></td> 
</tr> 
<td style="text-align:left"> 
</table> 
</form> 

<? } ?>
 
WRInaute discret
pour un choix tu peux utiliser :
Code:
<input type="checkbox" name="choice[]" value="peinture" checked="checked" /> peinture
<input type="checkbox" name="choice[]" value="tapisserie" /> tapisserie
<input type="checkbox" name="choice[]" value="moquette" /> moquette
pour choice tu peux mettre choicedevis par exemple comme ça si tu à plusieurs autre choix à proposer à tes visiteurs tu peux en faire plusieurs (choicedevis, choiceinfo)

pour les radios simple à multi choix
Code:
<input type="radio" name="group1" value="1">
<input type="radio" name="group1" value="2" checked>
<input type="radio" name="group1" value="3">

pour les commentaires
Code:
commentaire :<br />
<textarea rows="7" name="commentaires" cols="24"></textarea><br />
pour les récupérer c'est pareil que pour le reste.
 
WRInaute discret
Merci de vos réponses.

Donc là si je saisis le script dans la même page que mon formulaire il faut que je change l'extension de ma page "contact.html" en "contact.php" ?
 
WRInaute discret
si je fais simplement comme ça vous pensez que ça va marcher ?

Code:
	<?php
	
mail( "mon_adresse@wanadoo.fr", "demande de devis", $contenu ); 

$contenu=
"Raison_sociale : "
.$_POST['Raison_sociale']."
<br/> 
Nom :".$_POST['nom'].
"<br/> 
Prénom : ".$_POST['prenom']." 
"<br/>
Adresse :".$_POST['adresse']." 
"<br/>
Telephone " : $_POST['telephone']."
"<br/>
Email ": $_POST['email']."
"<br/>
Peinture ": $_POST['peinture']."
"<br/>
Tapisserie ": $_POST['tapisserie']."
"<br/>
Moquette ": $_POST['moquette']."
"<br/>
Commentaires ": $_POST['commentaires']."

echo 'Votre nom: '.$nom.'<br/>Votre prénom '.$prenom.'<br/>Votre raison sociale'.$raison_sociale; 'Votre adresse: '.$adresse.'<br/>;'Votre telephone: '.$telephone.'<br/>;'Votre email: '.$email.'<br/>;'Peinture: '.$peinture.'<br/>;'Tapisserie: '.$tapisserie.'<br/>;'Moquette: '.$moquette.'<br/>'Commentaires: '.$commentaires.'<br/>



 ?>

Comme ça je conserve mon fichier "contact.html" dans lequel je mettrais en haut du formulaire action: "envoi.php"
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut