[PHP] envoie de mail par formulaire

Résolu
Utilisateur anonyme -  
Xil Messages postés 351 Statut Membre -
Bonjour,

Voila je dois faire un formulaire qui envoie des mails.
il y a des input. Dans ces input, il y en a un qui est à choix multiple.

J'arrive à tout envoyer correctement sauf celui qui est a choix multiple.
Pourriez-vous m'aider car je viens de passer ma journée dessus et je commence à désespérer.

Merci d'avance.

Le mail est envoyé sous la forme suivante jusque là rien de sorcier
mail("monAdresseMail@fai.com", "[maBoite] inscription : ", "maBoite vous informe que :".$firstName." ".$lastName." souhaite s'inscrire à maBoite

						Informations :

						Nom : ".$lastName."
						Prénom : ".$firstName."
						Email : ".$email."
						Mobile : ".$mobile."
						Login : ".$login."
						Password : ".$password."
						Tel : ".$telephoneNumber."
						Societée : ".$compagny."
						Fax : ".$fax."
						Country : ".$country."
						Langue : ".testLangue($_POST['language'])."
						Activité principale : ".testMainBusinessCategorie($_POST['mainBusinessCategorie'])."
						specialité : ".remplirSpecificite()."
						Formation : ".testEducation($_POST['education'])."
						Expérience : ".testYearsInTheBusiness($_POST['yearsInTheBusiness'])."

						Il à connu maBoite par :".testWhereHaveYouHeardAboutUs($_POST['whereHaveYouHeardAboutUs'])."",$headers);


Voici la fonction remplirSpecificite() car c'est elle qui nous intéresse.

function remplirSpecificite()
{	
	// s'il y a des valeurs dans le tableau
	if(isset($_POST['areaSpecies']) && !empty($_POST['areaSpecies']))
	{
		
		$Col1_Array = $_POST['areaSpecies'];
		
		// pour toutes les colones du tableau
		foreach($Col1_Array as $selectValue)
		{
			//on test s'il y a une ou plusieurs valeurs dans la tableau 
			if ($Col1_Array == $selectValue)
			{
				//s'il y en a qu'une,on affiche seulement la valeur
				return testAreaSpecies($Col1_Array);
			}
			else
			{
				// on teste les valeurs du tableau
				if($Col1_Array != $selectValue)
				{
					// il reste des valeurs dans le tableau
					$resultat = $resultat.testAreaSpecies($Col1_Array).", ";
				}
				else
				{
					// le tableau à atteind sa dernière valeur
					$resultat =$resultat.testAreaSpecies($Col1_Array);
					echo $resultat;
					return $resultat;
				}
			}
		}
	}
	//sinon 
	else
	{
		// on affiche rien
		echo " ";
	}
}


J'utilise dans ma fonction remplirSpecificite() la fonction testAreaSpecies($pAreaSpecies) qui sert en fait à traduire l'id de cochée en mot.

P.S. : Je ne pense pas que le problème vienne de là

function testAreaSpecies($pAreaSpecies)
{
	if($pAreaSpecies=='dogAndCat')
	{
		return "Chat et chiens";
	}
	elseif($pAreaSpecies=='cattle')
	{
		return "Bétail";
	}
	elseif($pAreaSpecies=='sheep')
	{
		return "Mouton";
	}
	elseif($pAreaSpecies=='swine')
	{
		return "Porc";
	}
	elseif($pAreaSpecies=='poultry')
	{
		return "Volaille";
	}
	elseif($pAreaSpecies=='equine')
	{
		return "Cheval";
	}
	elseif($pAreaSpecies=='fish')
	{
		return "Poisson";
	}
	elseif($pAreaSpecies=='other')
	{
		return "Autre";
	}
	elseif($pAreaSpecies=='all')
	{
		return "Tous";
	}
	elseif($pAreaSpecies=='noSpecies')
	{
		return "Pas de spécialité";
	}
}


Je ne dois pas utiliser de javascript c'est une contrainte que m'a donnée le chef de projet !

--
www.myspace.com/kickntoast
95 % des erreurs proviennent de ce qu'il y a entre le clavier et la chaise
Pensez à cocher "résolu" le cas échéant
Configuration: Windows XP
Firefox 3.0.3

4 réponses

  1. Xil Messages postés 351 Statut Membre 257
     
    Bonjour,

    Peut-on avoir le code HTML de l'input à choix multiple en question ?

    PS: A moins qu'il ne soit crypté (et dans ce cas je n'en vois pas l'utilité), publier le mot de passe entré n'est éthiquement pas correct, même à une seule personne.
    0
  2. Utilisateur anonyme
     
    oui voici le code de mon select

    			<select name="areaSpecies[]" multiple>
    				<option value="dogAndCat"<?php if ($_POST['areaSpecies']=='dogAndCat') {echo "selected='selected'";}?>>Dog / Cat</option>
    				<option value="cattle"<?php if ($_POST['areaSpecies']=='cattle') {echo "selected='selected'";}?>>Cattle</option>
    				<option value="sheep"<?php if ($_POST['areaSpecies']=='sheep') {echo "selected='selected'";}?>>Sheep</option>
    				<option value="swine"<?php if ($_POST['areaSpecies']=='swine') {echo "selected='selected'";}?>>Swine</option>
    				<option value="poultry"<?php if ($_POST['areaSpecies']=='poultry') {echo "selected='selected'";}?>>Poultry</option>
    				<option value="equine"<?php if ($_POST['areaSpecies']=='equine') {echo "selected='selected'";}?>>Equine</option>
    				<option value="fish"<?php if ($_POST['areaSpecies']=='fish') {echo "selected='selected'";}?>>Fish</option>
    				<option value="other"<?php if ($_POST['areaSpecies']=='other') {echo "selected='selected'";}?>>Other</option>
    				<option value="all"<?php if ($_POST['areaSpecies']=='all') {echo "selected='selected'";}?>>All</option>
    				<option value="noSpecies"<?php if ($_POST['areaSpecies']=='noSpecies') {echo "selected='selected'";}?>>No Species</option>
    			</select><br />
    0
    1. Xil Messages postés 351 Statut Membre 257
       
      Dans ce cas, je simplifierais le code comme ceci :


      function remplirSpecificite()
      {	
      	$resultat = "";
      
      	// s'il y a des valeurs dans le tableau
      	if(isset($_POST['areaSpecies']) && !empty($_POST['areaSpecies']))
      	{
      		
      		$Col1_Array = $_POST['areaSpecies'];
      		
      
      		if (count($Col1_Array) > 0) {
      			foreach ($Col1_Array as $selectValue) {
      				$resultat .= testAreaSpecies($selectValue) . ", ";
      			}
      		}
      	}
      	return $resultat;
      }
      
      0
  3. Utilisateur anonyme
     
    Cela ne fonctionne pas voici le mail que je reçoit

    maBoite vous informe que : Dante-33 souhaite s'inscrire à maBoite

    Informations :

    Nom : Dante
    Prénom : -33
    Email : test@gmail.com
    Mobile : 000000
    Login : Dante-33
    Password : Dante-33
    Tel :
    Societée :
    Fax :
    Country : France
    Langue : Français
    Activité principale : Logistique
    Specialité : , , ,
    Formation : Technicien
    Expérience : Entre 5 et 10 ans

    Il à connu maBoite par :Reseau personnel / professionnel
    0
    1. Xil Messages postés 351 Statut Membre 257
       
      Après test, c'est pourtant fonctionnel chez moi.
      En utilisant ma fonction remplirSpecificite() et ta fonction testAreaSpecies() et ton code pour l'input.

      Tu peux remettre le code que tu as avec les dernières modif ?

      PS: j'avais édité ma fonction hier, peut-être as tu utilisé la mauvaise version. Vérifie avec celle qui est maintenant.

      Et tu devrais mettre un espace entre value="..." et <?php dans tes options de select.
      0
  4. Utilisateur anonyme
     
    C'est bon j'ai réussi tout seul.
    Merci de ton aide.
    P.S.: Voici ma solution

    J'ai supprimé toutes mes fonctions pour une faire une "super fonction".
    Cela fonctionne comme je veux. Je suis assez fier de moi la.

    Voici le code

    Merci encore pour ton aide.

    function remplirSpecificite()
    {
    	// c'est le compteur de valeur dans le tableau
    	$i=1;
    	// s'il y a des valeurs dans le tableau
    	if(isset($_POST['areaSpecies']) && !empty($_POST['areaSpecies']))
    	{	
    		// on test si la valeur est dans le tableau
    		if (in_array ("dogAndCat", $_POST['areaSpecies']))
    		{
    			// si elle y est on test s'il y a déjà un résultat
    			if(isset($resultat))
    			{
    				$i += 1;
    				// s'il y a deja un resultat et ce test est vrai ca veux dire qu'il ne reste plus de valeurs dans le tableau
    				if($i == count($_POST['areaSpecies']))
    				{
    					$resultat .= "Chats et Chiens";
    				}
    				// sinon ca veux dire qu'il reste des valeurs dans le tableau. On met une virgule.
    				else
    				{
    					$resultat .= "Chats et Chiens, ";
    				}
    			}
    			else
    			{	
    				// s'il n'y a pas deja de resultat on cree la variable resultat.
    				// si ce test est vrai ca veut dire qu'il n'y a qu'un valeur dans la tableau. Donc pas besoin de virgule .
    				if (count ($_POST['areaSpecies']) == 1)
    				{
    					$resultat = "Chats et Chiens";
    				}
    				// Sinon ca veut dire qu'il y a plusieurs valeurs dans la tableau. Il y a besoin d'une virgule.
    				else
    				{
    					$resultat = "Chats et Chiens, ";
    				}
    			}
    		}
    		if (in_array ("cattle", $_POST['areaSpecies']))
    		{
    			
    			if(isset($resultat))
    			{
    				$i += 1;
    				if($i == count($_POST['areaSpecies']))
    				{
    					$resultat .= "Bétail";
    				}
    				else
    				{
    					$resultat .= "Bétail, ";
    				}
    			}
    			else
    			{	
    				if (count ($_POST['areaSpecies']) == 1)
    				{
    					$resultat = "Bétail";
    				}
    				else
    				{
    					$resultat = "Bétail, ";
    				}
    			}
    		}
    		if (in_array ("sheep", $_POST['areaSpecies']))
    		{
    			if(isset($resultat))
    			{
    				$i += 1;
    				if($i == count($_POST['areaSpecies']))
    				{
    					$resultat .= "Mouton";
    				}
    				else
    				{
    					$resultat .= "Mouton, ";
    				}
    			}
    			else
    			{	
    				if (count ($_POST['areaSpecies']) == 1)
    				{
    					$resultat = "Mouton";
    				}
    				else
    				{
    					$resultat = "Mouton, ";
    				}
    			}
    		}
    		if (in_array ("swine", $_POST['areaSpecies']))
    		{
    			if(isset($resultat))
    			{
    				$i += 1;
    				if($i == count($_POST['areaSpecies']))
    				{
    					$resultat .= "Porc";
    				}
    				else
    				{
    					$resultat .= "Porc, ";
    				}
    			}
    			else
    			{	
    				if (count ($_POST['areaSpecies']) == 1)
    				{
    					$resultat = "Porc";
    				}
    				else
    				{
    					$resultat = "Porc, ";
    				}
    			}
    		}
    		if (in_array ("poultry", $_POST['areaSpecies']))
    		{
    			if(isset($resultat))
    			{
    				$i += 1;
    				if($i == count($_POST['areaSpecies']))
    				{
    					$resultat .= "Volaille";
    				}
    				else
    				{
    					$resultat .= "Volaille, ";
    				}
    			}
    			else
    			{	
    				if (count ($_POST['areaSpecies']) == 1)
    				{
    					$resultat = "Volaille";
    				}
    				else
    				{
    					$resultat = "Volaille, ";
    				}
    			}
    		}
    		if (in_array ("equine", $_POST['areaSpecies']))
    		{
    			if(isset($resultat))
    			{
    				$i += 1;
    				if($i == count($_POST['areaSpecies']))
    				{
    					$resultat .= "Cheval";
    				}
    				else
    				{
    					$resultat .= "Cheval, ";
    				}
    			}
    			else
    			{	
    				if (count ($_POST['areaSpecies']) == 1)
    				{
    					$resultat = "Cheval";
    				}
    				else
    				{
    					$resultat = "Cheval, ";
    				}
    			}
    		}
    		if (in_array ("fish", $_POST['areaSpecies']))
    		{
    			if(isset($resultat))
    			{
    				$i += 1;
    				if($i == count($_POST['areaSpecies']))
    				{
    					$resultat .= "Poisson";
    				}
    				else
    				{
    					$resultat .= "Poisson, ";
    				}
    			}
    			else
    			{	
    				if (count ($_POST['areaSpecies']) == 1)
    				{
    					$resultat = "Poisson";
    				}
    				else
    				{
    					$resultat = "Poisson, ";
    				}
    			}
    		}
    		if (in_array ("other", $_POST['areaSpecies']))
    		{
    			if(isset($resultat))
    			{
    				$i += 1;
    				if($i == count($_POST['areaSpecies']))
    				{
    					$resultat .= "Autre";
    				}
    				else
    				{
    					$resultat .= "Autre, ";
    				}
    			}
    			else
    			{	
    				if (count ($_POST['areaSpecies']) == 1)
    				{
    					$resultat = "Autre";
    				}
    				else
    				{
    					$resultat = "Autre, ";
    				}
    			}
    		}
    		if (in_array ("all", $_POST['areaSpecies']))
    		{
    			if(isset($resultat))
    			{
    				$i += 1;
    				if($i == count($_POST['areaSpecies']))
    				{
    					$resultat .= "Tous";
    				}
    				else
    				{
    					$resultat .= "Tous, ";
    				}
    			}
    			else
    			{	
    				if (count ($_POST['areaSpecies']) == 1)
    				{
    					$resultat = "Tous";
    				}
    				else
    				{
    					$resultat = "Tous, ";
    				}
    			}
    		}
    		if (in_array ("noSpecies", $_POST['areaSpecies']))
    		{
    			if(isset($resultat))
    			{
    				$i += 1;
    				if($i == count($_POST['areaSpecies']))
    				{
    					$resultat .= "Pas de spécialité";
    				}
    				else
    				{
    					$resultat .= "Pas de spécialité, ";
    				}
    			}
    			else
    			{	
    				if (count ($_POST['areaSpecies']) == 1)
    				{
    					$resultat = "Pas de spécialité";
    				}
    				else
    				{
    					$resultat = "Pas de spécialité, ";
    				}
    			}
    		}
    		return $resultat;
    	}
    	//sinon 
    	else
    	{
    		// on affiche rien
    		echo " ";
    	}
    }

    0
    1. Xil Messages postés 351 Statut Membre 257
       
      Ca fait beaucoup de code pour pas grand chose...
      Mais si ça fonctionne et que ça te convient, soit!
      0