我正在尝试获取使用复选框检查的行的值。因此,当我提交表单时,我想要所选行的值,但我无法弄清楚如何获取它。有人可以帮助我或指导我吗?
<?php
if(isset($_POST['invite'])){
// what should I write here to get value of hidden fields name and email which was selected
}
?>
<!doctype>
<html><head>
<script type="text/javascript" src="jquery-1.4.2.js"></script>
// performing select all /deselect all checkbox operation
<SCRIPT language="javascript">
$(function(){
// add multiple select / deselect functionality
$("#selectall").click(function () {
$('.case').attr('checked', this.checked);
});
// if all checkbox are selected, check the selectall checkbox
// and viceversa
$(".case").click(function(){
if($(".case").length == $(".case:checked").length) {
$("#selectall").attr("checked", "checked");
} else {
$("#selectall").removeAttr("checked");
}
});
});
</SCRIPT>
</head><body>
<div class = 'middle' style = 'width : 700px;background-color:beige'>
// creating grid view
<form type="post" name ="contacts">
<span><input type="checkbox" id="selectall"/></span>
<div class = 'middle row'>NAME</div>
<div class = 'middle row'>E-MAIL</div>
<div class='line'></div>
<div class='line'></div>
<?php foreach($email as $e){
echo "<div>
<span><input type='checkbox' class='case' name='case'/></span>
<div class='row'>".$e['name']."
<input name='cname[]' type='hidden' value =".$e['name']."></div>
<div class='row'>".$e['email']."
<input name='cemail[]' type='hidden' value =".$e['email']."></div>
</div><div class='line'></div>";
}
echo"<input type='submit' name='invite' value='invite'>
</form></div></body></html>";
}?>
答案 0 :(得分:3)
提交表单后,已复选复选框的值会像任何其他表单字段一样显示在$_POST
数组中。在您的情况下,您有多个名为case
的复选框。这些都没有分配特定值,因此如果选中任何复选框,$_POST['case']
将等于on
,所以这对您完全没有帮助。
将复选框的名称更改为case[]
并为每个复选框指定唯一值,$_POST['case']
将在提交后包含所有已检查复选框的值数组。例如,您可以在复选框的value
属性中重复隐藏字段的值。
我写了一个小的PHP脚本,可以帮助你理解,复选框如何与PHP一起工作。只需运行它,使用复选框播放,然后查看$_POST
数组。
<!doctype html>
<html>
<body>
<form method="post">
<input type="checkbox" name="test[]" value="0"/>
<input type="checkbox" name="test[]" value="1"/>
<input type="checkbox" name="test[]" value="2"/>
<input type="checkbox" name="test[]" value="3"/>
<input type="checkbox" name="test[]" value="4"/>
<input type="submit"/>
</form>
<pre><?php var_dump($_POST); ?></pre>
</body>
</html>
如果您想保留隐藏字段并且不想在复选框元素中重复它们的值,您还可以使用其数组的数组键作为复选框值:
<?php
$i = 0;
foreach($email as $e) {
echo "<div>
<span><input type='checkbox' class='case' name='case[]' value='".$i."'/></span>
<div class='row'>".$e['name']."
<input name='cname['".$i."']' type='hidden' value =".$e['name']."></div>
<div class='row'>".$e['email']."
<input name='cemail['".$i."']' type='hidden' value =".$e['email']."></div>
</div><div class='line'></div>";
$i++;
}
现在,如果$_POST['case']
包含值2,4和8,那么您要查找的电子邮件位于$_POST['cemail'][2]
,$_POST['cemail'][4]
和$_POST['cemail'][8]
。当然,同样适用于$_POST['cname']
。
答案 1 :(得分:0)
首先,form
标记的参数中存在错误:
<form type="post"
这应该是
<form method="post"
然后,由于您将名称和电子邮件存储在名为input
和cname[]
的{{1}}中,因此它们将分别在cemail[]
和{{1}中传递变量。请注意,您以它们作为数组传递的方式命名它们,因此实际上$_POST['cname']
是一个数组 - 它包含一个键值对$_POST['cemail']
和输入控件的value属性。实际上,您的姓名和电子邮件将位于$_POST['cname']
和0
变量中。
请分析并阅读PHP手册的Dealing with Forms section。