From afa6587eb3ba4696b9c0e6050458380360bf6fd2 Mon Sep 17 00:00:00 2001 From: "fefe.clochette" Date: Thu, 4 Jun 2026 15:04:00 +0200 Subject: [PATCH] Auto-commit for deploy to staging - 2026-06-04 15:04:00 --- migrate.php | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/migrate.php b/migrate.php index 75ec5da..265871d 100644 --- a/migrate.php +++ b/migrate.php @@ -200,16 +200,28 @@ foreach ($families as $f) { // ========================================== echo "
  • Table pf_alloc_categories (Récupération des données) : "; try { - $updated1 = $fam_pdo->exec("UPDATE pf_alloc_categories SET transfer_dest = target, target = '0' WHERE target LIKE 'vers %'"); - - $updated2 = $fam_pdo->exec("UPDATE pf_alloc_categories SET transfer_dest = 'SYSTEM', target = '0' WHERE target = 'SYSTEM'"); - - $fam_pdo->exec("UPDATE pf_alloc_categories SET target = '0' WHERE target NOT REGEXP '^[0-9]+(\.[0-9]+)?$'"); + // Vérifier si la colonne target est encore au format texte (VARCHAR) + $stmtCol = $fam_pdo->query("SHOW COLUMNS FROM pf_alloc_categories LIKE 'target'"); + $colInfo = $stmtCol->fetch(PDO::FETCH_ASSOC); - echo "" . ($updated1 + $updated2) . " destinations récupérées et déplacées.
  • "; - - $fam_pdo->exec("ALTER TABLE pf_alloc_categories MODIFY target DECIMAL(10,2) DEFAULT 0.00"); - echo "
  • Colonne 'target' re-sécurisée en format monétaire DECIMAL(10,2).
  • "; + if ($colInfo && strpos(strtolower($colInfo['Type']), 'varchar') !== false) { + // 1. Déplacer les textes "vers..." + $updated1 = $fam_pdo->exec("UPDATE pf_alloc_categories SET transfer_dest = target, target = '0' WHERE target LIKE 'vers %'"); + + // 2. Gérer le mot 'SYSTEM' + $updated2 = $fam_pdo->exec("UPDATE pf_alloc_categories SET transfer_dest = 'SYSTEM', target = '0' WHERE target = 'SYSTEM'"); + + // 3. Sécurité absolue avant conversion + $fam_pdo->exec("UPDATE pf_alloc_categories SET target = '0' WHERE target NOT REGEXP '^[0-9]+(\\\\.[0-9]+)?$'"); + + echo "" . ($updated1 + $updated2) . " destinations récupérées et déplacées.
    "; + + // 4. Remettre la colonne en format numérique + $fam_pdo->exec("ALTER TABLE pf_alloc_categories MODIFY target DECIMAL(10,2) DEFAULT 0.00"); + echo "Colonne 'target' re-sécurisée en format monétaire DECIMAL(10,2)."; + } else { + echo "La colonne 'target' est déjà au format DECIMAL, transfert ignoré."; + } } catch (\PDOException $e) { echo "Erreur : " . $e->getMessage() . ""; }