Bonjour,
Je me doute que mon objectif va nécessiter PHP + mysql + javascript.
Voici le genre de problématique
1) J'ai dans ma base une table arbre avec toute les structures de mon entreprise (qui est grosse : 182 noeuds), bien entendu, c'est une structure hiérarchique donc avec une auto-jointure.
2) Tout serait simple si je pouvais ensuite présenter une arborescence dynamique avec l'ordre alphabétique (déjà fait).
Ce qui me complique tout, c'est que la MOA veut pouvoir classer de façon protocolaire, à chaque étape de la filiation, les structures et services sur chaque page.
3) j'ai donc construit la vue suivante (appelons-là v_ordre) qui s'appuie sur la table ordre qui se contente d'avoir elle un id, stru_id (jointure externe avec le stru_id de la table arbre),et rang
id stru_id stru_code lib_court lib_long rang
49 305 TOTO_PILOTAGE Pilotage Pilotage central 01N01
50 306 TOTO_PILOTAGE_FRANCE Pilotage France Pilotage de TOTO France 01N02
51 307 TOTO_PILOTAGE_ETRANGER Pilotage étranger Pilotage de TOTO étranger 01N03
52 308 TOTO_PILOTAGE_ETRANGER_ASIE Pilotage Asie Pilotage de TOTO Asie 01N03N01
Il me faut donc leur offrir une interface d'administration pour que le secrétariat puisse avoir la main là-dessus.
Voici donc mes questions :
1) L'interface idéale et la plus intuitive est la suivante : elle clique sur un noeud, les enfants se déroulent, et elle a la possibilité de monter ou descendre chacun d'eux comme ça lui chante (javascript).
2) Quand elle valide, je passe en PHP et MYSQL dans la table ordre l'ordre choisi.
3) comment au fait pour coder rang ?
3a)J'ai d'abord pensé à un numérique simple par rapport à son noeud, pour m'aider ensuite du champ stru_code... mais mysql ne sait pas ensuite me reconstruire TOUT l'ordonnancement depuis le début, car je n'ai pas trouvé en SQL d'équivalent substr_count...
3b) alors je me suis rabattu sur un champ rang plus lourd (et plus redondant j'en ai conscience) mais qui me permet tout de suite d'utiliser un simple order by rang. Problème, quand elle modifiera, il faudra que je modifie via PHP tous les rangs de ses enfants...
Je compte sur vos lumières !
Par ailleurs, je n'ai jamais codé le 1, si vous avez des lumières.
Un grand merci d'avance !
Partager