[PHP] envoie de mail par formulaire

Résolu/Fermé
Signaler
-
Messages postés
350
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
11 juin 2009
-
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 !

4 réponses

Messages postés
350
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
11 juin 2009
253
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.

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 />
Messages postés
350
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
11 juin 2009
253
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;
}

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
Messages postés
350
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
11 juin 2009
253
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.

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 " ";
	}
}

Messages postés
350
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
11 juin 2009
253
Ca fait beaucoup de code pour pas grand chose...
Mais si ça fonctionne et que ça te convient, soit!