ARRAY, |push, IN

Bonjour,

Je n'arrive pas à filtrer par un critère IN depuis un Array.

Voici les boucles :
- 1 pour sortir les Etablissement, et acculumer les ID_ETABLISSEMENT dans un ARRAY par push. Je vois bien le numéro d'établissement dans mon SELECT.
- 1 pour afficher les individus de l'ensemble des établissements (filtrés) par le critère IN

Et j'ai toujours la liste des individus vide. En supprimant le filtre IN j'ai bien mes individus.

<B_etabs_select>
   #SET{indivArray, #ARRAY{}}

   <select id='etabs-select' size='10'>
<BOUCLE_etabs_select(SUIV_ETABLISSEMENTS)

     <option value='#ID_ETABLISSEMENT'>
       #ETAB_RAISON_SOCIALE

       <BOUCLE_postes(SUIV_POSTES){id_etablissement}>
         [(#SET{indivArray, #GET{indivArray}|push{#ID_INDIVIDU}})]
         #ID_INDIVIDU :
       </BOUCLE_postes>
     </option>

</BOUCLE_etabs_select>
   </select>
</B_etabs_select>

<h4>Membres de l'établissement :</h4>

<B_indivs_liste>
   <select id='indivs-select' size='10'>
<BOUCLE_indivs_liste(SUIV_INDIVIDUS)
   {id_individu IN #GET{indivArray}|sinon{0}}>
     <option value='#ID_INDIVIDU'>
       #MB_NOM
     </option>
</BOUCLE_indivs_liste>
   </select>
</B_indivs_liste>

La page est en construction là (lien à rattacher) :

http://genelec
.santonum.eu/
spip.php?page=etablissements-recherche&debut_etabs_select=50#pagination_etabs_select

--
Stéphane

Jeune Chambre Economique : se former en servant la communauté
  http://www.jce-saintes.org - http://www.jce-poitoucharentes.org

    BTS Electrotechnique *** http://enselec.santonum.eu

C'est le Push qui fonctionne mal.

Si je force
#SET{indivArray, #GET{indivArray}|push{1}}
l'individu apparaît.

Stéphane Santon a écrit :

- 1 pour sortir les Etablissement, et acculumer les ID_ETABLISSEMENT dans un ARRAY par push. Je vois bien le numéro d'établissement dans mon SELECT.

<B_etabs_select>
  #SET{indivArray, #ARRAY{}}

  <select id='etabs-select' size='10'>
<BOUCLE_etabs_select(SUIV_ETABLISSEMENTS)

    <option value='#ID_ETABLISSEMENT'>
      #ETAB_RAISON_SOCIALE

      <BOUCLE_postes(SUIV_POSTES){id_etablissement}>
        [(#SET{indivArray, #GET{indivArray}|push{#ID_INDIVIDU}})]
        #ID_INDIVIDU :
      </BOUCLE_postes>
    </option>

</BOUCLE_etabs_select>
  </select>
</B_etabs_select>

--
Stéphane

Jeune Chambre Economique : se former en servant la communauté
  http://www.jce-saintes.org - http://www.jce-poitoucharentes.org

    BTS Electrotechnique *** http://enselec.santonum.eu

Bonjour,

Il faut sortir l'initialisation
#SET{indivArray, #ARRAY{}}

de la partie optionnelle de la boucle !

   #SET{indivArray, #ARRAY{}}

<B_etabs_select>
   <select id='etabs-select' size='10'>
<BOUCLE_etabs_select(SUIV_ETABLISSEMENTS)
...

Il faudrait compléter la partie optionnelle de la boucle sur

pour montrer l'initialisation.

Stéphane Santon a écrit :

C'est le Push qui fonctionne mal.

<B_etabs_select>
  #SET{indivArray, #ARRAY{}}

  <select id='etabs-select' size='10'>
<BOUCLE_etabs_select(SUIV_ETABLISSEMENTS)

    <option value='#ID_ETABLISSEMENT'>
      #ETAB_RAISON_SOCIALE

      <BOUCLE_postes(SUIV_POSTES){id_etablissement}>
        [(#SET{indivArray, #GET{indivArray}|push{#ID_INDIVIDU}})]
        #ID_INDIVIDU :
      </BOUCLE_postes>
    </option>

</BOUCLE_etabs_select>
  </select>
</B_etabs_select>

--
Stéphane

Jeune Chambre Economique : se former en servant la communauté
  http://www.jce-saintes.org - http://www.jce-poitoucharentes.org

    BTS Electrotechnique *** http://enselec.santonum.eu

Bonjour,

J'ai toujours ma préparation de tableau :

Stéphane Santon a écrit :
> #SET{indivArray, #ARRAY{}}

<BOUCLE_etabs_select(SUIV_ETABLISSEMENTS)

      <BOUCLE_postes(SUIV_POSTES){id_etablissement}>
        [(#SET{indivArray, #GET{indivArray}|push{#ID_INDIVIDU}})]
      </BOUCLE_postes>

</BOUCLE_etabs_select>

J'ai mis la suite dans un squelette inclus :

<INCLURE{fond=inc-html/inc-html-Liste-indivs-select}{env=#ENV}{indivArray}>

<B_indivs_liste>
  <select id='indivs-select' size='10'>
<BOUCLE_indivs_liste(SUIV_INDIVIDUS)
  {id_individu IN #GET{indivArray}|sinon{0}}>
    <option value='#ID_INDIVIDU'>
      #MB_NOM
    </option>
</BOUCLE_indivs_liste>
  </select>
</B_indivs_liste>

Mais je n'arrive pas à récupérer le paramètre Tableau indivArray dans le squelette inclus ...

Un syntaxe particulière pour les tableaux ??

--
Stéphane

Jeune Chambre Economique : se former en servant la communauté
  http://www.jce-saintes.org - http://www.jce-poitoucharentes.org

    BTS Electrotechnique *** http://enselec.santonum.eu

Stéphane Santon a écrit :

Un syntaxe particulière pour les tableaux ??

{indivArray=#GET{indivArray}} ??

Bonjour,

Comment passer un paramètre de type ARRAY à un INCLURE ???

Je vous le refais par l'exemple :

--- fichier arraymaitre.html : ---

#CACHE{0}

#SET{indivArray, #ARRAY{}}

<B_article_maitre>
   Ecriture :
<BOUCLE_article_maitre(ARTICLES){id_article IN 26,68,256}{par id_article}>
   #ID_ARTICLE,
   #SET{indivArray, #GET{indivArray}|push{#ID_ARTICLE}}
</BOUCLE_article_maitre>
   Fin Ecriture<br />
</B_article_maitre>

</B_article_lecture>
   Lecture :
<BOUCLE_articles_lecture(ARTICLES){id_article IN #GET{indivArray}|sinon{0}}>
  #ID_ARTICLE,
</BOUCLE_articles_lecture>
   Fin Lecture <br />
</B_article_lecture>

... Appel Inclure <br />
<INCLURE{fond=arrayesclave}{env=#ENV}{indivArray=#GET{indivArray}}>
... Retour Inclure ...

--- fichier arrayesclave.html : ---

#CACHE{0}

  Debut Inclus<br />
<BOUCLE_articles_esclaves(ARTICLES){id_article IN #GET{indivArray}|sinon{0}}>
   ESCL : #ID_ARTICLE <br />
</BOUCLE_articles_esclaves>
  Fin Inclus <br />

--- Résultat affiché : ---

Ecriture : 26, 68, 256, Fin Ecriture
Lecture : 26, 68, 256, Fin Lecture
... Appel Inclure
Debut Inclus
Fin Inclus
... Retour Inclure ...

--
Stéphane

Jeune Chambre Economique : se former en servant la communauté
  http://www.jce-saintes.org - http://www.jce-poitoucharentes.org

    BTS Electrotechnique *** http://enselec.santonum.eu

Stéphane Santon a écrit :

--- fichier arrayesclave.html : ---
  <BOUCLE_articles_esclaves(ARTICLES){id_article IN #GET{indivArray}|sinon{0}}>

{id_article IN #ENV**{indivArray}|sinon{0}}

Simon Camerlo a écrit :

--- fichier arrayesclave.html : ---
  <BOUCLE_articles_esclaves(ARTICLES){id_article IN #GET{indivArray}|sinon{0}}>

{id_article IN #ENV**{indivArray}|sinon{0}}

Whouf !! Il fallait le trouver celui-ci...

MER-CI !!! :-))

On en cause ici : #ENV

Peut-on le rajouter sur cet article : #ARRAY

??

C'est Wiki, spip.net ? On peut s'inscrire comme rédacteur ?

--
Stéphane

Jeune Chambre Economique : se former en servant la communauté
  http://www.jce-saintes.org - http://www.jce-poitoucharentes.org

    BTS Electrotechnique *** http://enselec.santonum.eu

Bonjour,

Question encore sur les #ARRAY :

Comment vider un #ARRAY ?
Pour ne lui réaffecter qu'une seule valeur #ID_ARTICLE *SI* elle est passée en environnement ?

Simon Camerlo a écrit :

Stéphane Santon a écrit :

--- fichier arrayesclave.html : ---
  <BOUCLE_articles_esclaves(ARTICLES){id_article IN #GET{indivArray}|sinon{0}}>

{id_article IN #ENV**{indivArray}|sinon{0}}

--
Stéphane

Jeune Chambre Economique : se former en servant la communauté
  http://www.jce-saintes.org - http://www.jce-poitoucharentes.org

    BTS Electrotechnique *** http://enselec.santonum.eu

#SET{ma_variable, #ARRAY}

Stéphane Santon a écrit :

Bonjour,

Question encore sur les #ARRAY :

Comment vider un #ARRAY ?
Pour ne lui réaffecter qu'une seule valeur #ID_ARTICLE *SI* elle est passée en environnement ?

Simon Camerlo a écrit :

Stéphane Santon a écrit :

--- fichier arrayesclave.html : ---
  <BOUCLE_articles_esclaves(ARTICLES){id_article IN #GET{indivArray}|sinon{0}}>

{id_article IN #ENV**{indivArray}|sinon{0}}

Simon Camerlo a écrit :

#SET{ma_variable, #ARRAY}

C'est ce que j'avais fait, mais ne marchait pas dans l'inclure:
{id_article IN #GET{indivArray}|sinon{0}}
contenait toujours mes valeurs dans l'INCLURE après ça.

En fait, dans l'inclure, il faut passer le tableau de l'environnement au local :
#SET{indivArray, #ENV**{indivArray}|sinon{#ARRAY}}}

puis

#SET{indivArray, #ARRAY}

Stéphane Santon a écrit :

Comment vider un #ARRAY ?
Pour ne lui réaffecter qu'une seule valeur #ID_ARTICLE *SI* elle est passée en environnement ?

Simon Camerlo a écrit :

Stéphane Santon a écrit :

--- fichier arrayesclave.html : ---
  <BOUCLE_articles_esclaves(ARTICLES){id_article IN #GET{indivArray}|sinon{0}}>

{id_article IN #ENV**{indivArray}|sinon{0}}

--
Stéphane

Jeune Chambre Economique : se former en servant la communauté
  http://www.jce-saintes.org - http://www.jce-poitoucharentes.org

    BTS Electrotechnique *** http://enselec.santonum.eu

Stéphane Santon wrote:

Simon Camerlo a écrit :

--- fichier arrayesclave.html : ---
  <BOUCLE_articles_esclaves(ARTICLES){id_article IN #GET{indivArray}|sinon{0}}>

{id_article IN #ENV**{indivArray}|sinon{0}}

Whouf !! Il fallait le trouver celui-ci...

En fait c'est super logique.

Ce qu'on passe dans le env d'un inclure se retrouve en #ENV{} dans l'inclure.

Array ou pas array.

BoOz

Ah oui le coup de l’étoile est pas mal, c’est vrai :p.

J’en profite pour signaler cette technique connue des seuls maitres Jedi de SPIP.

[(#ENV**|unserialize|foreach)]

Qui permet de voir affiché joliment le contenu de env dans un squelette.

BoOz

Le 8 décembre 2009 10:59, Stéphane Santon <m.spiprezo@team-santonum.com> a écrit :

Bonjour,

BoOz a écrit :

{id_article IN #ENV**{indivArray}|sinon{0}}

Whouf !! Il fallait le trouver celui-ci…

En fait c’est super logique.

Ce qu’on passe dans le env d’un inclure se retrouve en #ENV{} dans l’inclure.

Array ou pas array.

Ma logique limitée ne m’avait permis d’essayer que
{id_article IN #ENV{indivArray}|sinon{0}}
sans les étoiles.

Bien sûr, pour des logiques supérieures, avec 2 étoiles, c’est aussi évident ! :wink:


Stéphane

Jeune Chambre Economique : se former en servant la communauté
http://www.jce-saintes.org - http://www.jce-poitoucharentes.org

BTS Electrotechnique *** http://enselec.santonum.eu

Bonjour,

est-ce la même chose que #FOREACH{env} ?

Jeannot

Le 8 décembre 2009 11:05, BoOz <booz@rezo.net> a écrit :

Ah oui le coup de l’étoile est pas mal, c’est vrai :p.

J’en profite pour signaler cette technique connue des seuls maitres Jedi de SPIP.

[(#ENV**|unserialize|foreach)]

Qui permet de voir affiché joliment le contenu de env dans un squelette.

BoOz

En effet, certainement que |sinon ne se déclenche pas si la variable a été initialisée à #ARRAY ( ou #ARRAY{}, je ne sais plus).
Par contre si tu fais #SET{indivArray,''} ça déclenchera ton |sinon.

A bientôt
    Simon

Stéphane Santon a écrit :

Simon Camerlo a écrit :

#SET{ma_variable, #ARRAY}

C'est ce que j'avais fait, mais ne marchait pas dans l'inclure:
{id_article IN #GET{indivArray}|sinon{0}}
contenait toujours mes valeurs dans l'INCLURE après ça.

En fait, dans l'inclure, il faut passer le tableau de l'environnement au local :
#SET{indivArray, #ENV**{indivArray}|sinon{#ARRAY}}}

puis

#SET{indivArray, #ARRAY}

Stéphane Santon a écrit :

Comment vider un #ARRAY ?
Pour ne lui réaffecter qu'une seule valeur #ID_ARTICLE *SI* elle est passée en environnement ?

Simon Camerlo a écrit :

Stéphane Santon a écrit :

--- fichier arrayesclave.html : ---
  <BOUCLE_articles_esclaves(ARTICLES){id_article IN #GET{indivArray}|sinon{0}}>

{id_article IN #ENV**{indivArray}|sinon{0}}