Php 复选框';当我选择多个复选框时,s不保留所有值

Php 复选框';当我选择多个复选框时,s不保留所有值,php,mysqli,Php,Mysqli,我要插入员工考勤。当我选中多个复选框时,它将使用两个复选框值1和另一个复选框值0。因此,如何解决此问题,请帮助我。这是我的表格代码 <form action="coll.php" method="post" name="create_grading" id="create_grading"> <table width="30%" border="0" cellpadding="2" cellspacing="3" class="mainTable">

我要插入员工考勤。当我选中多个复选框时,它将使用两个复选框值1和另一个复选框值0。因此,如何解决此问题,请帮助我。这是我的表格代码

<form action="coll.php" method="post" name="create_grading" id="create_grading">  
        <table width="30%" border="0" cellpadding="2" cellspacing="3" class="mainTable">
            <tr>
                <th><input type="checkbox" id="selectall" /></th>
                <th>name</th>
            </tr>
            <?php
            $sql = "select * from employee";
            $query = mysqli_query($con, $sql);
            while ($row = mysqli_fetch_array($query)) {
                ?>   
                <tr>
                    <td><input type="hidden" name="eid[]" value="<?php echo $row['eid']; ?>"/>
                        <input name="status[]" class="case" type="checkbox" value="1" /><input name="status[]" class="case" type="hidden" value="0" /></td>
                    <td align="center"><?php echo $row['employee_name'] ?></td>
                </tr>
            <?php }; ?>

            <tr>
                <td></td>
                <td><input type="submit" name="Submit" id="Submit" value="Submit" /></td>       
            </tr>
        </table>
    </form>

名称
这是我的插入代码

$host = "localhost";
$user = "root";
$pass = "";
$db = "multiple_row_insert";
$con = mysqli_connect($host, $user, $pass, $db);


if (isset($_POST['Submit'])) {
    $eid = $_POST['eid'];
    $count = count($eid);
    for ($i = 0; $i < $count; $i++) {
        $status = $_POST['status'][$i];
        $eid2 = $_POST['eid'][$i];
        $query = "INSERT INTO time(eid,status) VALUES ('$eid2','$status')";
        $query = mysqli_query($con, $query);
    }
}
$host=“localhost”;
$user=“root”;
$pass=“”;
$db=“多行插入”;
$con=mysqli_connect($host、$user、$pass、$db);
如果(isset($_POST['Submit'])){
$eid=$_POST['eid'];
$count=计数($eid);
对于($i=0;$i<$count;$i++){
$status=$_POST['status'][$i];
$eid2=$_POST['eid'][$i];
$query=“插入时间(eid,状态)值(“$eid2”,“$status”)”;
$query=mysqli\u query($con,$query);
}
}
所以基本上你只需要一个复选框,你可以改变你输入的名字。然后在您的后端使用类似于:

$_POST['status_'.$i]
在每种情况下,检测其是否与此$\u帖子的“isset”匹配

编辑:

您的代码应该是这样的(未经测试,很抱歉,如果有语法错误,您可以通过任何方式修复):

$host=“localhost”;
$user=“root”;
$pass=“”;
$db=“多行插入”;
$con=mysqli_connect($host、$user、$pass、$db);
如果(isset($_POST['Submit'])){
$eid=$_POST['eid'];
$count=计数($eid);
对于($i=0;$i<$count;$i++){
$status=0;
if(isset($\u POST['status.'$i])//检查是否设置了复选框(值1/已选中)
$status=1;
$eid2=$_POST['eid'][$i];
$query=“插入时间(eid,状态)值(“$eid2”,“$status”)”;
$query=mysqli\u query($con,$query);
}
}
以及您的前端代码:

<form action="coll.php" method="post" name="create_grading" id="create_grading">  
        <table width="30%" border="0" cellpadding="2" cellspacing="3" class="mainTable">
            <tr>
                <th><input type="checkbox" id="selectall" /></th>
                <th>name</th>
            </tr>
            <?php
            $sql = "select * from employee";
            $query = mysqli_query($con, $sql);
            $i = 0;
            while ($row = mysqli_fetch_array($query)) {
                ?>   
                <tr>
                    <td><input type="hidden" name="eid[]" value="<?php echo $row['eid']; ?>"/>
                        <input name="status_<?php echo $i; ?>" class="case" type="checkbox" value="0" /></td>
                    <td align="center"><?php echo $row['employee_name']; ?></td>
                </tr>
            <?php $i++; } ?>

            <tr>
                <td></td>
                <td><input type="submit" name="Submit" id="Submit" value="Submit" /></td>       
            </tr>
        </table>
    </form>             

名称

您只需要知道是否选中了1个复选框,仅此而已,在本例中不需要两个复选框。表示了解的语句。即使是这样也不安全!我无法解决这个问题,所以如果给我完整的代码……这将对我帮助很大,请帮助我,因为我无法理解解决这个问题需要做些什么,只要用你的逻辑,伙计,我不知道为什么Abracadver删除了他的评论,但基本上在你的for,$status=$\u POST['status'][$I];
$host = "localhost";
$user = "root";
$pass = "";
$db = "multiple_row_insert";
$con = mysqli_connect($host, $user, $pass, $db);


if (isset($_POST['Submit'])) {
    $eid = $_POST['eid'];
    $count = count($eid);
    for ($i = 0; $i < $count; $i++) {
        $status = 0;
        if(isset($_POST['status_'.$i])) //check if checkbox is setted (value 1 / checked)
          $status = 1;
        $eid2 = $_POST['eid'][$i];
        $query = "INSERT INTO time(eid,status) VALUES ('$eid2','$status')";
        $query = mysqli_query($con, $query);
    }
}
<form action="coll.php" method="post" name="create_grading" id="create_grading">  
        <table width="30%" border="0" cellpadding="2" cellspacing="3" class="mainTable">
            <tr>
                <th><input type="checkbox" id="selectall" /></th>
                <th>name</th>
            </tr>
            <?php
            $sql = "select * from employee";
            $query = mysqli_query($con, $sql);
            $i = 0;
            while ($row = mysqli_fetch_array($query)) {
                ?>   
                <tr>
                    <td><input type="hidden" name="eid[]" value="<?php echo $row['eid']; ?>"/>
                        <input name="status_<?php echo $i; ?>" class="case" type="checkbox" value="0" /></td>
                    <td align="center"><?php echo $row['employee_name']; ?></td>
                </tr>
            <?php $i++; } ?>

            <tr>
                <td></td>
                <td><input type="submit" name="Submit" id="Submit" value="Submit" /></td>       
            </tr>
        </table>
    </form>