Récuperer champ formulaire

JaiLaTine

Membre actif
16 Août 2010
450
11
Essonne
Bonjour,

Je souhaiterais récupérer plusieurs champs d'un formulaire et de les envoyer sur une adresse email.

Pour l'instant j'ai ça dans mon fichier php :

<?php
header('Location: index.html');
$formNom = $_POST['Nom'];
$formSocieté = $_POST['Societé'];
$formEmail = $_POST['Email'];
$formTelephone = $_POST['Telephone'];
$formMessage = $_POST['Message'];

$message = "$formNom, $formSocieté, $formEmail, $formTelephone, $formMessage" ;

if( mail('[email protected]','contact','$message') ) // j'ai bien entendu mis une adresse mail fausse pour l'exemple //
{
echo 'les informations ont bien été envoyé';
}

else{

echo 'une erreur est survenu lors de l\'envoi du message';

}
?>

Je recois bien un mail mais il n'apparait que $message
 
Dernière édition:
Salut

Un exemple vite fait :

Une page contact.php de ce style :
Bloc de code:
<form id="form1" name="form1" method="post" action="verifcontact.php">

<label><span>Nom :</span></label>    
<input type="text" name="usernom" value="" />
<br /><br />

<label><span>Societé :</span></label>    
<input type="text" name="usersociete" value="" />
<br /><br />

<label><span>Email :</span></label>    
<input type="text" name="usermail" value="" />
<br /><br />

<label><span>Téléphone :</span></label>    
<input type="text" name="userphone" value="" />
<br /><br />

<label><span>Message :</span></label>
<textarea rows="8" name="message"></textarea>
<br /><br />

<p>
<input type="Submit" value="Envoyer"  />
</p>

 </form>

Et une page verifcontact.php (<form id="form1" name="form1" method="post" action="verifcontact.php">) de ce style :
Bloc de code:
$nomcontact =$_POST['usernom'];
$societecontact =$_POST['usersociete'];
$mailcontact =$_POST['usermail'];
$phonecontact =$_POST['userphone'];
$messagecontact =$_POST['message'];


$sujet = 'MESSAGE DE '.$nomcontact;

$from  = "From:[COLOR="red"][email protected][/COLOR]\n"; 
$from .= "MIME-version: 1.0\n"; 
$from .= "Content-type: text/html; charset= iso-8859-1\n"; 


$message=' Mr '. nomcontact.'  de la société '. societecontact.' vous envoie ce message : <br /><br />'.$messagecontact.'. <br /><br />Voici son téléphone : '. phonecontact.'. <br /><br />Merci';


if( empty($nomcontact) || empty($societecontact) || empty($mailcontact) || empty($phonecontact) || empty($messagecontact) )
{
print ("<h2>Erreur</h2>");
print ("<p>Vous devez remplir tt les champs...</p>");
}
elseif(!preg_match('`^[[:alnum:]]([-_.]?[[:alnum:]])*@[[:alnum:]]([-_.]?[[:alnum:]])+\.([a-z]{2,4})$`',$mailcontact))
    {
    print ("<h2>Erreur</h2>");
    print ("<p>Votre mail ne semble pas correct</p>");
    }
    else{
	mail('[COLOR="red"][email protected][/COLOR]',$sujet,$message,$from); 
}

En bleu ton adresse.

Bon là c'est fait vite fait de tête, pas très bon exemple car aucune vérif (très légère sur le mail), pas d'antispam.... Mais l'idée est là.
 
Bonjour,

Je souhaiterais récupérer plusieurs champs d'un formulaire et de les envoyer sur une adresse email.

Pour l'instant j'ai ça dans mon fichier php :

<?php
...

if( mail('[email protected]','contact','$message') ) // j'ai bien entendu mis une adresse mail fausse pour l'exemple //

....
Ta variable $message est entre ' donc j'imagine que le problème vient de là.

Pour éviter la confusion plutôt que d'utiliser :
$message = "$formNom, $formSocieté, $formEmail, $formTelephone, $formMessage" ;

utilise plutôt la concatenation:

$message = $formNom.", ".$formSociete.", ".$formEmail.", ".$formTelephone.", ".$formMessage ;

Évite aussi les variables avec accents&#8230;
 
Ta variable $message est entre ' donc j'imagine que le problème vient de là.

