2017-01-21 8 views
0

현재 코드가 테이블의 모든 행을 삭제하는 것으로 보입니다.PHP 폼에서 상자가 선택 취소 된 경우 다중 MySQL 행 삭제

선택하지 않은 항목 만 삭제해야합니다.

$assigned_array = array($_POST['employee_assigned']); 

     $assigned_employees = implode (",", $assigned_array); 

// update unchecked assignments 
     // get all employees and delete the ones not in the checked list 
      $get_emp_sql = "SELECT * FROM `accounts` WHERE `permissions` > 0"; 
      $get_emp_result = mysqli_query($dblink, $get_emp_sql); 
      while ($get_emp_row = mysqli_fetch_array($get_emp_result)) { 
       // delete rows that are not checked 
        $delete_assignment = "DELETE FROM `provider_assignments` WHERE `provider_id`='".$pro_id."' AND '".$get_emp_row['id']."' NOT IN ('".$assigned_employees."')"; 
        if (mysqli_query($dblink, $delete_assignment)) { 

        } else { 
         die ("Unassignment error."); 
        } 
      } 

이 현재 (그 문제의 추가,하지만 삭제) 체크 박스를 포함한 모든 행을 삭제합니다

여기 내 코드입니다.

선택란을 추가해야하며 선택하지 않으면 제거하십시오.

+0

여기서 uncheck 체크 박스의 값을 $ unassigned_employees 변수에 전달하는 코드는 무엇입니까? –

+0

그것이 내가 붙어있는 곳입니다. 나는 나의 노선의 마지막 줄에 언급 된 것처럼 그 길을 가지 않기로 결정했다. – MktCloud

+0

foreach에서 사용하기 전에 값을 $ unassigned_employees에 전달해야합니다. –

답변

1

확인 된 모든 직원 ID의 배열이 만들어졌습니다.

if (strlen($_POST['employee_assigned']) > 0) { 
     $assigned_employees = implode (",", $_POST['employee_assigned']); 
     } 

     // update unchecked assignments 
     // get all employees and delete the ones not in the clicked list 
      $get_emp_sql = "SELECT * FROM `accounts` WHERE `permissions` > 0"; 
      $get_emp_result = mysqli_query($dblink, $get_emp_sql); 
      while ($get_emp_row = mysqli_fetch_array($get_emp_result)) { 
       if (strlen($assigned_employees == 0)) { 
        // delete all rows for this provider 
         $delete_assignment = "DELETE FROM `provider_assignments` WHERE `provider_id`='".$pro_id."'"; 
       } else { 
        // delete rows that are not checked 
         $delete_assignment = "DELETE FROM `provider_assignments` WHERE `provider_id`='".$pro_id."' AND '".$get_emp_row['id']."' NOT IN ('".$assigned_employees."')"; 
       } 
        if (mysqli_query($dblink, $delete_assignment)) { 

        } else { 
         die ("Unassignment error."); 
        } 
      } 




    // update checked assignments 
     if (strlen($_POST['employee_assigned']) > 0) { 
     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"); 
          } 
        } 
     } 
     } 

이 코드는 효과가 있습니다. 모든 의견을 환영합니다!