Page 1 sur 1

probleme recuperation variable de formulaire vers mail

Posté : 09 juil. 2007, 15:44
par Pierre M
Bonjour,

pour etre plus exact, ma variable, à la base vient de Flash qui est envoyée en POST vers un formulaire en PHP qui envoie un mail ensuite. Cette variable s'appelle $nomOffre. En faisant un echo, pas de souci, elle s'affiche bien sur le formulaire. Mais je souhaite la mettre dans le sujet du mail et là, rien.

J'ai testé un peu de tout pour régler le probleme.

Normalement, je devrais avoir une ligne de code equivalente à celle ci (ligne 104)
$subject = 'Offre : '.$_POST['nomOffre'].' Candidature de '.$_POST['prenom'].' '.$_POST['nom'];
Voici le code du formulaire en PHP :
<?php 
    $decompurl = pathinfo( $_SERVER['REQUEST_URI'] );
    $baseurl = $decompurl['basename'];
	
if ( substr_count( $baseurl, '?' ) === 0 ) {
?>
<!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=iso-8859-1" />
	<title>Formulaire de candidature</title>
	<style type="text/css" media="screen, projection"><!--

body
 {
	background-color: #FF9900;
}
body,td,th
 {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 12px;
}
form
{
	width: 612px;
	margin: 0 auto;
	text-align: center;
}
form *
{
	text-align: left;
}
fieldset
{
	border: 0;
}
legend
{
	font-weight: bold;
	text-indent: 150px;
}
div
{
	position: relative;
	margin: -45px 0 0 24px;
	float: right;
	width: 300px;
	padding: 5px 0;
}
div.left
{
	margin: 0;
	clear: both;
	float: left;
}
div.right
{
	margin: 10px 0 0 0;
	clear: both;
	float: right;
}
label
{
	display: block;
}
textarea
{
	width: 430px;
}
-->
	</style>
	<!--[if IE]><style type="text/css" media="screen">

legend
{
	text-indent: 90px;
	color: #000;
}
div
{
	margin-right: 20px;
}
div.right
{
	margin: 160px 36px 0 0;
}

	</style><![endif]-->
</head>

<body>

<?php
}


if ( isset( $_POST['submit'] ) ) {

///////////////////
// CONFIGURATION //
///////////////////

$to = '[email protected]' ; // Mettez ici, là ou les adresses emails ( Séparées d'une virgule ) auquels le mail doit être envoyé.
$subject = ' Candidature de '.$_POST['prenom'].' '.$_POST['nom'];	 // Mettez ici le sujet de votre mail
$format = 'html';  // Mettez ici le format de l'email, pour html mettez 'html', pour le format texte mettez 'texte'

//////////////////////////////////////
// Configuration de l'envoi du mail //
//////////////////////////////////////

$foncmail = 'mail'; // Si votre hébergeur permet la fonction mail mettez 'mail', sinon vous pouvez utiliser smtp en mettant 'smtp'

/////////////////////////////////////////////////////////////////////////////////////
// Configuration SMTP ( Si vous n'utilisez pas SMTP ne pas configurer ces champs ) //
/////////////////////////////////////////////////////////////////////////////////////


$hostsmtp = ''; // Mettez ici l'hôte SMTP par exemple 'smtp.free.fr'
$portsmtp = '25'; // S'il faut utiliser un autre port que le port 25 spécifiez le ici
$authsmtp = false; // Si le serveur demande une authentification laissez true, s'il n'y a pas besoin d'authentification mettez false et
                  // ignorez les champs suivant
$usersmtp = ''; // Mettez ici le login d'accés au serveur SMTP. Par exemple :  'toto'
$passmtp = ''; // Mettez ici votre mot de passe d'accés au serveur SMTP. Par exemple : 'Mon_mot_de_pass'


// Dans body vous avez le corps du mail, ici nous mettons les variables du champs commentaire $comment, 
// vous pouvez mettre bien entendu plusieurs variables avec du texte au format html ou texte selon votre choix.
// Attention ! Comme vous le voyez dans l'exemple, le texte doit être entre des Appostrophes , alors que les Variable 
// venant du formulaire doivent être en dehors et de la forme .$_POST['nom']. ( Ne pas oublier les points )
// Attention ! Si vous mettez une appostrophe dans le texte elle doit être précédée de \ Exemple :
// Si je veus écrire : J'y vais , il faut mettre : J\'y vais.

$body = '<html>
            <head>
		        <title>EXmail 1.1</title>
		    </head>
		    <body>
                 <strong>Nom : </strong>'.$_POST['nom'].'<br>
	             <strong>Prenom : </strong>'.$_POST['prenom'].'<br>
                 <strong>Date de naissance : </strong>'.$_POST['naissance'].'<br>
	             <strong>Situation maritale : </strong>'.$_POST['situation'].'<br>
				 <strong>Tel : </strong>'.$_POST['telephone'].'<br>
	             <strong>Email : </strong>'.$_POST['email'].'<br>
				 <strong>Code postal : </strong>'.$_POST['postal'].'<br>
	             <strong>Ville : </strong>'.$_POST['ville'].'<br>
				 <strong>Date inscription ANPE : </strong>'.$_POST['anpe'].'<br>
				 <strong>Poste recherché : </strong>'.$_POST['poste'].'<br>
				 <strong>Motivations : </strong>'.$_POST['motivations'].'<br>
		    </body>
		</html>';

///////////////////////////////////////////////
//        FIN DE LA CONFIGURATION            //
///////////////////////////////////////////////

function CheckEmail( $email )
{
  return ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.'@'.'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$',$email );

}

