Отправить письмо с массивом данных, которые пользователь заполнил в форме? - PullRequest
0 голосов
/ 21 октября 2011

Мне нужна веб-форма html, которая вычисляет результат в соответствии с выбором пользователя (каждый параметр имеет определенное значение), и я хочу показать пользователю результат и отправить мне по электронной почте варианты, которые пользователь выбрал.

Первая часть, которую я получил, и она работает нормально, но я не могу сделать сценарий для отправки мне информации по почте.

Это пример моей HTML-формы :

1. Place
<select name="place[]">
<option value="zone1">You´re in Zone 1</option>
<option value="zone2">You´re in Zone 2</option>
<option value="zone3">You´re in Zone 3</option>
</select>

1. Role
<select name="role[]">
<option value="role1">You have Role 1</option>
<option value="role2">You have Role 2</option>
<option value="role3">You have Role 3</option>
</select>

Это пример php-кода, который я использую для суммирования значений в соответствии с тем, что выбрал пользователь (у меня больше значений в форме):

$place = array (
"zone1" => 10,
"zone2" => 20,
"zone3" => 30,
);
$role = array (
"role1" => 1,
"role2" => 2,
"role3" => 3,
);

Затем я создаю переменную для каждой опции:

$user_place = array();
$user_role = array();

Теперь я говорю только использовать информацию в соответствии с тем, что ввел пользователь:

if(is_array($_POST['place']))
{
foreach( $_POST['place'] as $k => $v )
{
   if( isset($place[ $v ]) )
   $user_place [] = $place[ $v ]; 
}
} 

if(is_array($_POST['role']))
{
foreach( $_POST['role'] as $k => $v )
{
   if( isset($role[ $v ]) )
   $user_role [] = $role[ $v ]; 
}
} 

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

$place_sum = array_sum($user_place);
$role_sum = array_sum($user_role);

Я суммирую их всех:

$total = $place_sum + $role_sum;
echo $total;

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

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$to   = 'mymail@gmail.com';
$subject = 'USER RESULTS '.date("m/d/Y h:m:s");

Сейчас я попробовал:

$message = $user_place;
$message = $user_role;

А это:

$message = join(', ', $_POST['place']);
$message = join(', ', $_POST['role']);

И это:

$message = $_REQUEST['place'];
$message = $_POST['role'];

mail($to, $subject, $message);
}

И вот моя проблема: ни один из этих вариантов не дает мне результатов. Все, что я получаю, это пустое электронное письмо, а сообщение $ не отправляется по почте.

Ответы [ 2 ]

0 голосов
/ 21 октября 2011

Хорошо, на всякий случай, если кто-то испытывает то же самое, наконец-то получил!

Вот как это должно быть напечатано:

$message .= join($_POST['place']); 

Вы заметили маленькую точку, которая размещена перед знаком "="? Ну, это был мир различий.

Я не совсем понимаю, почему он работал с конкатенацией-назначением вместо простого назначения, но он работал.

0 голосов
/ 21 октября 2011

Ваши $ k и $ v поменялись местами.if( isset($place[ $v ]) ) должно быть if( isset($place[ $k ]) ) и т. Д.

РЕДАКТИРОВАТЬ: На самом деле нет.Мимо моего сна.: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...