如何将已检查/未检查的复选框值数组传递给PHP电子邮件生成器?
发布时间:2020-12-13 21:42:12 所属栏目:PHP教程 来源:网络整理
导读:我在表单中添加了一个复选框,用户可以动态添加行.您可以看到表格 here. 我使用数组将每行的值传递给PHP电子邮件生成器,所有这些都适用于其他输入,但我无法使复选框工作.复选框输入目前如下所示: input type="checkbox" name="mailing[]" value="Yes" 然后在
我在表单中添加了一个复选框,用户可以动态添加行.您可以看到表格
here.
我使用数组将每行的值传递给PHP电子邮件生成器,所有这些都适用于其他输入,但我无法使复选框工作.复选框输入目前如下所示: <input type="checkbox" name="mailing[]" value="Yes"> 然后在PHP我有这个: $mailing = trim(stripslashes($_POST['mailing'][$i])); 但它没有按预期工作,即我只检查了第一个复选框的“是”,并且没有检查后续复选框. 另一个问题是,我希望为未选中的复选框生成值“否”. 有人可以帮忙吗? 谢谢, 缺口 形成: <form method="post" action="bookingenginetest.php"> <p> <input type="checkbox" name="mailing[]" value="Yes"> <label>Full Name:</label> <input type="text" name="name[]"> <label>Email:</label> <input type="text" name="email[]"> <label>Telephone:</label> <input type="text" name="telephone[]"> <span class="remove">Remove</span> </p> <p> <span class="add">Add person</span><br /><br /><input type="submit" name="submit" id="submit" value="Submit" class="submit-button" /> </p> </form> 克隆脚本: $(document).ready(function() { $(".add").click(function() { var x = $("form > p:first-child").clone(true).insertBefore("form > p:last-child"); x.find('input').each(function() { this.value = ''; }); return false; }); $(".remove").click(function() { $(this).parent().remove(); }); }); 解决方法$mailing = array(); foreach($_POST as $v){ $mailing[] = trim(stripslashes($v)); } 要处理未选中的框,最好使用唯一值设置每个复选框: <input type="checkbox" name="mailing[1]" value="Yes"> <input type="checkbox" name="mailing[2]" value="Yes"> 要么 <input type="checkbox" name="mailing[a]" value="Yes"> <input type="checkbox" name="mailing[b]" value="Yes"> 然后有一个复选框列表: $boxes = array(1,2,3); $mailing = array(); $p = array_key_exists('mailing',$_POST) ? $_POST['mailing'] : array(); foreach($boxes as $v){ if(array_key_exists($v,$p)){ $mailing[$v] = trim(stripslashes($p[$v])); }else{ $mailing[$v] = 'No'; } } print_r($mailing); 你也可以使用它来代替一些复选框: $boxes = 3; $mailing = array(); $p = array_key_exists('mailing',$_POST) ? $_POST['mailing'] : array(); for($v = 0; $v < $boxes; $v++){ if(array_key_exists($v,$p)){ $mailing[$v] = trim(stripslashes($p[$v])); }else{ $mailing[$v] = 'No'; } } print_r($mailing); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |