Как разместить значения флажков в сообщении, используя POST? - PullRequest
0 голосов
/ 16 августа 2011

Я недавно работал над созданием формы электронной почты PHP и не могу правильно отправить значения флажков. Форма, которую я нашел в другом месте и которую я модифицировал. HTML-код довольно прост.

<label for="needs">I am looking for...</label>
<input name="needs[]" id="needs" type="checkbox" value="product list">A Product List<br>
<input name="needs[]" id="needs" type="checkbox" value="educational support">Educational Support<br>
<input name="needs[]" id="needs" type="checkbox" value="catering options">Catering Options<br>
<input name="needs[]" id="needs" type="checkbox" value="party ideas">Party Ideas<br>
<input name="needs[]" id="needs" type="checkbox" value="healthy alternatives">Healthy Alternatives<br>
<input name="needs[]" id="needs" type="checkbox" value="other">Other (please specify)<br>

На данный момент, когда я отправляю его через PHP, он просто возвращает либо одно выбранное значение, либо, если выбрано несколько, говорит "массив". То, что я хотел бы, чтобы сообщение почты было отправлено мне, чтобы перечислить выбранные значения. Я искал в другом месте, но пока не нашел такой же ситуации, как у меня. Вот PHP:

<?php
$msg=
'Name:      '.$_POST['name'].'<br />
Category:   '.$_POST['category'].'<br />
Email:      '.$_POST['email'].'<br />
Phone:      '.$_POST['telephone'].'<br />
Looking for:    '.$_POST['needs'].'<br />
IP:     '.$_SERVER['REMOTE_ADDR'].'<br /><br />

Message:<br /><br />

'.nl2br($_POST['message']).'

';
?>

Остальной код - настройка и отправка сообщения. Я понимаю, что есть и другие способы делать то, что я хочу, но хотел бы продолжить использовать $ msg, который здесь включен.

Любая помощь будет принята с благодарностью, спасибо.

Модифицированный код:

$msg=
'Name:      '.$_POST['name'].'<br />
Category:   '.$_POST['category'].'<br />
Email:      '.$_POST['email'].'<br />
Phone:      '.$_POST['telephone'].'<br />
Looking for:    '.(is_array($_POST['needs'])?implode("\n", $_POST['needs']):$_POST['needs']).'<br />
IP:     '.$_SERVER['REMOTE_ADDR'].'<br /><br />

Message:<br /><br />

'.nl2br($_POST['message']).'

';

1 Ответ

1 голос
/ 16 августа 2011

вы должны работать с $ _POST ['needs'] как с массивом, так как это действительно массив.если вы хотите просто получить список отмеченных флажков, вы можете присоединить массив к строке:

$checked_options = implode("\n", $_POST['needs']);

, вы можете проверить, отмечен ли определенный параметр:

if (in_array("educational support", $_POST['needs'])) echo ("educational support is checked");

ии так далее ...

в вашем случае я бы сделал следующее:

<?php
$msg=
'Name:      '.$_POST['name'].'<br />
Category:   '.$_POST['category'].'<br />
Email:      '.$_POST['email'].'<br />
Phone:      '.$_POST['telephone'].'<br />
Looking for:    '.(is_array($_POST['needs'])?implode("\n", $_POST['needs']):$_POST['needs']).'<br />
IP:     '.$_SERVER['REMOTE_ADDR'].'<br /><br />

Message:<br /><br />
'.nl2br($_POST['message']).'

';
?>

'.nl2br($_POST['message']).'

';?>

...