Checkbox Formulaire Mail

Signaler
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011
-
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
-
Hello,

Voilà j'ai un formulaire avec une liste de checkbox de se style :
// ou NAME change suivant les box

Voici mon php de recup des données :

<?php

$_POST = array_map('utf8_decode', $_POST);

$formSociety = $_POST['society'];
$formNom = $_POST['name'];
$formPrenom = $_POST['prename'];
$formAdresse = $_POST['adress'];
$formCP = $_POST['zipcode'];
$formVille = $_POST['city'];
$formPays = $_POST['country'];
$formTel = $_POST['phone'];
$formFax = $_POST['fax'];
$formEmail = $_POST['email'];
$formKids = $_POST['selectKids'];
$formMoyenP = $_POST['moyenP'];
$formMsg = $_POST['remark'];

if($formMsg == '') {
   $formMsg = "Aucunes";
}

if($formFax == '') {
   $formFax = "n/c";
}

if(!empty($formSociety) && !empty($formNom) && !empty($formPrenom) && !empty($formAdresse) && !empty($formCP) && !empty($formVille) && !empty($formPays) && !empty($formTel) && !empty($formEmail) && !empty($formKids) && !empty($formMoyenP) ){

srand((double)microtime()*1000000);
$valeur = md5(uniqid(rand()));

$header = "From: MySociety <monmail@mail.com>\n";
$header .= "Reply-To: MySociety <monmail@mail.com>\n";
$header .= "MIME-Version: 1.0\n";
$header .= "Content-Type: multipart/alternative; boundary=$valeur\n";

$Mail = "mail@mail.com";
$Subject = "-- Subject --";

$body = "Les Kids sont : $formKids";

if( mail($Mail,$Subject,$body,$header) ){
     echo '
Votre souhait à bien été envoyé !
';
     } else{
          echo '
Une erreur est survenu lors de l\'envoi du message !
';
           }
} else{
     echo '
* Tous les champs indiqués par un * sont obligatoires
';
      }
     
?>

Je vous ai raccourci le $body pour que vous compreniez que mon problème vient de la reception des valeur des checkbox...

Lors de la reception du mail je recoit : " Les Kids sont : Array "
....

Help plz...
Thanks :)

12 réponses

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
salut
tu fais :
$formKids = $_POST['selectKids'];
alors que ton form c'est :

pour lister les enfants selectionnes :
foreach ($_POST['selectKids'] as $a){
    echo 'l\'enfant '.$a.' est selectionne !
';
}
/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

OK.

J'ai remplacer
$_POST['selectkids']
par
foreach ($_POST['selectkids'] as $formKids){
    $listKids = $formKids.' , ';
}

et dans $body = "Les Kids sont : $listKids ";

Mais cela ne marche tjs po ...

merci pour ta reponse.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
en php, .= permet d'ajouter a la fin....
foreach ($_POST['selectkids'] as $formKids){
    $listKids. = $formKids.' , ';
}
$listKids=substr($listKids, 0, strlen($listKids)-2);

/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
j'allais oublier...
il faut mettre $listKids=''; au debut, et la ligne :
$listKids=substr($listKids, 0, strlen($listKids)-2);
sert a ne pas avoir ", " a la fin de la variable...
/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

Voici mon code :

<?php

$_POST = array_map('utf8_decode', $_POST);

$formSociety = $_POST['society'];
$formNom = $_POST['name'];
$formPrenom = $_POST['prename'];
$formAdresse = $_POST['adress'];
$formCP = $_POST['zipcode'];
$formVille = $_POST['city'];
$formPays = $_POST['country'];
$formTel = $_POST['phone'];
$formFax = $_POST['fax'];
$formEmail = $_POST['email'];
$listKids = '';

foreach ($_POST['selectkids'] as $formKids){
    $listKids .= $formKids." , ";
}
$listKids = substr($listKids, 0, strlen($listKids)-2);

$formKids = $_POST['selectkids'];
$formMoyenP = $_POST['moyenP'];
$formMsg = $_POST['remark'];

if($formMsg == '') {
   $formMsg = "Aucunes";
}

if($formFax == '') {
   $formFax = "n/c";
}

if(!empty($formSociety)
&& !empty($formNom) && !empty($formPrenom) &&
!empty($formAdresse) && !empty($formCP) &&
!empty($formVille) && !empty($formPays) &&
!empty($formTel) && !empty($formEmail) &&
!empty($formKids) && !empty($formMoyenP) ){

srand((double)microtime()*1000000);
$valeur = md5(uniqid(rand()));

$header = "From: MySociety <monmail@mail.com>\n";
$header .= "Reply-To: MySociety <monmail@mail.com>\n";
$header .= "MIME-Version: 1.0\n";
$header .= "Content-Type: multipart/alternative; boundary=$valeur\n";

$Mail = "mail@mail.com";
$Subject = "-- Subject --";

$body = "Les Kids sont : $listKids";

if( mail($Mail,$Subject,$body,$header) ){
     echo '
Votre souhait à bien été envoyé !
';
     } else{
          echo '
Une erreur est survenu lors de l\'envoi du message !
';
           }
} else{
     echo '
* Tous les champs indiqués par un * sont obligatoires
';
      }
     
?>

Mais cela ne marche tjs pas.. j'ai un . a la place de la liste
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

Attention, en dessou de :
$listKids = substr($listKids, 0, strlen($listKids)-2);

il y a



$formKids = $_POST['selectkids'];



mais je l'ai enlevé
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
teste en supprimant :
$listKids = substr($listKids, 0, strlen($listKids)-2);
ou en faisant un print_r sur $_POST histoir de voir tes valeurs
/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

en supprimant $listKids = substr($listKids, 0, strlen($listKids)-2); aucun changement...

un print_r($POST); me renvoie cela : [selectkids] => Array
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
print_r affiche le contenu de l'array....

/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

Non mais j'ai trouvé la solution :)

$_POST = array_map('utf8_decode', $_POST);

cela empecher l'affichage de l'array.

Mais maintenant je ne sait pas comment encoder les POST pour la gestion des accents
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

Enfin si je met utf8_decode(); avec mes $_POST[''] a l'intérieur.

Genre : $formEmail = utf8_decode($_POST['email']);

A tous sauf a celui des checkbox ^-^
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
faut faire un truc genre array_walk_recursive
cherche si ca existe dans la doc, sinon, recode le, c'est pas bien complique

/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/