使用PHP从动态输入字段捕获数组值并通过电子邮件发送
Capture Array Values from Dynamic input Fields using PHP and email them
我有一个非常大的表单,在这个表单中有多个动态表单字段,可以由用户添加。我需要使用php和电子邮件捕获这些,没有必要的mysqli连接。我使用一些javascript来处理动态表单字段的出现和消失。
其中一个html动态表单字段是这样的——
<div class="col-sm-1">
<select id="about_you_dep-gender[]" name="about_you_dep- gender[]" class="form-control">
<option value="Male">Male</option>
<option value="Female">Female</option>
</select><div class="help">Gender</div>
</div>
php现在看起来是这样的,如果我现在提交表单字段的内容是:array
<?php
if(!isset($_POST['submit']))
{
echo "error; you need to submit the form!";
$about_you_dep_gender = $_POST['about_you_dep-gender'];
$email_subject = "New Form submission";
$email_body = "You have received a new filled out form from client $about_you_name.'n'n".
"Dependant Gender: $about_you_dep_gender 'n".
}
javascript在下面,这部分的形式似乎工作良好。
<script>
$(document).ready(function() {
// The maximum number of options
var MAX_OPTIONS = 3;
$('#custom')
.formValidation({
framework: 'bootstrap',
icon: {
valid: 'glyphicon glyphicon-ok',
invalid: 'glyphicon glyphicon-remove',
validating: 'glyphicon glyphicon-refresh'
}
})
// Add button click handler
.on('click', '.addButton', function() {
var $template = $('#depTemplate'),
$clone = $template
.clone()
.removeClass('hide')
.removeAttr('id')
.insertBefore($template),
$dep_name = $clone.find('[name="about_you_dep-name[]"]')
$dep_gender = $clone.find('[name="about_you_dep-gender[]"]')
$dep_dob = $clone.find('[name="about_you_dep-dob[]"]')
$dep_fin = $clone.find('[name="about_you_dep-fin[]"]')
$dep_until = $clone.find('[name="about_you_dep-until[]"]');
// Add new field
$('#custom')
.formValidation('addField', $dep_name)
.formValidation('addField', $dep_gender)
.formValidation('addField', $dep_dob)
.formValidation('addField', $dep_fin)
.formValidation('addField', $dep_until);
})
// Remove button click handler
.on('click', '.removeButton', function() {
var $row = $(this).parents('.form-group'),
$dep_name = $row.find('[name="about_you_dep-name[]"]')
$dep_gender = $row.find('[name="about_you_dep-gender[]"]')
$dep_dob = $row.find('[name="about_you_dep-dob[]"]')
$dep_fin = $row.find('[name="about_you_dep-fin[]"]')
$dep_until = $row.find('[name="about_you_dep-until[]"]');
// Remove element containing the option
$row.remove();
// Remove field
$('#custom')
.formValidation('removeField', $dep_name)
.formValidation('removeField', $dep_gender)
.formValidation('removeField', $dep_dob)
.formValidation('removeField', $dep_fin)
.formValidation('removeField', $dep_until);
})
// Called after adding new field
.on('added.field.fv', function(e, data) {
// data.field --> The field name
// data.element --> The new field element
// data.options --> The new field options
if (data.field === 'about_you_dep-name[]') {
if ($('#custom').find(':visible[name="about_you_dep-name[]"]').length >= MAX_OPTIONS) {
$('#custom').find('.addButton').attr('disabled', 'disabled');
}
}
})
// Called after removing the field
.on('removed.field.fv', function(e, data) {
if (data.field === 'about_you_dep-name[]') {
if ($('#custom').find(':visible[name="about_you_dep-name[]"]').length < MAX_OPTIONS) {
$('#custom').find('.addButton').removeAttr('disabled');
}
}
});
});
当前,当我处理表单时,它返回答案:数组,而不是表单字段的实际输入。任何帮助都将非常感激。提前谢谢你
你必须遍历数组
<?php
if(!isset($_POST['submit']))
{
$dependents = array();
foreach ($_POST['about_you_dep-gender'] as $key => $value) {
$dependents[] = array(
'name' => $_POST['about_you_dep-name'][$key],
'gender' => $_POST['about_you_dep-gender'][$key],
'dob' => $_POST['about_you_dep-dob'][$key],
);
}
$email_subject = "New Form submission";
$email_body = "You have received a new filled out form from client.'n'n";
$email_body .= "Name: " . $aboutYouName . "'n";
foreach ($dependents as $dependent) {
$email_body .= "Dependent Name: " . $dependent['name'] . "'n";
$email_body .= "Dependent Gender: " . $dependent['gender'] . "'n";
$email_body .= "Dependent DOB: " . $dependent['dob'] . "'n";
}
// Send Email
}
相关文章:
- 如何在映射数组中添加换行符
- javascript结合了数组和字典
- 需要帮助设置json数组
- 在用于电子表格的Javascript中输出对象中的数组
- 将数组写入电子表格
- 使用 jQuery 检查电子邮件地址数组
- 在邮件中发送一个 Javascript 数组
- 如何访问用PHP/HTML发送的电子邮件的javascript数组中的元素
- 使用Google电子表格中的值数组填充jQuery自动完成列表
- 使用数组循环将值与另一个电子表格进行比较,然后写入新值
- Node.js:循环,从查询中发送每个匹配行的电子邮件,但如果它通过#匹配数发送电子邮件给同一用户
- 使用json_decode检索ajax发送的javascript数组的电子邮件
- 谷歌电子表格中的数组比较
- 从数组设置Google电子表格单元格值,但所有值都是相同的
- 如何在中分割这些数据以在php中编写电子邮件
- 如何从谷歌表格与javascript组电子邮件
- 如何将整数数组设置为电子表格单元格
- 使用PHP从动态输入字段捕获数组值并通过电子邮件发送
- 如何将活动目录中的电子邮件组列表填充到数组中
- 用于电子邮件验证的正则表达式(最少字符数)