diff --git a/config/fonctions_bdd.php b/config/fonctions_bdd.php index 0f69575..e369d71 100644 --- a/config/fonctions_bdd.php +++ b/config/fonctions_bdd.php @@ -83,6 +83,11 @@ function Ouverture_bdd($bdd_host = BDD_HOST, $bdd_user = BDD_USER, $bdd_password } + + + + +/* //************************************************************************************************************ // Fonction : Ouverture de la BDD d'un bateau // Reçoit : L'ID du bateau (sa clé_primaire dans TB_Bateaux) @@ -93,6 +98,58 @@ function Ouverture_bdd_bateau($id_bateau) Ouverture_bdd(BDD_BATEAUX_HOST.":".BDD_BATEAUX_PORT, BDD_BATEAUX_USER, BDD_BATEAUX_PASSWORD, BDD_BATEAUX_DATABASE_PREFIXE.$id_bateau); } +*/ +//************************************************************************************************************ +// Fonction : Ouverture de la BDD ACTIVE d'un bateau (cf synthèse §35-36 : une base par génération, jamais +// supprimée ; celle-ci résout et ouvre la génération actuellement active). +// Reçoit : L'ID du bateau (sa clé_primaire dans TB_Bateaux) +// Retour : true si la connexion a réussi, false si aucune génération active n'a été trouvée pour ce bateau +// (bateau affecté mais n'ayant encore jamais transmis d'archive - CE N'EST PAS une erreur de +// connexion, à la page appelante d'afficher un message adapté). +//************************************************************************************************************ +function Ouverture_bdd_bateau($id_bateau) +{ + // Connexion dédiée et temporaire à la BDD principale, pour résoudre le nom de la génération active - ne + // jamais utiliser $_SESSION['db'] ici : elle peut déjà pointer vers la BDD d'un AUTRE bateau, ouverte par + // un appel précédent à cette même fonction. + $db_principale = new mysqli(BDD_HOST, BDD_USER, BDD_PASSWORD, BDD_DATABASE); + if ($db_principale->connect_error) + { + Enregistrement_log("\tOuverture_bdd_bateau : échec de connexion à la BDD principale pour résoudre la génération active", __FILE__, __LINE__); + return false; + } + + $requete = "SELECT Nom_base FROM TB_Generations_bateau WHERE ID_Bateau=? AND Date_fin IS NULL"; + $stmt = $db_principale->prepare($requete); + $stmt->bind_param('i', $id_bateau); + $stmt->execute(); + $stmt->bind_result($nom_base); + $trouve = $stmt->fetch(); + $stmt->close(); + $db_principale->close(); + + if (!$trouve) + { + // Aucune génération active : ce bateau n'a encore jamais transmis d'archive. + return false; + } + + Ouverture_bdd(BDD_BATEAUX_HOST.":".BDD_BATEAUX_PORT, BDD_BATEAUX_USER, BDD_BATEAUX_PASSWORD, $nom_base); + return true; +} + + + + + + + + + + + + + diff --git a/sql/adresse_netbird.sql b/sql/adresse_netbird.sql new file mode 100644 index 0000000..c22fbc9 --- /dev/null +++ b/sql/adresse_netbird.sql @@ -0,0 +1,14 @@ +-- ============================================================================ +-- TB_Cartes.Adresse_netbird : nécessaire pour joindre l'API du bateau (accès +-- "live" PWA et script cron d'archivage) via NetBird. Résolue systématiquement +-- via l'affectation active (TB_Affectations_bateau), jamais stockée +-- directement sur TB_Bateaux - un remplacement de boîtier met alors à jour +-- les deux usages (archivage + accès live) d'un seul geste (cf synthèse §36). +-- +-- TB_Cartes.ID_Bateau et Date_bateau (ancien mécanisme d'affectation directe, +-- confirmé obsolète, plus écrit par aucun code) ne sont volontairement pas +-- touchés ici - suppression éventuelle à traiter séparément, en connaissance +-- de cause, si souhaité. +-- ============================================================================ +ALTER TABLE `TB_Cartes` + ADD COLUMN `Adresse_netbird` VARCHAR(45) NULL DEFAULT NULL COMMENT 'Adresse IP NetBird du boîtier, pour joindre son API (shipheart_api)' AFTER `Adresse_mac`;