Double boucle et filtre unique

Bonjour à tous,

Nouvelle question pour mon site :

Soit une boucle qui interroge les formations scolaires et une deuxième à l’intérieur qui interroge les métiers correspondants à cette formation.
La deuxième base contient des métiers en double (je ne peux pas toucher à la base).

J’obtiens ceci :

• CAP Pâtissier

• chocolatier-confiseur / chocolatière-confiseuse

• Bac Pro Boulanger/Pâtissier

• boulanger / boulangère

• boulanger / boulangère

• chocolatier-confiseur / chocolatière-confiseuse

• pâtissier / pâtissière

• CAP Cuisine

• cuisinier / cuisinière

• cuisinier / cuisinière

• Bac Pro cuisine

• cuisinier / cuisinière

• cuisinier / cuisinière

Je voudrais donc retirer les doublons, pour obtenir :
• CAP Pâtissier
• chocolatier-confiseur / chocolatière-confiseuse

  • • Bac Pro Boulanger/Pâtissier

    • boulanger / boulangère

    • chocolatier-confiseur / chocolatière-confiseuse

    • pâtissier / pâtissière

    • CAP Cuisine

    • cuisinier / cuisinière

    • Bac Pro cuisine

    • cuisinier / cuisinière

Sauf que quand j’applique le filtre UNIQUE, il me supprime les occurrences dans toutes les formations suivantes :

• CAP Pâtissier

• chocolatier-confiseur / chocolatière-confiseuse

• Bac Pro Boulanger/Pâtissier

• boulanger / boulangère
• pâtissier / pâtissière

• CAP Cuisine

• cuisinier / cuisinière

• Bac Pro cuisine

Voici mon code épuré :

