Envoi checkbox par mail dans formulaire php

[Résolu/Fermé]
Signaler
Messages postés
53
Date d'inscription
lundi 22 décembre 2008
Statut
Membre
Dernière intervention
26 janvier 2016
-
Messages postés
53
Date d'inscription
lundi 22 décembre 2008
Statut
Membre
Dernière intervention
26 janvier 2016
-
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

Messages postés
224
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
12 août 2011
86
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
Messages postés
53
Date d'inscription
lundi 22 décembre 2008
Statut
Membre
Dernière intervention
26 janvier 2016

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

??
Messages postés
224
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
12 août 2011
86
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;  
?>
Messages postés
53
Date d'inscription
lundi 22 décembre 2008
Statut
Membre
Dernière intervention
26 janvier 2016

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?
Messages postés
224
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
12 août 2011
86
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];
	}
}
Messages postés
53
Date d'inscription
lundi 22 décembre 2008
Statut
Membre
Dernière intervention
26 janvier 2016

Merci beaucoup =)
Ca fonctionne!

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

Bon après-midi ^^