Les Allergies
Alimentaires
Posez votre question Signaler

Envoi checkbox par mail dans formulaire php [Résolu]

frugi 21Messages postés 22 décembre 2008Date d'inscription 20 juillet 2011Dernière intervention - Dernière réponse le 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!
Lire la suite 

Envoi checkbox par mail dans formulaire php »

6 réponses
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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]." "; 
  } 
} 

??
Ajouter un commentaire
Réponse
+0
moins plus
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;  
?>
Ajouter un commentaire
Réponse
+0
moins plus
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?
Ajouter un commentaire
Réponse
+0
moins plus
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];
	}
}
Ajouter un commentaire
Réponse
+0
moins plus
Merci beaucoup =)
Ca fonctionne!

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

Bon après-midi ^^
Ajouter un commentaire
Ce document intitulé « Envoi checkbox par mail dans formulaire php » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?