2015-11-02 4 views
0

Оглядываясь везде, но не могу найти решение. Все говорит о том, одна группа, как так:Как получить несколько групп значений флажка в процессоре php?

<input type="checkbox" value="red" name="colors[]"> red<br /> 
<input type="checkbox" value="purple" name="colors[]"> purple<br> 
<input type="checkbox" value="blue" name="colors[]"> blue<br> 
<input type="checkbox" value="black" name="colors[]"> black<br> 

, но я необходимости делать несколько групп в одной форме, как это:

<input type="checkbox" value="red" name="colors[]"> red<br /> 
<input type="checkbox" value="purple" name="colors[]"> purple<br> 
<input type="checkbox" value="blue" name="colors[]"> blue<br> 
<input type="checkbox" value="black" name="colors[]"> black<br> 
<input type="checkbox" value="sm" name="sizes[]"> small<br /> 
<input type="checkbox" value="med" name="sizes[]"> medium<br> 
<input type="checkbox" value="lrg" name="sizes[]"> large<br> 
<input type="checkbox" value="xlrg" name="sizes[]"> x-large<br> 

и на вершине, что форма является динамическим. имена являются переменными и неизвестными, поэтому в почтовом коде php он не может быть $ _POST ['colors'].

у меня есть этот фрагмент кода, который может захватить все неизвестные имена и построить сообщение для последующего введения в электронный скрипт для отправки по электронной почте значения представленной формы:

foreach ($_POST as $field=>$value) { 
    if ($field != "submit") $msg .= $field . ": " . $value . "\n"; 
} 

, но, как вы, наверное, знаете, когда он получает набор флажков, он говорит, что это значение является «массивом», поэтому не только нужно разбить или разбить массив на несколько значений для флажков, тогда ему нужно сделать это для нескольких групп флажков.

так, например, это может быть то, что $ тзд бы на определенной форме:

first_name: first 
last_name: last 
email_address: [email protected] 
phone: 1234567890 
variable_radio_name: answer 
variable_selectbox_name: answer 
colors_from_checkbox_group_one: red,blue 
sizes_from_checkbox_group_two: med,lrg 
variable_textarea_name: blah blah blah 

Textboxes, прокручиваемым, радиоприемники, выпадающие коробки все легко, потому что это один ответ кусок, но эти флажки являются боль.

EDIT

сделал это так:

if ($field != "submit") $msg .= $field . ": " . is_array($value) ? implode(',', $value) . "\n" ? $value . "\n"; 

и так:

if ($field != "submit") { 
    $msg .= $field . ": " . is_array($value) ? implode(',', $value) . "\n" ? $value . "\n"; 
} 

ошибка синтаксиса в обоих направлениях.

+0

См отредактированный вопрос. – leoarce

ответ

1

Ошибка вашего синтаксиса заключается в том, чтобы использовать ? вместо : для отправки части тернара. Кроме того, вам нужно скобки, чтобы правильно сделать конкатенацию работы:

$msg .= $field . " : " . (is_array($value) ? implode(',', $value) . "\n" : $value . "\n"); 

Это может быть более удобным для чтения:

if ($field != "submit") { 
    if(is_array($value)) { 
     $msg[] = "$field : " . implode(',', $value); 
    } else { 
     $msg[] = "$field : $value"; 
    } 
} 
$msg = implode("\n", $msg); 
+0

извините за это. я получил побочные следы. да, это отлично работает. я ценю это. – leoarce

Смежные вопросы