Envoi checkbox par mail dans formulaire php

Résolu
frugi Messages postés 53 Date d'inscription   Statut Membre Dernière intervention   -  
frugi Messages postés 53 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un formulaire avec des cases à remplir et des checkbox. Voici le code HTML:

<form id="contact" method="post" action="formmail_coques.php">  
 <fieldset><legend>Vos coordonnées :</legend>  
  <p><label for="nom">Nom :</label><input type="text" id="nom" name="nom" tabindex="1" /></p>  
  <p><label for="email">Email :</label><input type="text" id="email" name="email" tabindex="2" /></p>  
 </fieldset>  
<fieldset><legend>Choix couleur :</legend>  
<input type="checkbox" name="couleur[]" value="Blanc"> Blanc  
<input type="checkbox" name="couleur[]" value="Jaune"> Jaune  
<input type="checkbox" name="couleur[]" value="Rose clair"> Rose clair  
<input type="checkbox" name="couleur[]" value="violet">Violet  
<input type="checkbox" name="couleur[]" value="rouge">Rouge  
<input type="checkbox" name="couleur[]" value="rose foncé">Rose foncé  
<input type="checkbox" name="couleur[]" value="noir">Noir  
<input type="checkbox" name="couleur[]" value="bleu clair">Bleu clair  
<input type="checkbox" name="couleur[]" value="bleu foncé">Bleu foncé  
<input type="checkbox" name="couleur[]" value="vert">Vert  

</fieldset>  
 <fieldset><legend>Votre message :</legend>  
  <p><label for="objet">Objet :</label><input type="text" id="objet" name="objet" tabindex="3" /></p>  
  <p><label for="message">Message :</label><textarea id="message" name="message" tabindex="4" cols="30" rows="8"></textarea></p>  
 </fieldset>  

 <div style="text-align:center;"><input type="submit" name="envoi" value="Réserver" /></div>  
</form>



Et voici mon code php qui envoi les réponses du formulaire par mail à mon adresse et à l'adresse mail rentrée dans le formulaire:

<?php  

 $destinataire = 'monadresse@live.fr';  

 $copie = 'oui'; // 'oui' ou 'non'  

 $message_envoye = "Votre message nous est bien parvenu !";  
 $message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";  

 $message_erreur_formulaire = "Vous devez d'abord <a href=\"contact.html\">envoyer le formulaire</a>.";  
 $message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";  



 if (!isset($_POST['envoi']))  
 {  
   
  echo '<p>'.$message_erreur_formulaire.'</p>'."\n";  
 }  
 else  
 {  
    
  function Rec($text)  
  {  
   $text = trim($text);   
   if (1 === get_magic_quotes_gpc())  
   {  
    $stripslashes = create_function('$txt', 'return stripslashes($txt);');  
   }  
   else  
   {  
    $stripslashes = create_function('$txt', 'return $txt;');  
   }  

     
   $text = $stripslashes($text);  
   $text = htmlspecialchars($text, ENT_QUOTES);   
   $text = nl2br($text);  
   return $text;  
  };  

    
  function IsEmail($email)  
  {  
   $pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";  
   return (eregi($pattern,$email)) ? true : false;  
  };  

   
  $nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';  
  $email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';  
  $objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';  
  $message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';  


    
  $email = (IsEmail($email)) ? $email : '';   

  if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))  
  {  
     
   $headers = 'From: '.$nom.' <'.$email.'>' . "\r\n";  

     
   if ($copie == 'oui')  
   {  
    $cible = $destinataire.','.$email;  
   }  
   else  
   {  
    $cible = $destinataire;  
   };  

     
   $message = str_replace("'","'",$message);  
   $message = str_replace("'","'",$message);  
   $message = str_replace(""",'"',$message);  
   $message = str_replace('<br>','',$message);  
   $message = str_replace('<br />','',$message);  
   $message = str_replace("<","<",$message);  
   $message = str_replace(">",">",$message);  
   $message = str_replace("&","&",$message);  

     
   if (mail($cible, $objet, $message, $headers))  
   {  
    echo '<p>'.$message_envoye.'</p>'."\n";  
   }  
   else  
   {  
    echo '<p>'.$message_non_envoye.'</p>'."\n";  
   };  
   }  
  else  
  {  
     
   echo '<p>'.$message_formulaire_invalide.' <a href="contact.html">Retour au formulaire</a></p>'."\n";  
  };  
 }; // fin du if (!isset($_POST['envoi']))  
?>



Tout s'envoie correctement par mail... mais je ne sais pas comment faire en sorte que les checkbox cochées soient elles aussi envoyées par mail...
Ajouter
$couleur = (isset($_POST['couleur'])) ? Rec($_POST['couleur']) : '';
ne fonctionne pas...
Comment faire?

Bonne fin de journée!
A voir également:

6 réponses

Camuke Messages postés 224 Date d'inscription   Statut Membre Dernière intervention   88
 
Salut,

Normal que sa marche pas. $_POST['couleur'] est un tableau.
Le 1er element coché est donc dans $_POST['couleur'][0], le 2eme dans $_POST['couleur'][1], etc....


Il te suffit de connaitre le nombre de case coche et de bouclé dessus pour tout ajouté dans le contenu de ton mail

Bon courage
0
frugi Messages postés 53 Date d'inscription   Statut Membre Dernière intervention  
 
merci Camuke... mais... je fais ça comment? xD
c'est la 1ère fois que j'utilise du PHP oO


un truc dans le genre:
if(isset($_POST["couleur"])) { 
  for ($i=0;$i<count($_POST["couleur"]);$i++)  {
    echo $_POST["informations"][$i]." "; 
  } 
} 

??
0
Camuke Messages postés 224 Date d'inscription   Statut Membre Dernière intervention   88
 
Oui c'est sa je pense.

Je t'ai fait un bout de code qui ressemble fort:
<?php   
$message= "";  
if(isset($_POST['couleur'])) {  
 $couleur = $_POST['couleur'];  
 for($i=0; $i < count($couleur); $i++) {  
  $message =  $message." ".$couleur[$i];  
 }  
}  
echo $message;  
?>
0
frugi Messages postés 53 Date d'inscription   Statut Membre Dernière intervention  
 
Et j'insère ça à quel endroit dans mon php?

Il manque qqch non, pour que ça l'envoie par mail? "echo" ne sert qu'a afficher non?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Camuke Messages postés 224 Date d'inscription   Statut Membre Dernière intervention   88
 
Oui echo ne sert qu'a afficher mais je t'ai fait que la boucle, je pensais que tu pourrai l'inserer tout seul.

Voila une partie de ton code:
$nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';  
$email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';  
$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';  
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';  


tu insere sa en dessous:
if(isset($_POST['couleur'])) {
	$couleur = $_POST['couleur'];
	for($i=0; $i < count($couleur); $i++) {
		$message =  $message." ".$couleur[$i];
	}
}
0
frugi Messages postés 53 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup =)
Ca fonctionne!

Ca fait des jours que j'étais bloquée là dessus, tum sauves la vie!

Bon après-midi ^^
0