Filtre et critère dans une boucle

Bonjour,

Je cherche à faire une boucle avec des critères. Si un des critères est inexistant (ou =1, ça m'arrangerai), ce critère n'est plus pris en compte!

<BOUCLE_rubrique_domaine(RUBRIQUES) [(#ENV{idAge}) {id_mot=#ENV{idAge}}] {id_mot=#ENV{idFamille}}>
</BOUCLE_rubrique_domaine>

L'erreur :
   # Erreur(s) dans le squelette
    * Erreur sur le site, ) {id_mot=#ENV{idAge}}] {id_mot=#ENV{idFamille}} >

J'ai essayé plusieurs autres solutions qui ne marchent pas non plus.
La variable est passée dans un POST grâce à AJAX (enfin javascript asychrone puisque je n'utilise pas de XML)
C'est la base de mon problème. J'utilise ça pour faire des listes liées.

Merci !

Stéphane

J'ai essayé de prendre le problème dans l'autre sens à savoir :
    si #ENV{idAge}=-1 alors BOUCLE1
    sinon BOUCLE2

J'ai utilisé les filtres de test, mais je me rends compte qu' executer une boucle dans le filtre pose des problèmes :

Le code suivant fonctionne bien !

<BOUCLE_test(MOTS){id_groupe=3} {par num titre}>
        [(#ENV{idAge}|!={'-1'}|?{'',' '})
            <option>idAge = -1 -> #ENV{idAge}</option>
            [(#ENV{idFamille}|!={'-1'}|?{'',' '})
                <option>idAge = -1->idFamille = -1 -> #ENV{idFamille}</option>
                <option value="#ID_MOT"[(#ENV{idDomaine}|=={#ID_MOT}|?{'selected="selected"',''})]>1-[(#TITRE|supprimer_numero)]</option>
            ]
            [(#ENV{idFamille}|=={'-1'}|?{'',' '})
                <option>idAge = -1->idFamille ! -1 -> #ENV{idFamille}</option>
                <option value="#ID_MOT"[(#ENV{idDomaine}|=={#ID_MOT}|?{' selected="selected"',''})]>2-[(#TITRE|supprimer_numero)]</option>
            ]
        ]
        [(#ENV{idAge}|=={'-1'}|?{'',' '})
            <option>idAge ! -1 -> #ENV{idAge}</option>
            [(#ENV{idFamille}|!={'-1'}|?{'',' '})
                <option>idAge ! -1->idFamille = -1 -> #ENV{idFamille}</option>
                <option value="#ID_MOT"[(#ENV{idDomaine}|=={#ID_MOT}|?{' selected="selected"',''})]>3-[(#TITRE|supprimer_numero)]</option>
            ]
            [(#ENV{idFamille}|=={'-1'}|?{'',' '})
                <option>idAge ! -1->idFamille ! -1 -> #ENV{idFamille}</option>
                <option value="#ID_MOT"[(#ENV{idDomaine}|=={#ID_MOT}|?{' selected="selected"',''})]>4-[(#TITRE|supprimer_numero)]</option>
            ]
        ]
    </BOUCLE_test>

Celui là non :

<BOUCLE_test(MOTS){id_groupe=3} {par num titre}>
        [(#ENV{idAge}|!={'-1'}|?{'',' '})
            <option>idAge = -1 -> #ENV{idAge}</option>
            [(#ENV{idFamille}|!={'-1'}|?{'',' '})
                <option>idAge = -1->idFamille = -1 -> #ENV{idFamille}</option>
                <option value="#ID_MOT"[(#ENV{idDomaine}|=={#ID_MOT}|?{'selected="selected"',''})]>1-[(#TITRE|supprimer_numero)]</option>
                <BOUCLE_test1(RUBRIQUES) {id_secteur=1} {id_mot=#ID_MOT} {0,1} >
                </BOUCLE_test1>
            ]
            [(#ENV{idFamille}|=={'-1'}|?{'',' '})
                <option>idAge = -1->idFamille ! -1 -> #ENV{idFamille}</option>
                <option value="#ID_MOT"[(#ENV{idDomaine}|=={#ID_MOT}|?{' selected="selected"',''})]>2-[(#TITRE|supprimer_numero)]</option>
            ]
        ]
        [(#ENV{idAge}|=={'-1'}|?{'',' '})
            <option>idAge ! -1 -> #ENV{idAge}</option>
            [(#ENV{idFamille}|!={'-1'}|?{'',' '})
                <option>idAge ! -1->idFamille = -1 -> #ENV{idFamille}</option>
                <option value="#ID_MOT"[(#ENV{idDomaine}|=={#ID_MOT}|?{' selected="selected"',''})]>3-[(#TITRE|supprimer_numero)]</option>
            ]
            [(#ENV{idFamille}|=={'-1'}|?{'',' '})
                <option>idAge ! -1->idFamille ! -1 -> #ENV{idFamille}</option>
                <option value="#ID_MOT"[(#ENV{idDomaine}|=={#ID_MOT}|?{' selected="selected"',''})]>4-[(#TITRE|supprimer_numero)]</option>
            ]
        ]
    </BOUCLE_test>

Les lignes <option>idAge = -1 -> #ENV{idAge}</option>, etc. servent juste pour vérifier dans quelle condition on se trouve.
Quand il y à la boucle, j'ai des choix avec idFamille = -1 et idFamille != -1 alors que idFamille est != -1 !!!

Si quelqu'un à 1 idée, ce serait vraiment sympa parceque là je galère vraiment, la seule solution que je vois actuellement est de passer ces conditions en PHP, mais bon c'est dommage, SPIP doit bien offrir cette possibilité que je n'ai pas du saisir...

Stéphane a écrit :

Bonjour,

Je cherche à faire une boucle avec des critères. Si un des critères est inexistant (ou =1, ça m'arrangerai), ce critère n'est plus pris en compte!

<BOUCLE_rubrique_domaine(RUBRIQUES) [(#ENV{idAge}) {id_mot=#ENV{idAge}}] {id_mot=#ENV{idFamille}}>
</BOUCLE_rubrique_domaine>

L'erreur :
   # Erreur(s) dans le squelette
    * Erreur sur le site, ) {id_mot=#ENV{idAge}}] {id_mot=#ENV{idFamille}} >

J'ai essayé plusieurs autres solutions qui ne marchent pas non plus.
La variable est passée dans un POST grâce à AJAX (enfin javascript asychrone puisque je n'utilise pas de XML)
C'est la base de mon problème. J'utilise ça pour faire des listes liées.

Merci !

Stéphane

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip
FAQ : http://www.spip-contrib.net/spikini/FaQ

Bonjour,

en architecture nous sommes sur un système de réplication de la base spip mysql (maitre-esclave) entre deux serveurs et depuis la 1.9.1 et les modules ajax on a de temps en temps des erreurs de replication de bases sur les tables ajax ?

Est-ce que ca dit qqchose a quelq'un ? Mon hypothèse serait qu'un module ajax est activé au moment pile de la replication et donc que le serveur esclace n'etant pas en phase ca bug

mais c'est peut-etre autre chose ?

merci à vous

--
---------------------------------
Olivier GARRY
Chef de produit, chef de projets
Portail vie-publique.fr (www.vie-publique.fr)
Département des produits internet
La Documentation française
01 40 15 69 09
olivier.garry@df.gouv.fr