Pour éviter la confusion plutôt que d'utiliser :
$message = "$formNom, $formSocieté, $formEmail, $formTelephone, $formMessage" ;

utilise plutôt la concatenation:

$message = $formNom.", ".$formSociete.", ".$formEmail.", ".$formTelephone.", ".$formMessage ;

Évite aussi les variables avec accents&#8230;

L'exemple que tu m'a filé ne marche pas j'ai une erreur de syntax sur cette ligne :
$message = "$formNom", "$formSociete", "$formEmail", "$formTelephone", "$formMessage" ;
 
Dernière édition:
Des formulaires en PHP tu vas en trouver des palanquées sur le web.
Je n'y connaît pas grand chose en Php mais j'utilise plusieurs formulaires sur mes sites, le dernier en date utilise un renvoi en fin de traitement, tout marche sans problème (vérification et validation en Javascript - jQuery), un exemple du traitement pour ce dernier :
Bloc de code:
<?
$nom= $HTTP_POST_VARS["nom"];
$prenom= $HTTP_POST_VARS["prenom"];
$societe= $HTTP_POST_VARS["societe"];
$telephone= $HTTP_POST_VARS["telephone"];
$email= $HTTP_POST_VARS["email"];
$pays= $HTTP_POST_VARS["pays"];
$commentaires= $HTTP_POST_VARS["commentaires"];

// message au vendeur
$adresse="[email protected]";

// titre du message : zone sujet
$sujet="Demande de contact";

// contenu du message
$corps ="Bonjour, une demande de contact vient d'être faite par : \n\n"; 
$corps .= "Nom : ".$nom." \nPrénom : ".$prenom." \nSociete : ".$societe." \nPays : ".$pays." \nTéléphone : ".$telephone." \n\n";
$corps .= "Adresse courriel : ".$email." \n\nCommentaires : ".$commentaires." \n";

// Création de l'entête du message
// cette entete contient l'email de l'expéditeur ainsi que l'email pour la réponse.
$entetes  = "From: www.tondomaine.com\n";// adresse de retour pour répondre
$entetes .= "Return-Path: \n"; // chemin de retour pour les erreurs
$entetes .= "bcc:[email protected]\n"; // adresse en copie carbone

// envoi du mail
mail ($adresse,$sujet,$corps,$entetes);

Header("Location: http://www.tondomaine.com/page-de-confirmation.html");

?>
 
Merci de l'exemple mais je préférais utiliser mon code qui est plus approprié a mon formulaire.

J'ai juste une erreur de syntax et je ne comprend pas ou :(

<?php
header('Location: index.html');
$formNom = $_POST['Nom'];
$formSociete = $_POST['Societe'];
$formEmail = $_POST['Email'];
$formTelephone = $_POST['Telephone'];
$formMessage = $_POST['Message'];

$message = "$formNom", "$formSociete", "$formEmail", "$formTelephone", "$formMessage" ;

if( mail('[email protected]','contact',$message) )
{
echo 'les informations ont bien été envoyé';
}

else{

echo 'une erreur est survenu lors de l\'envoi du message';
}
?>
Merci encore momo pour ton exemple ;)
 
Dernière édition:
$message = $formNom.", ".$formSociete.", ".$formEmail.", ".$formTelephone.", ".$formMessage ;

Tout est là comme Gz te l'as dit.

Tu as une erreur ici :

L'exemple que tu m'a filé ne marche pas j'ai une erreur de syntax sur cette ligne :
$message = "$formNom", "$formSociete", "$formEmail", "$formTelephone", "$formMessage" ;

Car tu as mal recopié le code, il faut utiliser la concatenation --> avec les points ., et tes guillemets sont mal placés...

Essaye l'exemple que je t'ai mis, il reprend les mêmes variables que les tiennes.
 
J'ai recopier exactement le code maintenant je reçois des virgules dans mon mail
 
Merci de l'exemple mais je préférais utiliser mon code qui est plus approprié a mon formulaire.
Bah un fichier de traitement ce personnalise, une fois que tu as compris où sont les variables, comment on les récupère, comment on les injecte dans le traitement d'envoi.

Effectivement les saisies sont entourées de points dans mon exemple (.$societe.), c'est sans doute là que ça merde chez toi.

Je ne connais pas le Php mais je sais grosso-modo me repérer sur l'essentiel, en plus les formulaires que je trouve sur le net sont toujours commentés, ce qui est bien pratique à l'usage… non ? :p ;)
 
