2010-07-08 6 views
1

I "m ayant des difficultés à recevoir une liste d'éléments qui sont vérifiés dans un champ de cases à cocher qui font partie d'une formecases post PHP aide

J'ai une table HTML avec quelques cases à cocher.

HTML

<input type="checkbox" name="carry[]" value="1" /> 
<input type="checkbox" name="carry[]" value="2" /> 
<input type="checkbox" name="carry[]" value="3" /> 

PHP - c'est ce que je utilise pour poster le formulaire à une adresse e-mail

foreach($_POST as $key => $val) { 

$body .= $key . " : " . $val . "\r\n"; 

Je reçois la valeur dans mon email comme: "carry: Array" - pas les valeurs réelles qui sont sélectionnées. Comment puis-je gérer un tableau de cases à cocher sélectionnées dans un formulaire et l'afficher?

Idéalement, je voudrais: "porter: 1; 2; 3" (sans les guillemets)

Répondre

2

Vous pouvez vérifier si la valeur est un tableau et gérer différemment:

foreach($_POST as $key => $val) { 
    if (is_array($val)) { 
    $body .= $key . " : " . implode(",",$val) . "\r\n"; 
    } else { 
    $body .= $key . " : " . $val . "\r\n"; 
    } 
} 
+0

Merci, cela a fonctionné comme un charme. Je ne connaissais pas is_array() ou implode(). – mastofact

1

Il Poursuivons d'impression: Array car c'est exactement ce qu'il est. Vous devez faire une boucle au-dessus (une autre boucle à l'intérieur du premier) pour accéder aux valeurs à l'intérieur:

foreach($_POST as $key => $val) { 
    if($key == 'carry') { 
     foreach($val as $carry) { 
      $body .= $carry; 
     } 
    } 
    else { 
     $body .= $key . " : " . $val . "\r\n"; 
    } 
} 

qui est complètement non testé mais nous espérons que la logique est son :)

+0

ou s'il est lo oking pour 'carry': 'foreach ($ _POST ['carry'] comme $ key => $ val);' –

2

Si vous voulez que la chaîne '1; 2; 3', vous devriez réunir les éléments du tableau:

$carry= implode('; ', $_POST['carry']); 

faire Cependant il en va naturellement provoquer des résultats ambigus si l'un des éléments du tableau ont eux-mêmes un point-virgule dans

.

itérer sur le tableau de poste permettant l'un de ses membres comme des tableaux:

Ou, si vous ne contrôlez pas besoin tant sur la mise en forme exacte et un vidage de débogage est très bien (mais vous devez voir plus que la chaîne inutile 'Array':

$body= var_export($_POST, TRUE);