<BOUCLE_listeformations(jXXXX){WHERE IDENTIFIANT=’#UAI’}>

#INTITULE_FORMATION

    [
  • (#LIBELLE_METIER|unique)]

Même en utilisant un argument de nommage (|unique{formations}), cela ne change rien. Il faudrait peut-être un hommage qui s’incréments à chaque tour de boucle ?

Voici une page concernée :

https://annuaire-education.fr/etablissement/Éragny/Lycée-Auguste-Escoffier/0951618T.html#formation_taux_emploi

Merci d’avance.


Julien Delmas

Bonjour,

C'est dans les critères de la boucle qu'il faut spécifier le critère d'unicité.

Est-ce ça passerait un truc comme ça :

<BOUCLE_listeformations(jXXXX){WHERE `IDENTIFIANT`='#UAI'}>
   <strong >#INTITULE_FORMATION</strong>
   <ul>
     <BOUCLE_metiers(XXXX){WHERE CODE_ROME`='#CODE_ROME'} {doublons{#INTITULE_FORMATION}}>
       [<li>(#LIBELLE_METIER)</li]
     </BOUCLE_metiers>
   </ul>
</BOUCLE_listeformations>

Le 13/07/2020 à 14:38, Julien Delmas a écrit :

Bonjour à tous,

Nouvelle question pour mon site :

Soit une boucle qui interroge les formations scolaires et une deuxième à l’intérieur qui interroge les métiers correspondants à cette formation.
La deuxième base contient des métiers en double (je ne peux pas toucher à la base).

*J’obtiens ceci :*
• CAP Pâtissier
• chocolatier-confiseur / chocolatière-confiseuse
• Bac Pro Boulanger/Pâtissier
• boulanger / boulangère
•boulanger / boulangère
• chocolatier-confiseur / chocolatière-confiseuse
• pâtissier / pâtissière
• CAP Cuisine
• cuisinier / cuisinière
*• cuisinier / cuisinière*
• Bac Pro cuisine
• cuisinier / cuisinière

*Je voudrais donc retirer les doublons, pour obtenir :*
• CAP Pâtissier
• chocolatier-confiseur / chocolatière-confiseuse
#
• Bac Pro Boulanger/Pâtissier
• boulanger / boulangère
• chocolatier-confiseur / chocolatière-confiseuse
• pâtissier / pâtissière
• CAP Cuisine
• cuisinier / cuisinière
• Bac Pro cuisine
• cuisinier / cuisinière

*Sauf que quand j’applique le filtre UNIQUE, il me supprime les occurrences dans toutes les formations suivantes :*

• CAP Pâtissier
• chocolatier-confiseur / chocolatière-confiseuse
• Bac Pro Boulanger/Pâtissier
• boulanger / boulangère
• pâtissier / pâtissière
• CAP Cuisine
• cuisinier / cuisinière
• Bac Pro cuisine

Voici mon code épuré :

<BOUCLE_listeformations(jXXXX){WHERE `IDENTIFIANT`='#UAI'}>

<strong >#INTITULE_FORMATION</strong>
<ul>
<BOUCLE_metiers(XXXX){WHERE CODE_ROME`='#CODE_ROME'>
[<li>(#LIBELLE_METIER|unique)]
</BOUCLE_metiers>
</ul>
</BOUCLE_listeformations>

Même en utilisant un argument de nommage (|unique{formations}), cela ne change rien. Il faudrait peut-être un hommage qui s’incréments à chaque tour de boucle ?

Voici une page concernée :

Annuaire de l'éducation et ressources éducatives

--
Stéphane
17 Charente-Maritime

Merci,

Le 13 juil. 2020 à 14:59, Stephane Santon <m.spiprezo@santonum.eu> a écrit :

C’est dans les critères de la boucle qu’il faut spécifier le critère d’unicité.

Est-ce ça passerait un truc comme ça :

J’avais déjà essayé sans préciser {#INTITULE_FORMATION} mais j’ai le même message :

« zbug_doublon_sur_table_sans_cle_primaire »

Et je ne peux pas créer de clé primaire dans la base provenant d’un site OpenData et actualisée régulièrement avec le moins de manipulation possible.


Julien Delmas

Le 13/07/2020 à 15:07, Julien Delmas a écrit :

C'est dans les critères de la boucle qu'il faut spécifier le critère d'unicité.

J’avais déjà essayé sans préciser {#INTITULE_FORMATION} mais j’ai le même message :

*« zbug_doublon_sur_table_sans_cle_primaire » *
*
Et je ne peux pas créer de clé primaire dans la base provenant d’un site OpenData et actualisée régulièrement avec le moins de manipulation possible.

Ah oui... Base externe.

A ce moment-là, il faut créer un tableau avant la boucle, tu stockes tous les libellés de métiers dans ce tableau au cours de la boucle (sans affichage), ensuite tu supprimes les doublons, et alors tu ré-affiches la liste par une nouvelle boucle.

--
Stéphane
*Enseignant de Sciences de l'Ingénieur @ac-poitiers*
17 Charente-Maritime

hello,

En théorie, sur une table « standard », il doit être possible d’utiliser la syntaxe classique en lieu et place du where; quand bien même cette base est une base externe.

<BOUCLE_metiers(XXXX){code_rome=#CODE_ROME}>

Est-ce qu’un group by via le critère fusion ne ferait pas l’affaire?

<BOUCLE_metiers(XXXX){code_rome=#CODE_ROME}{fusion code_rome}

Le lun. 13 juil. 2020 à 15:15, Stephane Santon <m.spiprezo@santonum.eu> a écrit :

Le 13/07/2020 à 15:07, Julien Delmas a écrit :

C’est dans les critères de la boucle qu’il faut spécifier le critère
d’unicité.

J’avais déjà essayé sans préciser {#INTITULE_FORMATION} mais j’ai le
même message :

*« zbug_doublon_sur_table_sans_cle_primaire » *
*
Et je ne peux pas créer de clé primaire dans la base provenant d’un site
OpenData et actualisée régulièrement avec le moins de manipulation possible.

Ah oui… Base externe.

A ce moment-là, il faut créer un tableau avant la boucle, tu stockes
tous les libellés de métiers dans ce tableau au cours de la boucle (sans
affichage), ensuite tu supprimes les doublons, et alors tu ré-affiches
la liste par une nouvelle boucle.


Stéphane
Enseignant de Sciences de l’Ingénieur @ac-poitiers
17 Charente-Maritime


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : https://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

Bonsoir,

Le 13 juil. 2020 à 15:34, pierre laszczak <pierre.laszczak@gmail.com> a écrit :

hello,
En théorie, sur une table "standard", il doit être possible d'utiliser la syntaxe classique en lieu et place du where; quand bien même cette base est une base externe.

<BOUCLE_metiers(XXXX){code_rome=#CODE_ROME}>

Est-ce qu'un group by via le critère fusion ne ferait pas l'affaire?

<BOUCLE_metiers(XXXX){code_rome=#CODE_ROME}{fusion code_rome}

En pratique aussi, merci BEAUCOUP, tout fonctionne comme je veux !

--
Julien Delmas