我需要一个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。
答案 0 :(得分:0)
你的$ k和$ v被逆转了。 if( isset($place[ $v ]) )
应为if( isset($place[ $k ]) )
,依此类推。
答案 1 :(得分:0)
好的,万一有人遇到同样的事情,最后得到了它!
这是应该打印的方式:
$message .= join($_POST['place']);
您是否注意到在“=”符号前张贴的小点?嗯,这是一个不同的世界。
我不太明白为什么它使用连接赋值而不是简单的赋值,但它有效。