Envoi checkbox par mail dans formulaire php

Résolu
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!

6 réponses

  1. 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
    1. 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
      1. 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
        1. 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
          1. 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
            1. Merci beaucoup =)
              Ca fonctionne!

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

              Bon après-midi ^^
              0