发送一封电子邮件,其中包含用户填写的表格数据?

时间:2011-10-21 03:56:54

标签: php arrays forms email

我需要一个html webform,根据用户的chioce计算结果(每个选项都有一个特定的值),我想向用户显示结果并通过电子邮件向我发送用户选择的选项。

第一部分我得到它并且它可以正常工作,但我无法让脚本通过邮件向我发送信息。

这是我的 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);
}

这是我的问题:没有任何这些选项可以让我得到结果。我得到的只是一封空白的电子邮件,并且没有邮寄$ message。

2 个答案:

答案 0 :(得分:0)

你的$ k和$ v被逆转了。 if( isset($place[ $v ]) )应为if( isset($place[ $k ]) ),依此类推。

编辑:实际上,不是。过了我的睡觉时间。 : - )

答案 1 :(得分:0)

好的,万一有人遇到同样的事情,最后得到了它!

这是应该打印的方式:

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

您是否注意到在“=”符号前张贴的小点?嗯,这是一个不同的世界。

我不太明白为什么它使用连接赋值而不是简单的赋值,但它有效。