表单选择框从选择中发布多个变量

时间:2013-12-05 21:13:46

标签: php html forms

好的,所以我有一个带有选择框的表格来选择美国的每个州,下面只是州的一部分。每个州都有一个表单需要发送到的不同电子邮件地址。在通过电子邮件发送的表单结果中,我需要传递州名称和电子邮件地址。

现在如何设置,表单工作并提交到正确状态的电子邮件地址,但它也说用户在州:email1@test.com而不是Alabama。

form.php中的selectbox HTML:

<select name="state222"> 
    <option value="email1@test.com" id="Alabama">Alabama</option> 
    <option value="email2@test.com" id="Alaska">Alaska</option> 
    <option value="email3@test.com" id="Arizona">Arizona</option>
</select>

form-submit.php的部分PHP代码(表单提交的地方)

这会将所选选项的值设置为$ state

$state = $_REQUEST['state222'] ;

这使得phpmailer发送到所选州的电子邮件:

$mail->AddAddress($state);

示例:如果选择了Alaska,$ state将成为email2@test.com - 我如何向阿拉斯加发布不同的变量,以便我也可以发送在电子邮件中选择的状态?

3 个答案:

答案 0 :(得分:0)

你不能只用select。您可以使用Javascript,当选择更改更新带有州名称的隐藏字段时...但我不会这样做。为什么不将值设为州名或缩写,然后在后端查找电子邮件地址?您可以将电子邮件地址存储在数据库中并查询它们(SELECT email FROM state_emails WHERE state='$state')。或者(不是很好,不是真的推荐)在脚本中只有一个静态数组:

$emails = array('AL'=>'email1@test.com', 'AK'=>'email2@test.com' ...);
$email = $emails[$state];

答案 1 :(得分:0)

我不会以这种方式公开公开电子邮件地址,因为某人编辑DOM并插入他们选择的电子邮件非常容易。您应该创建一个数组,用于填充选择字段,然后引用在后端选择的选择。

$states = array(array('email' => 'email1@test.com', 'state' => 'Alabama'), array('email' => 'email2@test.com', 'state' => 'Alaska') ...);

在您的表单中,您现在可以循环使用此数组

<select name="state222">
<?php foreach($states as $key => $value){ ?>
<option value="<?=$key; ?>"><?=$value['state']; ?></option>
<?php } ?>
</select>

然后,您将在后端使用相同的数组来获取值需求

$state = $states[$_REQUEST['state222']];

您现在拥有一个名为$state['state']所选状态的数组,并通过电子邮件发送$state['email']

答案 2 :(得分:0)

由于电子邮件地址已经是公共信息,因此最终正在使用,我将继续使用。

后端代码:谢谢@NeilGiradi - 你的代码中唯一缺少的是第二个$ _POST的$ $

$state222 = (isset($_POST['state222'])) ? explode('|', $_POST['state222']) : null;
if ($state222) {
    $email = $state222[0];
    $state = $state222[1];
}

前端:

<option value="email1@test.com|Alabama" id="Alabama">Alabama</option>