# 📌 CONTEXTE : Bug doublons dans la table 'Chantiers'
*Dernière mise à jour : 16/08/2026 par Antoine*
*Statut : ⏳ En cours*

---
## **🔍 Description du Problème**
- **Titre** : des doublons apparaissent dans la table 'Chantiers' de la database d'un workspace

## **💡 Hypothèses & Pistes**
-  les pages-ODETOOL et Page-Chantier ont toutes deux accès à la table 'chantier'. La structure existante de la database autorise une meilleure 'isolation des données: la page-odetool n'aura plus accès à la table 'chantier' qui sera entièremet gérée par page-chantier. Le lien entre chantiers et blocs est le BlockId (ou block_id)qui est unique. La page-chantier pourra créer une ligne  dans la table 'chantiers' grâce aux données lues dans la table 'blocks'. Il est nécessaire de renforcer l'identification du chantier à l'aide du BlockId, en remplaçant la clé unique actuelle de la table 'chantiers' par (Nom, block_id).

- **Comportement attendu après modifications** : 
1- La page-odetool lors de la création du bloc, s'assure que le bloc a un titre (validation du bloc refusée si pas de titre saisi). 
S'assurer que la page-odetool enregistre bien dans la table 'blocks' les caractéristiques du bloc saisies dans la modale, y compris la 'page cible', dans la colonne 'chantierPage', dont les valeurs seront par exemple Page-Chantier, Page-Registre, ...
 Quand on clique sur le bouton du bloc pour ouvrir la page cible, le programme doit transmettre le 'blockId' avec le 'WORKSPACE' comme paramètres dans l'url .

2- La page-chantier.php: quand elle est lancée dans la modale, elle recherche ses données dans la table 'chantier' à l'aide du BlockId (adapter load.php). Si la ligne n'existe pas, elle va chercher les données de la ligne BlockId dans la table 'blocks' de la database du WORKSPACE: son 'nom' de chantier, sa 'description' (qui est = chantierPage) en utilisant le BlockId qui est unique dans cette table. 

La page-chantier peut et doit alors créer une ligne dans la table 'chantiers' avec le nom du workspace, le BlockId du bloc (qui est unique) le 'title' du Bloc qui est saisi dans la modale, = 'nom' du chantier. Les modifications futures sur les données pourront alors se faire dans la table 'chantier' avec le nom et le blockId du chantier.

MODIFICATION 1 : database.php Modifier la clé unique de la table 'chantiers' par  (Nom, block_Id ) 

MODIFICATION 2 : Quand on clique sur le bouton du bloc pour ouvrir la page cible, le programme doit transmettre le 'blockId' avec le WORKSPACE comme paramètres dans l'url . C'est plus fiable que le nom de chantier s'il y a 2 fois le même nom de bloc/chantier.

2- MODIFICATION 3 
En résumé: la page-odetool n'écrit pas dans la table 'chantiers', elle ne gère que ses 'blocks'; La page-chantier gère elle-même ses données dans la table 'chantiers'.

3- dans page-odetool.php; MODIFICATION 4:  Il faut interdire la création ou modification d'un bloc si le nom n'est pas renseigné, prévoir un toast pour l'indiquer à l'opérateur en cas de tentative.


- **Comportement actuel** : 
flou

- **Étapes pour reproduire** :
  1. Ouvrir page-odetool.php
  2. Ajouter un bloc avec un double clic
  3. Donner un nom, sélectionner une cible 'page-chantier'
  4 vérifier la création du bloc dans la table 'blocks', avec les bonnes valeurs
  5. ouvrir la page chantier: vérifier l'écriture de la ligne dans la table 'chantiers'.
  6. saisir des données dans le chantier; quitter; relancer; vérifier que les données sunt bien suavées et relues; vérifier l'absence de doublons dans la table 'chantiers'

---
## **📁 Fichiers Impliqués**
 |database.php          pour modifier la clé unique de la table 'chantiers'; prévoir la migration si nécessaire. 
 |save.php              pour l'écriture dans la database : ne doit plus écrire dans table 'chantiers' pour la page-odetool.
 |load.php              pour la lecture du nom de chantier dans la table 'blocks' à l'aide du Block_id et la transmission auà page-chantier.
 |page-odetool.php      pour ne plus écrire dna la table 'chantiers' ;  pour la construction de l'URL avec transmission du workspace+BlockId
 |page-chantier.php     pour la lecture de l'url et l'extraction du BlockId, pour la recherhce du nom du chantier dans la table 'blocks' à l'aide du blockId reçu en paramètre avec l'url. etc



---
## **🔧 Modifications Proposées/Effectuées**
 | Date | Modification | Fichier | Auteur | Statut | Notes |
 |------|--------------|---------|--------|--------|-------|
voir ci-dessus.

---
## **📝 Historique des Sessions**
- **16/08/2026** :


---
## **✅ Validation & Tests**
- **Tests effectués** :


---
## **🔗 Liens Utiles**


---
## **📌 Notes Personnelles**