///////////////////
// CONFIGURATION //
///////////////////

// Si l'adresse email n'est pas valide, on met un message d'erreur

if( !CheckEmail( $_POST['email'] ) )
{
	$error[] = '<center><p class="erreur">Votre adresse Email n\'est pas valide !</p></center>';
}

// On vérifie que les champs obligatoires sont remplis, s'il n'est pas rempli on dirige vers un message d'erreur, pour vérifier d'autres champs
// Du formulaire que vous allez créer vous n'avez qu'à recopier les deux lignes si dessous et de remplacer la variable $_POST['nom'] par celle
// de la partie du formulaire que vous voulez rendre obligatoire. Ainsi que le message en html que vous voulez mettre en cas d'erreur.

if ( empty( $_POST['nom'] ) )
{
	$error[] = '<center><p class="erreur">Vous n\'avez pas mis votre nom !</p></center>';
}
if ( empty( $_POST['prenom'] ) )
{
	$error[] = '<center><p class="erreur">Vous n\'avez pas mis votre prénom !</p></center>';
}
if ( empty( $_POST['naissance'] ) )
{
	$error[] = '<center><p class="erreur">Vous n\'avez pas mis votre date de naissance !</p></center>';
}
if ( empty( $_POST['poste'] ) )
{
	$error[] = '<center><p class="erreur">Vous n\'avez pas mis le poste que vous recherchiez !</p></center>';
}
if ( empty( $_POST['motivations'] ) )
{
	$error[] = '<center><p class="erreur">Vous n\'avez pas mis vos motivations!</p></center>';
}

///////////////////////
// FIN CONFIGURATION //
///////////////////////

if ( isset( $_FILES['upload_localfile']['tmp_name'] ) and is_uploaded_file( $_FILES['upload_localfile']['tmp_name'] ) ) {

	$destination = dirname(__FILE__).'/upload/'.$_FILES['upload_localfile']['name'];
	if ( move_uploaded_file( $_FILES['upload_localfile']['tmp_name'], $destination ) ) {
	
	$uploadinfo = '<center><p class="erreur">Upload Réussi</p></center>';
	
	}
}
else {
	$error[] = '<center><p class="erreur">Pas de fichier joint ! <p></center>';
	$uploadinfo = '<center><p class="erreur">Pas de fichier joint ! <p></center>';

}
	
if ( !isset( $error ) or empty ( $error ) ) 

