filtre sinon sur boucle

Bonjour,

je cherche à faire une boucle qui m’affiche les personnes inscrite pour un sport mon problème est que l’id de ce sport, que je veux afficher, peux se trouver soit dans le champ « sport_idsport », soit dans le champ « sport_idsport1 » soit dans le champ « sport_idsport2 », cares personnes peuvent pratiquer 3 sports différents

J’ai testé la boucle suivante mais cela ne fonctionne pas :

<BOUCLE_delegationFond(inscriptioncom1:personnel) {nation_idnation=#IDNATION} [{sport_idsport =={2} ?{sport_idsport1 =={2} ?{sport_idsport2=2}] {fonction_idfonction IN 25,26,27,28} {par nom} {par prenom} >[(#COMPTEUR_BOUCLE alterner{’’,’’,’’,’’,’’,’’})]

#NOM #NOM
#PRENOM
#NOM
[(#COMPTEUR_BOUCLE alterner{'','','','','',''})] [(#TOTAL_BOUCLE alterner{'','','','','', ''})]

D’avance merci

Tous vos emails en 1 clic avec l’application SFR Mail sur iPhone et Android - En savoir plus.

Bonjour,

L’usage des critères optionnels avec opérateurs a des limites.
cf. http://programmer.spip.net/Criteres-optionnels-avec

Pour réaliser ce que vous souhaitez, une solution consiste à utiliser la méthode de l’anti-doublons
Voir la section correspondante sur la page suivante : http://www.spip.net/fr_article4139.html

Julien

Le 17 mars 2013 11:21, <tarentaise@9online.fr> a écrit :

Bonjour,

je cherche à faire une boucle qui m’affiche les personnes inscrite pour un sport mon problème est que l’id de ce sport, que je veux afficher, peux se trouver soit dans le champ « sport_idsport », soit dans le champ « sport_idsport1 » soit dans le champ « sport_idsport2 », cares personnes peuvent pratiquer 3 sports différents

J’ai testé la boucle suivante mais cela ne fonctionne pas :

<BOUCLE_delegationFond(inscriptioncom1:personnel) {nation_idnation=#IDNATION} [{sport_idsport =={2} ?{sport_idsport1 =={2} ?{sport_idsport2=2}] {fonction_idfonction IN 25,26,27,28} {par nom} {par prenom} >[(#COMPTEUR_BOUCLE alterner{‹  ›,‹  ›,‹  ›,‹  ›,‹  ›,‹  ›})]

#NOM #NOM
#PRENOM
#NOM
[(#COMPTEUR_BOUCLE alterner{'','','','','',''})] [(#TOTAL_BOUCLE alterner{'','','','','', ''})]

D’avance merci

Tous vos emails en 1 clic avec l’application SFR Mail sur iPhone et Android - En savoir plus.


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

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/

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

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


Julien

Et un peu plus simple à écrire (et plus ‹ compliqué › à coder) : inventer un nouveau critère comme {le_sport_vaut 2} qui réaliserait le « OR » entre vos trois champs.
Explications ici : http://contrib.spip.net/Boucles-avec-des-conditions-en-OR-et-explication-des

Julien

Le 17 mars 2013 13:48, Julien Lanfrey <julienlfy@gmail.com> a écrit :

Bonjour,

L’usage des critères optionnels avec opérateurs a des limites.
cf. http://programmer.spip.net/Criteres-optionnels-avec

Pour réaliser ce que vous souhaitez, une solution consiste à utiliser la méthode de l’anti-doublons
Voir la section correspondante sur la page suivante : http://www.spip.net/fr_article4139.html

Julien

Le 17 mars 2013 11:21, <tarentaise@9online.fr> a écrit :

Bonjour,

je cherche à faire une boucle qui m’affiche les personnes inscrite pour un sport mon problème est que l’id de ce sport, que je veux afficher, peux se trouver soit dans le champ « sport_idsport », soit dans le champ « sport_idsport1 » soit dans le champ « sport_idsport2 », cares personnes peuvent pratiquer 3 sports différents

J’ai testé la boucle suivante mais cela ne fonctionne pas :

<BOUCLE_delegationFond(inscriptioncom1:personnel) {nation_idnation=#IDNATION} [{sport_idsport =={2} ?{sport_idsport1 =={2} ?{sport_idsport2=2}] {fonction_idfonction IN 25,26,27,28} {par nom} {par prenom} >[(#COMPTEUR_BOUCLE alterner{‹  ›,‹  ›,‹  ›,‹  ›,‹  ›,‹  ›})]

#NOM #NOM
#PRENOM
#NOM
[(#COMPTEUR_BOUCLE alterner{'','','','','',''})] [(#TOTAL_BOUCLE alterner{'','','','','', ''})]

D’avance merci

Tous vos emails en 1 clic avec l’application SFR Mail sur iPhone et Android - En savoir plus.


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

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/

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

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


Julien


Julien

Le 17/03/13 11:21, tarentaise@9online.fr a écrit :

dans le champ "sport_idsport", soit dans le champ "sport_idsport1" soit dans le champ "sport_idsport2"

une solution très tirée par les cheveux (juste pour le fun on va dire,
bien que fonctionnelle...)

{CONCAT(nom,"z",sport_idsport,"z",sport_idsport1,"z",sport_idsport2,"z") LIKE %z2z%}

1- il est possible d'utiliser *certaines* fonctions de mysql (ici
CONCAT) dans les critères de boucle ;

2- pour ne pas faire hurler le compilo, le premier argument de la
fonction doit être un des champs de la base. on choisira donc un champ
dans lequel on est sûr de ne pas trouver la séquence recherchée (ici
'nom', qui ne devrait a priori pas contenir 'z2z') ;

3- comme nous cherchons un nombre, nous devons éviter de faire
ressortir les chiffres utilisés dans les nombres à plusieurs chiffres.
nous introduisons donc un séparateur 'z' pour bien différencier le
*nombre* 2 du *chiffre* 2 utilisé dans 12 ;

imaginons maintenant que nous avons un enregistrement :
   nom = tartempion
   sport = 2
   sport1 = 12
   sport2 = 3
le critère cherche donc la séquence 'z2z' dans 'tartempionz2z12z3z'
et comme elle est présente, la boucle affiche l'enregistrement.

Tous vos emails en 1 clic avec l'application SFR Mail sur iPhone et Android - En savoir plus.

sfr c'est bien cet opérateur qui modifie les données reçues en 3g ?