import xls update
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
require_once(__DIR__ . '/class/db-functions.php');
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
if (!isset($_GET['template_id']) || !is_numeric($_GET['template_id'])) {
|
||||
echo json_encode(["success" => false, "message" => "Invalid template ID"]);
|
||||
exit;
|
||||
}
|
||||
|
||||
$template_id = intval($_GET['template_id']);
|
||||
|
||||
try {
|
||||
$db = DBHandlerSelect::getInstance();
|
||||
$pdo = $db->getConnection();
|
||||
|
||||
// 1️⃣ Recuperiamo il nome della tabella target da `excel_templates`
|
||||
$stmt = $pdo->prepare("SELECT target_table FROM excel_templates WHERE id = ?");
|
||||
$stmt->execute([$template_id]);
|
||||
$template = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
if (!$template || empty($template['target_table'])) {
|
||||
echo json_encode(["success" => false, "message" => "Template not found or missing target table"]);
|
||||
exit;
|
||||
}
|
||||
|
||||
$target_table = $template['target_table'];
|
||||
|
||||
// 2️⃣ Recuperiamo le associazioni già esistenti per il template_id
|
||||
$stmt = $pdo->prepare("SELECT excel_column, mysql_column, headerexcel FROM excel_column_mappings WHERE template_id = ?");
|
||||
$stmt->execute([$template_id]);
|
||||
$existing_mappings = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
// Creiamo gli array delle colonne già mappate
|
||||
$mapped_xls_columns = array_column($existing_mappings, 'excel_column');
|
||||
$mapped_mysql_columns = array_column($existing_mappings, 'mysql_column'); // CORRETTO PER FILTRARE!
|
||||
|
||||
// 3️⃣ Recuperiamo tutte le colonne disponibili nella tabella MySQL target
|
||||
$stmt = $pdo->prepare("SHOW COLUMNS FROM `$target_table`");
|
||||
$stmt->execute();
|
||||
$table_columns = $stmt->fetchAll(PDO::FETCH_COLUMN);
|
||||
|
||||
// 🔥 FIX: Rimuoviamo le colonne MySQL che sono già state mappate!
|
||||
$remaining_mysql_columns = array_values(array_diff($table_columns, $mapped_mysql_columns));
|
||||
|
||||
// 4️⃣ Se abbiamo salvato gli header XLSX in `headerexcel`, li usiamo per calcolare le colonne XLSX non mappate
|
||||
$headerexcel = !empty($existing_mappings) ? $existing_mappings[0]['headerexcel'] : '';
|
||||
$all_xls_columns = !empty($headerexcel) ? explode(',', $headerexcel) : [];
|
||||
$remaining_xls_columns = array_values(array_diff($all_xls_columns, $mapped_xls_columns));
|
||||
|
||||
// 5️⃣ Invio dei dati al frontend
|
||||
echo json_encode([
|
||||
"success" => true,
|
||||
"mappings" => $existing_mappings,
|
||||
"remaining_xls_columns" => $remaining_xls_columns,
|
||||
"remaining_mysql_columns" => $remaining_mysql_columns // 🔥 ORA LE COLONNE MYSQL SONO FILTRATE!
|
||||
]);
|
||||
} catch (PDOException $e) {
|
||||
echo json_encode(["success" => false, "message" => "Database error: " . $e->getMessage()]);
|
||||
}
|
||||
Reference in New Issue
Block a user