vendredi 20 janvier 2017

Delete multiple MySQL rows when boxes are Unchecked on PHP Form

Have a table called "provider_assignments".

The columns in provider_assignments are: id, provider_id, employee_id.

On the Manage Provider page, all employees are listed from table "accounts" with permissions > 0. (Employees are given permissions of either 5 or 9).

If there is a row in "provider_assignments" with "provider_id" of the current provider_id (specified in url using ?provider_id=) AND "employee_id" of the employee id from array, the "assigned" checkbox is checked.

Currently, I am able to insert a new row in "provider_assignments" if an unchecked box becomes checked. All checkboxes have the same name: "employee_assigned[]" using foreach.

I now need to remove any existing rows in "provider_assignments" for any unchecked boxes.

I was going to try to create a comma delimited list and explode, but I need the employee id, not just an array number ([1], [2], etc)

Exploding $unassigned_employees won't give me the employee ID.

// Update Provider
elseif (isset($_POST['update_pro_submit'])) {
    // inputs
        $pro_name = $_POST['pro_name'];
        $pro_firstname = $_POST['pro_firstname'];
        $pro_lastname = $_POST['pro_lastname'];
        $pro_email = $_POST['pro_email'];
        $pro_username = $_POST['pro_username'];
        $pro_password = hash("sha256", $_POST['pro_password']);
        $pro_cpassword = hash("sha256", $_POST['pro_cpassword']);
        $pro_permissions = $_POST['pro_permissions'];
        $pro_phone = $_POST['pro_phone'];
        $pro_id = $_POST['pro_id'];




    // update checked assignments
        foreach ($_POST['employee_assigned'] as $assign_this_employee) {
            // check for existing assignment
                $check_exist = "SELECT * FROM `provider_assignments` WHERE `provider_id` = '".$pro_id."' AND `employee_id` = '".$assign_this_employee."'";
                $exist_result = mysqli_query($dblink, $check_exist);
                $exist_count = mysqli_num_rows ($exist_result);

                // if assignment doesn't exist, insert assignment
                    if ($exist_count == 0) {
                        // insert sql
                            $add_assignment_sql = "INSERT INTO `provider_assignments` (`provider_id`, `employee_id`) VALUES ('".$pro_id."', '".$assign_this_employee."')";
                            // execute sql
                            if (mysqli_query($dblink, $add_assignment_sql)) {
                            } else {
                                die ("assignment error");
                            }
                    }
        }

    // update unchecked assignments
        foreach ($unassigned_employees as $unassigned_employee) {
            // check for existing assignment
                $check_pre_exist = "SELECT * FROM `provider_assignments` WHERE `provider_id` = '".$pro_id."' AND `employee_id` = '".$unassigned_employee."'";
                $check_pre_result = mysqli_query($dblink, $check_pre_exist);
                $check_pre_count = mysqli_num_rows($check_pre_result);

                if ($check_pre_count == 1) {
                    // removal sql
                        $delete_pre_assign = "DELETE FROM `provider_assignments` WHERE `provider_id` = '".$pro_id."' AND `employee_id` = '".$unassigned_employee."'";
                    // execute sql
                        if (mysqli_query($dblink, $delete_pre_assign)) {
                        } else {
                            die ("unassignment error");
                        }
        }

Any help greatly appreciated.




Aucun commentaire:

Enregistrer un commentaire