好的,所以我有一个带有选择框的表格来选择美国的每个州,下面只是州的一部分。每个州都有一个表单需要发送到的不同电子邮件地址。在通过电子邮件发送的表单结果中,我需要传递州名称和电子邮件地址。
现在如何设置,表单工作并提交到正确状态的电子邮件地址,但它也说用户在州: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 - 我如何向阿拉斯加发布不同的变量,以便我也可以发送在电子邮件中选择的状态?
答案 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>