2017-01-21 18 views
0

Мой текущий код, кажется, удаляет каждую строку таблицы.Удалите несколько строк MySQL, когда флажки сняты с отметки в форме PHP

Необходимо удалить только те, которые не отмечены.

вот мой код:

$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

где ваш код для передачи значения снятия флажка в переменную $ unassigned_employees? –

+0

Вот где я застрял. Я решил не идти по этому маршруту, поскольку последняя строка моего сообщения упоминается. – MktCloud

+0

Вы должны передать значение $ unassigned_employees перед его использованием в foreach –

ответ

1

Создал массив всех зарегистрированных идентификаторов сотрудников.

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"); 
          } 
        } 
     } 
     } 

Этот код отлично работает. Любые комментарии приветствуются!

 Смежные вопросы

  • Нет связанных вопросов^_^