Envoi checkbox par mail dans formulaire php

Résolu/Fermé
frugi Messages postés 53 Date d'inscription lundi 22 décembre 2008 Statut Membre Dernière intervention 26 janvier 2016 - Modifié par frugi le 19/07/2011 à 18:03
frugi Messages postés 53 Date d'inscription lundi 22 décembre 2008 Statut Membre Dernière intervention 26 janvier 2016 - 20 juil. 2011 à 14:35
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 lundi 7 mai 2007 Statut Membre Dernière intervention 12 août 2011 88
Modifié par Camuke le 19/07/2011 à 17:30
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 lundi 22 décembre 2008 Statut Membre Dernière intervention 26 janvier 2016
Modifié par frugi le 19/07/2011 à 17:36
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 lundi 7 mai 2007 Statut Membre Dernière intervention 12 août 2011 88
Modifié par Camuke le 19/07/2011 à 17:48
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 lundi 22 décembre 2008 Statut Membre Dernière intervention 26 janvier 2016
Modifié par frugi le 19/07/2011 à 18:51
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 lundi 7 mai 2007 Statut Membre Dernière intervention 12 août 2011 88
20 juil. 2011 à 09:21
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 lundi 22 décembre 2008 Statut Membre Dernière intervention 26 janvier 2016
Modifié par frugi le 20/07/2011 à 14:51
Merci beaucoup =)
Ca fonctionne!

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

Bon après-midi ^^
0