0

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

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

2 回答 2

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']

于 2013-02-24T18:21:31.103 回答
0

首先,form标签的参数有一个错误:

<form type="post"

这应该读

<form method="post"

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

请分析并阅读PHP 手册的处理表单部分

于 2013-02-24T17:45:40.893 回答