如何通过 PHP 将多个复选框值发送到电子邮件
How to send through multiple checkbox values to an email via PHP
下面显示了我的HTML文件的摘录。表单目标是当用户选中复选框时,它会在起始总值上添加更多值。
<!doctype html>
<html class="">
<head>
<script type="text/javascript">
function checkTotal() {
document.listForm.total.value = '';
var sum = 68.50;
for (i=0;i<document.listForm.choice.length;i++) {
if (document.listForm.choice[i].checked) {
sum = sum + parseFloat(document.listForm.choice[i].value);
}
}
document.listForm.total.value = sum.toFixed(2);
}
</script>
</head>
<body>
<form name="listForm" method="post" action="standard_form.php">
<div class="form-group">
<label for="additional_extras">Extras</label><br><br>
<input type="checkbox" name="choice" value="60.00" onchange="checkTotal()"> Number1 </div>
<div class="form-group">
<label for="additional_extras_2"></label><br>
<input type="checkbox" name="choice" value="20.00" onchange="checkTotal()"> Number 2
</div>
<div class="form-group">
<label for="additional_extras_3"></label><br>
<input type="checkbox" name="choice" value="45.00" onchange="checkTotal()"> Number 3
</div>
<div class="form-group">
<label for="additional_extras_4"></label><br>
<input type="checkbox" name="choice" value="23.50" onchange="checkTotal()"> Number 4
</div>
<div class="form-group">
<label for="additional_extras_5"></label><br>
<input type="checkbox" name="choice" value="40.00" onchange="checkTotal()"> Number 5
</div>
<div class="form-group">
<label for="additional_extras_6"></label><br>
<input type="checkbox" name="choice" value="23.50" onchange="checkTotal()"> Number 6
</div>
<div class="form-group">
<label for="additional_extras_7"></label><br>
<input type="checkbox" name="choice" value="120.00" onchange="checkTotal()"> Number 7
<br>
<h3>Your Current Package Total: £<input type="text" readonly placeholder="68.50" name="total" id="total"/></h3>
<button type="submit" class="btn btn-default">Submit</button>
</form>
</div>
</body>
</html>
然后,我会将此表单发送到以下 php 文件,然后通过电子邮件发送表单输出。我已经设法让所有其他字段成功发送,但无法在不中断添加函数(使总数)中断的情况下通过电子邮件发送和输出复选框值。
<?php
if(isset($_POST['email'])) {
// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = "myemail";
$email_subject = "mysubject";
function died($error) {
// your error code can go here
echo "We are very sorry, but there were error(s) found with the form you submitted. ";
echo "These errors appear below.<br /><br />";
echo $error."<br /><br />";
echo "Please go back and fix these errors.<br /><br />";
die();
}
$choice = $_POST['choice']; // required
$total = $_POST['total']; // required
$email_message = "Form details below.'n'n";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "Choice: ".clean_string($choice)."'n";
$email_message .= "Order Total: ".clean_string($total)."'n";
// create email headers
$headers = 'From: '.$email_from."'r'n".
'Reply-To: '.$email."'r'n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
?>
<!-- include your own success html here -->
Thank you for contacting us. We will be in touch with you very soon.
<?php
}
?>
请问有人对此有解决方案吗?无论我尝试什么,我都无法让复选框通过那里发送值并像表单的其余部分一样在电子邮件中显示它们。
任何帮助将不胜感激!
谢谢!
您正在构建具有相同名称的复选框输入。这意味着PHP将处理表单提交,并不断用新副本覆盖特定字段名称:值对的"以前"版本,例如
<input type="text" name="foo" value="foo" />
<input type="text" name="foo" value="bar" />
<input type="text" name="foo" value="baz" />
(注意相同的名称,3 个不同的值)。只有baz
会显示在 $_POST/$_GET 中,因为它是表单中foo
名称的最后一个副本。
如果您希望提交并保存各个复选框值,则必须在字段命名中使用特定于 PHP 的数组表示法:
<input type="text" name="foo[]" value="foo" />
<input type="text" name="foo[]" value="bar" />
<input type="text" name="foo[]" value="baz" />
^^--note the [] brackets
这会$_POST['foo']
变成一个数组,并告诉 PHP 将每个单独的值保存为数组元素。
<div class="form-group">
<label for="additional_extras">Extras</label><br><br>
<input type="checkbox" name="choice[]" value="60.00" onchange="checkTotal()"> Number1 </div>
<div class="form-group">
<label for="additional_extras_2"></label><br>
<input type="checkbox" name="choice[]" value="20.00" onchange="checkTotal()"> Number 2
</div>
<div class="form-group">
<label for="additional_extras_3"></label><br>
<input type="checkbox" name="choice[]" value="45.00" onchange="checkTotal()"> Number 3
</div>
<div class="form-group">
<label for="additional_extras_4"></label><br>
<input type="checkbox" name="choice[]" value="23.50" onchange="checkTotal()"> Number 4
</div>
<div class="form-group">
<label for="additional_extras_5"></label><br>
<input type="checkbox" name="choice[]" value="40.00" onchange="checkTotal()"> Number 5
</div>
<div class="form-group">
<label for="additional_extras_6"></label><br>
<input type="checkbox" name="choice[]" value="23.50" onchange="checkTotal()"> Number 6
</div>
<div class="form-group">
<label for="additional_extras_7"></label><br>
<input type="checkbox" name="choice[]" value="120.00" onchange="checkTotal()"> Number 7
将复选框的名称更改为 choice[],以便可以将其用作数组。
$choice = $_POST['choice']; // required
foreach($choice as $c){
$emailbody .= 'Checkbox .'$c;
}
当您提交表单时,它将如下所示:
array(1) { ["choice"]=> array(5) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" [3]=> string(1) "4" [4]=> string(1) "5" } }
所以,你可以像$_POST['选择'][0]或[1]或[2]一样使用它,然后去。
相关文章:
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 正在验证8个真/假复选框或复选框中的2个
- 为复选框javascript指定两个值
- 如何在单击复选框后调用控制器方法
- 从复选框和Selects-KnockoutJS中获取值的总和
- 选中多个具有相同名称的复选框
- 根据签入的表单,在html电子邮件模板中将复选框标记为true
- 如何通过 PHP 将多个复选框值发送到电子邮件
- 不能发送超过 12 个单选按钮和表单操作邮件中的复选框选项
- PHP 复选框邮件程序为每个错误
- 我想根据复选框从 PDF 发送邮件
- 使用 JavaScript 生成的复选框防止垃圾邮件和机器人
- 使用php在多个页面和电子邮件中传递复选框值
- 动态单击复选框并在列表中添加电子邮件地址,并使用javascript删除重复的电子邮件地址
- 如何获得所有的电子邮件地址为每个复选框,是用jQuery检查
- 当从html, javascript和aspx发送电子邮件时,复选框不转换
- 如何在客户端gridview中获得选定复选框的电子邮件
- 如何通过ajax将值从表单复选框传递到邮件
- 电子邮件发送表单,复选框选择,复选框限制
- 使复选框值追加到文本框,以分号分隔(复制电子邮件地址)