如何在php中获取带复选框行的值?

时间:2013-02-24 17:29:44

标签: php forms

我正在尝试获取使用复选框检查的行的值。因此,当我提交表单时,我想要所选行的值,但我无法弄清楚如何获取它。有人可以帮助我或指导我吗?

<?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>";
   }?> 

2 个答案:

答案 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"

然后,由于您将名称和电子邮件存储在名为inputcname[]的{​​{1}}中,因此它们将分别在cemail[]和{{1}中传递变量。请注意,您以它们作为数组传递的方式命名它们,因此实际上$_POST['cname']是一个数组 - 它包含一个键值对$_POST['cemail']和输入控件的value属性。实际上,您的姓名和电子邮件将位于$_POST['cname']0变量中。

请分析并阅读PHP手册的Dealing with Forms section