setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { echo json_encode(['error' => 'Database connection failed: ' . $e->getMessage()]); exit(); } // Check if the request is a POST request if ($_SERVER['REQUEST_METHOD'] == 'POST') { // Get the data from the POST request $invoiceid = $_POST['invoiceid'] ?? ''; $movevalue = $_POST['movevalue'] ?? ''; if ($movevalue == "NO") { try { // Select rows to process before deletion $selectQuery = "SELECT * FROM invoices WHERE invoiceid = :invoiceid"; $stmt = $db->prepare($selectQuery); $stmt->bindValue(':invoiceid', $invoiceid, PDO::PARAM_INT); $stmt->execute(); $rowsToDelete = $stmt->fetchAll(PDO::FETCH_ASSOC); // Array to store rows that need deletion $rowsToDeleteFinal = []; // Loop through selected rows to check movevalue and add to deletion list foreach ($rowsToDelete as $row) { if ($row['movevalue'] == 'NO') { $rowsToDeleteFinal[] = $row; } } // Loop through rows to delete (if needed for logging or further processing) foreach ($rowsToDeleteFinal as $rowToDelete) { // Perform actions with each row if needed // For example: logging, further processing, etc. // You can echo or log these rows before deletion echo json_encode(['info' => 'Processing row: ' . json_encode($rowToDelete)]); // Prepare DELETE statement $deleteStmt = $db->prepare('DELETE FROM invoices WHERE id = :id'); $deleteStmt->bindValue(':id', $rowToDelete['id'], PDO::PARAM_INT); // Execute DELETE statement $deleteStmt->execute(); // Check if row was deleted if ($deleteStmt->rowCount() > 0) { echo json_encode(['success' => 'Row deleted successfully.', 'deleted_row' => $deleteStmt->rowCount()]); } else { echo json_encode(['message' => 'No row matched the given id.']); } } } catch (PDOException $e) { echo json_encode(['error' => 'Error processing or deleting rows: ' . $e->getMessage()]); } } else { echo json_encode(['message' => 'movevalue is not NO.']); } } else { echo json_encode(['error' => 'Invalid request method.']); } // Close database connection $db = null; ?>