Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让我的复选框循环单独更新每个复选框,而不是在php和mySQL中同时更新它们?_Php_Mysql_Checkbox_Mysqli - Fatal编程技术网

如何让我的复选框循环单独更新每个复选框,而不是在php和mySQL中同时更新它们?

如何让我的复选框循环单独更新每个复选框,而不是在php和mySQL中同时更新它们?,php,mysql,checkbox,mysqli,Php,Mysql,Checkbox,Mysqli,我可以更新复选框,但它们不能完全正常工作。当两个框都为空时,我可以选中其中一个,并且两个框都会更新为选中。如果两个框都选中,我必须取消选中这两个框,以便将它们更新为未选中。我不能让一个框被选中,另一个框被取消选中 有什么想法吗 我真的很感谢你的帮助 mySQL表格 id | departments_fk | qsps_fk | visible 270 | 1 | 218 | 1 271 | 22 | 218 |

我可以更新复选框,但它们不能完全正常工作。当两个框都为空时,我可以选中其中一个,并且两个框都会更新为选中。如果两个框都选中,我必须取消选中这两个框,以便将它们更新为未选中。我不能让一个框被选中,另一个框被取消选中

有什么想法吗

我真的很感谢你的帮助

mySQL表格

 id | departments_fk | qsps_fk | visible
270 |             1  |    218  |     1
271 |            22  |    218  |     0
272 |             1  |    219  |     0
273 |            22  |    219  |     1
274 |             1  |    220  |     1
275 |            22  |    220  |     1
HTML代码

<form action="edit-qsps.php?qspName=<?php echo $current_qsp["id"]; ?>" method="post">

<div class="qsp-name">QSP Name:

<input type="text" name="qsp_name" class="name-box" value="<?php echo $current_qsp["qsp_name"]; ?>" />

 </div>


 <div class="rev">QSP Rev:

 <input type="text" name="qsp_rev" class="rev-box" value="<?php echo $current_qsp["qsp_rev"]; ?>" />

 </div>

 <div class="qsp-departments">Department:</div>

 <?php
     global $db_connection;
     global $department_checked;
     global $current_qsp;
     global $id_department;

     echo "<ul>";

        $qsp_department_list = find_all_departments();
        $department['id'] = $id_department;

       while($department = mysqli_fetch_assoc($qsp_department_list)) {

            echo  htmlentities($department['department_name']);
            echo " : ";

            $qsp_department_checks = find_all_checks_for_department($current_qsp['id']);
            $checks = $department_checked;

            global $department_checked;

                while($checks = mysqli_fetch_assoc($qsp_department_checks)) {

                    if ($current_qsp['id'] == $checks['qsps_fk'] && $checks['departments_fk'] == $department['id']) {

                    echo "<div class='department-checked'>";            
                    echo "<input type='hidden' name='hidden-checkBoxes[]' value='";
                    echo htmlentities($checks['departments_fk']);
                    echo "' />";
                    echo "<input type='checkbox' name='department-checkBoxes[]' value='";
                    echo htmlentities($checks['departments_fk']);
                    echo "' ";

                        if($checks['checked'] == '1'){
                            echo "checked='checked'";
                        }
                    echo " />";

                    echo "</label>";
                    echo "</div>";
                    } 
                }   
            mysqli_free_result($qsp_department_checks);
            }
        mysqli_free_result($qsp_department_list);
        echo "</ul>";
        ?>

    <div class="create-btn">
    <input type="submit" name="submit" value="UPDATE QSP" />
</div>
</form>

您需要循环查看“部门复选框”。现在您并没有得到它们的值,只是检查是否设置了整个POST变量