{
    $reqclass = dirname(__FILE__).'/class.phpmailer.php';
	require_once ( $reqclass );
	

           $mail = new PHPmailer();		
			  	  
            if ( $foncmail === 'mail' ) {
			      $mail->IsMail();
		    }
			elseif ( $foncmail === 'smtp' ) {
			  	  $mail->IsSMTP(); 												
			      $mail->Host = $hostsmtp;					
			      $mail->Port = $portsmtp;
			      $mail->SMTPAuth = $authsmtp;											
			      $mail->Username = $usersmtp;			
			      $mail->Password = $passmtp;
			}	
			if ( $format === 'html' ) {
	              $mail->IsHTML(true);
	        }
	        elseif ( $format === 'texte' ) {
	              $mail->IsHTML(false);
	        }
			$mail->From = $_POST['email'];
	        $mail->FromName = $_POST['nom'];
	        $mail->AddAddress( $to );
	        $mail->Subject = $subject;
	        $mail->Body = stripslashes( $body );
            if ( isset( $destination ) ){
	             $mail->AddAttachment( $destination );
            }
	        if(!$mail->Send()){
                echo '<center><p class="erreur">Erreur fonction mail() :</p></center>'; 
	            echo $mail->ErrorInfo;
	        }
	        else{	
	            echo $uploadinfo;
	            echo '<center><p class="erreur">Formulaire envoyé !</p></center>';
	        }
  
	        unset($mail);
			  
}
else {
	foreach ( $error as $errormsg ) {
	   echo $errormsg;
	}
	   echo '<center><p class="erreur">Le Formulaire n\'a pas été envoyé</p>
	        <p class="erreur">Veuillez recommencer !</p></center>';
}
if ( isset( $destination ) ){
    unlink( $destination );
}
}

if ( ( ( isset( $error ) or !empty ( $error ) ) and isset( $_POST['submit'] ) ) or  !isset( $_POST['submit'] ) )  {

/////////////////////////////////////////////////
//        Le code HTML du formulaire           //
/////////////////////////////////////////////////

?> 


<form  action="<?php $_SERVER['REQUEST_URI'] ?>" method="post" enctype="multipart/form-data">
<fieldset>
		<legend><?php echo 'Offre : '.$_POST['nomOffre'].'<br>'?></legend>
		<div class="left">
			<label for="nom">Nom :</label>
			<input type="text" id="nom" name="nom" />
		</div>
		<div>
			<label for="prenom">Prénom :</label>
			<input type="text" id="prenom" name="prenom" />
		</div>
		<div class="left">
			<label for="naissance">Date de naissance :</label>
			<input name="naissance" id="naissance" type="text" value="00/00/00" size="8" maxlength="8" />
		</div>
		<div>
			<label for="situation">Situation maritale :</label>
			<input type="text" id="situation" name="situation" />
		</div>
		<div class="left">
			<label for="telephone">Tél :</label>
			<input id="telephone" name="telephone" type="text" size="10" />
		</div>
		<div>
			<label for="email">Email :</label>
			<input type="text" id="email" name="email" />
		</div>
		<div class="left">
			<label for="postal">CP :</label>
			<input id="postal" name="postal" type="text" size="5" />
		</div>
		<div>
			<label for="ville">Ville :</label>
			<input type="text" id="ville" name="ville" />
		</div>
		<div class="left">
			<label for="anpe">Inscription ANPE :</label>
			<input id="anpe" name="anpe" type="text" value="00/00/00" size="8" maxlength="8" />
		</div>
		<div>
			<label for="poste">Poste recherch&eacute; :</label>
			<input type="text" id="poste" name="poste" />
		</div>
		<div class="left">
			<label for="upload_localfile">Joindre CV :</label>
			<input id="upload_localfile" name="upload_localfile" type="file" />
		</div>
		<div class="left">
			<label for="motivations">Motivations :</label>
			<textarea name="motivations" id="motivations" cols="59" rows="5"></textarea>
		</div>
		<div class="right">
			<input type="reset" name="reset" value="Effacer" />
			<input type="submit" name="submit" value="Envoyer" />
		</div>
	</fieldset>
</form>
<?php 

/////////////////////////////////////////////////
//       Fin du code HTML du formulaire        //
/////////////////////////////////////////////////

} 
if ( substr_count( $baseurl, '?' ) === 0 )  {
?>
</body>
</html>
<?php 
}
?>