Voici mon html :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Contactez nous</title>
<style type="text/css">
.arriere {
background-color: #FF0;
text-align: center;
}
#corps {
font-size: 100%;
background-color: #009;
height: 60%;
width: 60%;
margin-top: 0px;
margin-right: auto;
margin-bottom: 0px;
margin-left: auto;
padding-top: 15px;
padding-right: auto;
padding-bottom: auto;
padding-left: auto;
text-align: left;
left: auto;
top: 15px;
right: auto;
bottom: auto;
}
.formulaire {
background-color: #009;
color: #FFF;
text-decoration: none;
text-align: center;
margin-right: auto;
margin-left: auto;
}
</style>
<link href="SpryAssets/contacteznous.css" rel="stylesheet" type="text/css" />
<script src="SpryAssets/SpryMenuBar.js" type="text/javascript"></script>
<script src="SpryAssets/SpryValidationTextarea.js" type="text/javascript"></script>
<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css" />
<link href="SpryAssets/SpryValidationTextarea.css" rel="stylesheet" type="text/css" />
</head>

<body class="arriere">
<center>
<a href="Accueil.html"><img src="images/PELSS.bmp" alt="" width="260" height="100" /></a>
</center>
<br /><br />
<ul id="MenuBar1" class="MenuBarHorizontal">
<li><a href="Accueil.html">Page d'accueil</a></li>
<li><a href="#" class="MenuBarItemSubmenu">Entreprise</a>
<ul>
<li><a href="Entreprise_historique.html">Historique</a></li>
<li><a href="Entreprise_moyens.html">Moyens</a></li>
</ul>
</li>
<li><a href="#" class="MenuBarItemSubmenu">Activit&eacute;s</a>
<ul>
<li><a href="Activites_expertise.html">Expertise</a></li>
<li><a href="Activites_chantiers.html">Chantiers</a></li>
<li><a href="Activités_depannage.html">D&eacute;pannage</a></li>
<li><a href="Activites_ateliers.html">Ateliers</a></li>
</ul>
</li>
<li><a href="Galerie.html">Galerie</a></li>
<li><a href="#" class="MenuBarItemSubmenu">Contact</a>
<ul>
<li><a href="contact.html">Contact</a></li>
<li><a href="emploi.html">Emploi</a></li>
<li><a href="contacteznous.html">Contactez nous</a></li>
</ul>
</li>
<li><a href="nosclients.html">Nos clients</a></li>
</ul>
<p>&nbsp; </p>
<p>&nbsp;</p>
<div id="corps">
<form action="formulaire.php" method="post" enctype="multipart/form-data" name="form" class="formulaire" id="form">
<fieldset>
<p>Nom : </p>
<p><span id="sprytextarea2">
<label for="textarea2"></label>
<textarea name="textarea2" id="textarea2" cols="40" rows="1"></textarea>
<span class="textareaRequiredMsg">Une valeur est requise.</span></span></p>
<p>Societé :</p>
<p><span id="sprytextarea5">
<label for="textarea5"></label>
<textarea name="textarea5" id="textarea5" cols="40" rows="1"></textarea>
<span class="textareaRequiredMsg">Une valeur est requise.</span></span></p>
<p>Email :</p>
<p> <span id="sprytextarea1">
<label for="textarea1"></label>
<textarea name="textarea1" id="textarea1" cols="40" rows="1"></textarea>
<span class="textareaRequiredMsg">Une valeur est requise.</span></span></p>
<p>Telephone :</p>
<p><span id="sprytextarea3">
<label for="textarea3"></label>
<textarea name="textarea3" id="textarea3" cols="40" rows="1"></textarea>
<span class="textareaRequiredMsg">Une valeur est requise.</span></span></p>
<p>Message :</p>
<p><span id="sprytextarea4">
<label for="textarea4"></label>
<textarea name="textarea4" id="textarea4" cols="40" rows="10"></textarea>
<span class="textareaRequiredMsg">Une valeur est requise.</span></span></p>
<p>
<input name="monfichier" type="submit" id="button" value="Envoyer le fichier" />
</p>
<p>&nbsp; </p>
</fieldset>
</form>
<p>&nbsp;</p>
</div>
<p>&nbsp;</p>
<script type="text/javascript">
var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
var sprytextarea1 = new Spry.Widget.ValidationTextarea("sprytextarea1");
var sprytextarea2 = new Spry.Widget.ValidationTextarea("sprytextarea2");
var sprytextarea3 = new Spry.Widget.ValidationTextarea("sprytextarea3");
var sprytextarea4 = new Spry.Widget.ValidationTextarea("sprytextarea4");
var sprytextarea5 = new Spry.Widget.ValidationTextarea("sprytextarea5");
</script>
</body>
</html>
 