if(!empty($_POST['department-checkBoxes'])) {
    foreach($_POST['department-checkBoxes'] as $check) {

     echo $check;
    //only checked checkboxes come to $POST
    $query2 = "UPDATE junction_departments_qsps SET ";
    $query2 .= "checked = 1 ";
    $query2 .= "WHERE departments_fk = {$checked} ";
    $query2 .= "AND qsps_fk = {$id_qsp} ";
    $result2 = mysqli_query($db_connection, $query2); 

}
形式


谢谢你的快速回答,但我不确定该在哪里使用此代码。是否在我的流程代码或表单中使用它?如果在流程代码中使用,是否需要运行第二个查询?在我完成第一个foreach循环和查询之后,我会使用它吗。$U POST中将只显示选中的复选框。感谢您的澄清,但我仍然无法使其正常工作。请粘贴您的最新代码并指定问题所在。我在上面添加了我的代码。数据库似乎根本没有更新。在我的原始代码中,它至少更新了两个复选框。非常感谢。
if (isset($_POST['submit'])) {
global $db_connection;
global $id_department;

    $id_qsp = $current_qsp["id"];
    $qsp_name = mysql_prep($_POST["qsp_name"]);
    $qsp_rev = mysql_prep($_POST["qsp_rev"]);

    $query1  = "UPDATE qsps SET ";
    $query1 .= "qsp_name = '{$qsp_name}', ";
    $query1 .= "qsp_rev = '{$qsp_rev}' ";
    $query1 .= "WHERE id = {$id_qsp} ";
    $query1 .= "LIMIT 1";
    $result1 = mysqli_query($db_connection, $query1);


        if(!empty($_POST['department-checkBoxes'])) {
            foreach($_POST['department-checkBoxes'] as $check) {

             echo $check;
            //only checked checkboxes come to $POST
            $query2 = "UPDATE junction_departments_qsps SET ";
            $query2 .= "checked = 1 ";
            $query2 .= "WHERE departments_fk = {$check} ";
            $query2 .= "AND qsps_fk = {$id_qsp} ";
            $result2 = mysqli_query($db_connection, $query2); 
            }           
        }

        redirect_to("edit-qsps.php");
    } else {
        // Failure
        $message = "Employee Update Failed.";
    }
if(!empty($_POST['department-checkBoxes'])) {
    foreach($_POST['department-checkBoxes'] as $check) {

     echo $check;
    //only checked checkboxes come to $POST
    $query2 = "UPDATE junction_departments_qsps SET ";
    $query2 .= "checked = 1 ";
    $query2 .= "WHERE departments_fk = {$checked} ";
    $query2 .= "AND qsps_fk = {$id_qsp} ";
    $result2 = mysqli_query($db_connection, $query2); 

}
<form action="edit-qsps.php?qspName=<?php echo $current_qsp["id"]; ?>" method="post">
      <div class="qsp-name">QSP Name:
        <input type="text" name="qsp_name" class="name-box" value="<?php echo $current_qsp["qsp_name"]; ?>" />
      </div>

    <div class="rev">QSP Rev:
        <input type="text" name="qsp_rev" class="rev-box" value="<?php echo $current_qsp["qsp_rev"]; ?>" />
      </div>

        <div class="qsp-departments">Department:</div>
        <?php
        global $db_connection;
        global $current_qsp;

        echo "<ul>";

        $qsp_department_list = find_all_departments();

        while($department = mysqli_fetch_assoc($qsp_department_list)) {

            echo  htmlentities($department['department_name']);
            echo " : ";

            $qsp_department_checks = find_all_checks_for_department($current_qsp['id']);

                while($checks = mysqli_fetch_assoc($qsp_department_checks)) {

                    $id_checked = htmlentities($checks['id']);

                    if ($current_qsp['id'] == $checks['qsps_fk'] && $checks['departments_fk'] == $department['id']) {

                        echo "<div class='department-checked'>";            

                        echo "<input type='checkbox' name='hidden-checkBoxes[]' value='";
                        echo htmlentities($checks['id']);
                        echo "' style='display:none' checked='checked' />";

                        echo "<input type='checkbox' name='department-checkBoxes[]' value='";
                        echo htmlentities($checks['id']);
                        echo "' ";

                        if($checks['checked'] == '1'){
                            echo "checked='checked'";
                        }
                        echo " />";                             

                        echo "</label>";
                        echo "</div>";
                    } 
                }   
            mysqli_free_result($qsp_department_checks);
            }
        mysqli_free_result($qsp_department_list);
        echo "</ul>";

        ?>

        <div class="employee-category">Employee Category:</div>
        <?php echo edit_employee_category_checkBoxes(); ?>

     <div class="create-btn">
     <input type="submit" name="submit" value="UPDATE QSP" />
     </div>
    </form>
<?php
if (isset($_POST['submit'])) {
global $db_connection;

    $id_qsp = $current_qsp["id"];
    $qsp_name = mysql_prep($_POST["qsp_name"]);
    $qsp_rev = mysql_prep($_POST["qsp_rev"]);

    $query1  = "UPDATE qsps SET ";
    $query1 .= "qsp_name = '{$qsp_name}', ";
    $query1 .= "qsp_rev = '{$qsp_rev}' ";
    $query1 .= "WHERE id = {$id_qsp} ";
    $query1 .= "LIMIT 1";
    $result1 = mysqli_query($db_connection, $query1);

    $departments_id = $_POST["hidden-checkBoxes"];
    $hidden_depart = $_POST["department-checkBoxes"];

    if(isset($_POST['hidden-checkBoxes'])) {

        foreach ($departments_id as $depart_id){ 

        $visible_check = in_array($depart_id, $hidden_depart) ? 1 : 0;

            $query2 = "UPDATE junction_departments_qsps SET ";
            $query2 .= "checked = {$visible_check} ";
            $query2 .= "WHERE id = {$depart_id} ";

            $result2 = mysqli_query($db_connection, $query2); 
            }   
    }

        redirect_to("edit-qsps.php");
    } else {
        // Failure
        $message = "Employee Update Failed.";
    }

?>