toujours pas de réponse ?

Posté : 10 juil. 2007, 13:10
par Pierre M
Bonjour,

je me suis peut etre mal exprimé au sujet de mon probleme... lol
Cependant, j'ai une alternative si personne ne trouve la reponse à mon probleme mais cela en pose un autre :

j'ai remarqué que je n'ai pas de probleme à récuperer la variable de Flash et que de l'autre coté j'arrive à envoyer les variables correspondants aux champs de texte du formulaire. Je pourrai donc créér un champs de texte "intitulé offre", récupérant la variable de Flash donc l'afficher et l'envoyer apres dans le mail comme les autres.
Mais je ne sais pas comment le faire : recuperer une variable POST et l'afficher dans un champs de texte HTML

Merci

Posté : 10 juil. 2007, 13:55
par Ryle
ben disons qu'on a du mal à voir d'où peut provenir ton problème... il n'y a aucune raison que la variable soit définie et apparaisse à la fin de ton script, et qu'elle n'apparaisse pas lorsque tu la mets dans ta variable sujet.

Si jamais tu remplaces ton objet ainsi et que tu affiches le résultat, qu'obtiens tu ?
$subject = 'Offre : '.$_POST['nomOffre'].' Candidature de '.$_POST['prenom'].' '.$_POST['nom']; 
echo $subject;
Tu peux également le vérifier ici :
            $mail->From = $_POST['email']; 
            $mail->FromName = $_POST['nom']; 
            $mail->AddAddress( $to ); 
            $mail->Subject = $subject; 
  echo $mail->Subject;
Mais y a vraiment aucune raison que tu le perdes en cours de route...

Posté : 10 juil. 2007, 14:11
par Pierre M
Merci de ton interet !

Alors, c'est bien ça qui est incompréhensible, ta proposition, c'est ce que j'avais fais en premier et bien sur nada.
pour le test avec echo, je n'ai rien qui s'affiche !

comme tu le dis, à priori pourquoi la variable ne serait plus là...

Posté : 10 juil. 2007, 14:58
par Ryle
J'ai peut être une explication..... :)

Lorsque tu arrives sur cette page la première fois, tu arrives despuis un formulaire qui t'envoi ici en méthode POST et passe le paramètre 'nomOffre' je suppose ?

Ce n'est qu'ensuite que tu valides et que renvoi les données du formulaire pour l'envoi de mail. Hors lors de cette "seconde" validation, il n'y a pas de champ 'nomOffre' et tu perds cette valeur dans $_POST :)

Il te faudrait donc ajouter un champ hidden dans ton formulaire, qui contiendrait la valeur récupérée du premier formulaire :
<input type="hidden" name="nomOffre" value="<?php echo $_POST['nomOffre']; ?>" />

Posté : 10 juil. 2007, 15:41
par Pierre M
Ca fonctionne, bien vu !
je pensais qu'il "gardait" la variable venant de Flash en memoire... et ben non !

Merci beaucoup !

Je ne sais pas comment on fait pour mettre [résolu] pour mon post du forum

Posté : 10 juil. 2007, 16:09
par Ryle
En fait, il n'y a que $_SESSION (et naturellement $_COOKIE qui correspond aux cookies chez l'utilisateur) qui soit conservé d'une page à l'autre (à condition que la session soit démarrée avec session_start()). Toutes les autres variables sont réinitialisée lors du changement ou rechargement de la page :)

Pour ajouter le tag [Résolu], il te faut avoir posté le 1er message en tant que membre (inscrit et identifié). Je le rajoute pour toi ce coup-ci, et te laisse aller t'inscrire pour les prochains ;)

Posté : 10 juil. 2007, 16:15
par Invité
yes !
inscription de suite