Le prends pas méchamment mais je pense que tu comprends pas grand chose à ce que tu fais.
les variables de ton code PHP:

Bloc de code:
$formNom = $_POST['Nom'];
$formSocieté = $_POST['Societé'];
$formEmail = $_POST['Email'];
$formTelephone = $_POST['Telephone'];
$formMessage = $_POST['Message'];

Prenons par exemple $_POST['Nom'] est en fait la valeur du champ de ton formulaire dont l'attribut "name" du champ est "Nom" or dans ton formulaire je n'en vois aucun.

Deux solutions, soit tu modifies le formulaire HTML en changeant les valeur des attribut "name" de tes textarea soit tu modifies l'index des $_POST que tu appelles par exemple pour Nom au lieu de $_POST['Nom'] tu devras utiliser $_POST['textarea2'].

Je te conseille tout de même la première solution car en l'état ton formulaire est difficilement compréhensible (en mettant de coté le mauvais niveau de code du formulaire avec des <labels> inutiles).

Je te conseille également de lire de la documentation sur les balises HTML de base ça t'aidera beaucoup pour la compréhension globale de ce que tu fais&#8230;

Bref, y a du boulot, bon courage&#8230;
 
Dernière édition:
Je le fais avec dreamweaver ça explique pourquoi j'ai du code inutile :heu: et les textarea sont générés a cause des Spry
 
Ouai malheureusement c'est la société ou je fais mon stage qui m'impose dreamweaver :(
 
Oui je sais mais je fais tout en graphique car ils sont pressé d'avoir leur site donc j'ai pas trop le temps de reprendre le code a chaque fois que je fais quelque chose en graphique.

Je vais essaye de reprendre ça a la fin de mon stage.
 
Je suis d'accord avec Gz...

Alors en gros :

Il faut que tu récupère tes champs comme cela $tavariable =$_POST['textarea1'];

Bloc de code:
$nomcontact =$_POST['textarea2'];
$societecontact =$_POST['textarea5'];
$mailcontact =$_POST['textarea1'];
$phonecontact =$_POST['textarea3'];
$messagecontact =$_POST['textarea4'];


$sujet = 'MESSAGE DE '.$nomcontact;

$from  = "From:[email protected]\n"; 
$from .= "MIME-version: 1.0\n"; 
$from .= "Content-type: text/html; charset= iso-8859-1\n"; 


$message=' Mr '.$nomcontact.'  de la société '.$societecontact.' vous envoie ce message : <br /><br />'.$messagecontact.'. <br /><br />Voici son téléphone : '.$phonecontact.'. <br /><br />Merci';


if( empty($nomcontact) || empty($societecontact) || empty($mailcontact) || empty($phonecontact) || empty($messagecontact) )
{
print ("<h2>Erreur</h2>");
print ("<p>Vous devez remplir tt les champs...</p>");
}
elseif(!preg_match('`^[[:alnum:]]([-_.]?[[:alnum:]])*@[[:alnum:]]([-_.]?[[:alnum:]])+\.([a-z]{2,4})$`',$mailcontact))
    {
    print ("<h2>Erreur</h2>");
    print ("<p>Votre mail ne semble pas correct</p>");
    }
    else{
	mail('[email protected]',$sujet,$message,$from); 
}
 
Dernière édition:
Je travaille moi aussi sur Dream et tout ce qui est formulaire, survol, effets javascript je le fais à la main en code, il faut oublier les modules de Dream c'est pourri côté code, non optimisé, on trouve quantité d'exemples de formulaires sur le web (sans parler des générateur en ligne), copier/coller dans ta page, un fichier de traitement et ça roule.

Je n'avais pas vu l'histoire de nom de champ mais c'est là que ça coince, ton traitement ne récupère pas les données de champs puisque tu ne les lui indique pas. :rolleyes:

C'est en forgeant&#8230; etc.

Bon courage. :cool:

PS : oublies les Spry assets c'est de la daube en javascript et ça fout la merde avec certaines librairies.