La boucle MOTS

Bonjour la liste !

Je cherche à faire apparaître des événements qui ont tel ou tel mot clé à un endroit et tel ou tel mot clé à un autre endroit. Par exemple je souhaite que les mot 1 et 2 se place à gauche et 3 et 4 a droite. et que les événements soient rangé par ordre chronologique (1 et 2 confondu puis 3 et 4 confondu).
Je pensais faire cette boucle :

<BOUCLE_listemanif(EVENEMENTS){id_mot=1}{id_mot=2}{age_fin<=0}{par date}{pagination}>

Le problème avec cette boucle c'est que là il me prend les événements qui ont le mot 1 ET 2 et moi je veux qui ont le mot 1 OU 2 mais que les événements de ces deux mots soit rangés chronologiques. Je ne sais pas si je suis bien clair... mais je vous remercie par avance à ceux qui voudront bien se pencher sur mon cas !! Merci !

Le 6 oct. 07, à 18:26, vanessa attard a écrit :
<BOUCLE_listemanif(EVENEMENTS){id_mot=1}{id_mot=2}{age_fin<=0}{par
date}{pagination}>

Le problème avec cette boucle c'est que là il me prend les événements
qui ont le mot 1 ET 2

normal ... c'est le comportement prévu par le compilateur des boucles pour cette syntaxe

et moi je veux qui ont le mot 1 OU 2 mais que
les événements de ces deux mots soit rangés chronologiques.

il faut passer par une pile doublon pour stocker tes tris successifs, puis rappeler l'ensemble via le critere antidoublon pour faire le classement chronologique. Cette méthode peut d'ailleurs être utilisée dans plein d'autres circonstance

ce qui donnerais par exemple un truc du genre (je te laisse la mise au point)
1) l'extraction de la base et le stockage dans une pile doublon (pas de mise en forme car n'apparaîtra pas)

<BOUCLE_listemanif1(EVENEMENTS){id_mot=1}{doublon cadre gauche}>
<BOUCLE_listemanif2(EVENEMENTS){id_mot=2}{doublon cadre gauche}>

2) tu reprend ta pile, et y applique les tris, filtres, et mise en forme que tu veux

<BOUCLE_cadregauche(EVENEMENTS){!doublon cadre gauche}{age_fin<=0}{par date}{pagination}>

@+ NicolasR

Le 6 oct. 07 à 18:36, nicolasriq@free.fr a écrit :

Le 6 oct. 07, à 18:26, vanessa attard a écrit :
<BOUCLE_listemanif(EVENEMENTS){id_mot=1}{id_mot=2}{age_fin<=0}{par
date}{pagination}>

Le problème avec cette boucle c'est que là il me prend les événements
qui ont le mot 1 ET 2

normal ... c'est le comportement prévu par le compilateur des boucles
pour cette syntaxe

et moi je veux qui ont le mot 1 OU 2 mais que
les événements de ces deux mots soit rangés chronologiques.

il faut passer par une pile doublon pour stocker tes tris successifs,
puis rappeler l'ensemble via le critere antidoublon pour faire le
classement chronologique. Cette méthode peut d'ailleurs être utilisée
dans plein d'autres circonstance

ce qui donnerais par exemple un truc du genre (je te laisse la mise au
point)
1) l'extraction de la base et le stockage dans une pile doublon (pas de
mise en forme car n'apparaîtra pas)

<BOUCLE_listemanif1(EVENEMENTS){id_mot=1}{doublon cadre gauche}>
<BOUCLE_listemanif2(EVENEMENTS){id_mot=2}{doublon cadre gauche}>

2) tu reprend ta pile, et y applique les tris, filtres, et mise en
forme que tu veux

<BOUCLE_cadregauche(EVENEMENTS){!doublon cadre gauche}{age_fin<=0}{par
date}{pagination}>

ca ne marche pas... ça me donne une page blanche... :

<BOUCLE_listemanif634(EVENEMENTS){id_mot=634}{doublons evenement}>
<BOUCLE_listemanif678(EVENEMENTS){id_mot=678}{doublons evenement}>
<B_lisemanif>
  #ANCRE_PAGINATION
<div class="ho_arrondi7"></div>
<BOUCLE_lisemanif(EVENEMENTS){!doublons evenement}{age_fin<=0}{par date}{pagination}>
    <BOUCLE_fotomanif(DOCUMENTS){id_article}{mode=document}{extension==jpg|png|gif}{0,1}>
  <div class="fonblanc7x2">
      <div class="illustrphotoagendaptitepr7">
        [(#FICHIER|image_reduire{60})]
      </div>
    </BOUCLE_fotomanif>
  <div class="transparent5x2spe_agenda">
    <h3 class="gris12"><strong>[(#DATE_DEBUT|Agenda_affdate_debut_fin{#DATE_FIN,#HORAIRE{" "}})]</strong></h3>
    <h3 class="bleu12"><strong><a href="#URL_ARTICLE">#TITRE</a></strong></h3>
    <h3 class="gris12"><BOUCLE_lieuxagendamanif(MOTS){id_evenement}{type = 2. Ville}{0,1}>[(#TITRE)]</BOUCLE_lieuxagendamanif>
    <BOUCLE_themagendamanif(MOTS){id_evenement}{type = 3. Thème}{0,1}>[ - (#TITRE)]</BOUCLE_themagendamanif><br />
    <BOUCLE_articlmanif(ARTICLES){id_article}><i>[(#DESCRIPTIF|couper{40}) <a href="#URL_ARTICLE"><strong>lire</strong></a>]</i></BOUCLE_articlmanif></h3>
  </div>
    </B_fotomanif>
  <div class="fonblanc7x2">
  <div class="transparent5x2">
    <h3 class="gris12"><strong>[(#DATE_DEBUT|Agenda_affdate_debut_fin{#DATE_FIN,#HORAIRE{" "}})]</strong></h3>
    <h3 class="bleu12"><strong><a href="#URL_ARTICLE">#TITRE</a></strong></h3>
    <h3 class="gris12"><BOUCLE_lieuxagendamanif2(MOTS){id_evenement}{type = 2. Ville}{0,1}>[(#TITRE)]</BOUCLE_lieuxagendamanif2>
    <BOUCLE_themagendamanif2(MOTS){id_evenement}{type = 3. Thème}{0,1}>[ - (#TITRE)]</BOUCLE_themagendamanif2><br />
    <BOUCLE_articlmanif2(ARTICLES){id_article}><i>[(#DESCRIPTIF|couper{60}) <a href="#URL_ARTICLE"><strong>lire</strong></a>]</i></BOUCLE_articlmanif2></h3>
  </div>
    <//B_fotomanif>
</BOUCLE_lisemanif>
    [<div class="fonblanc7x1">
    <h3 class="gris12droite"><strong>+ de manifestations :<br />(#PAGINATION{page})</strong></h3>
    </div>]
<div class="ba_arrondi7"></div>
</B_lisemanif>
</BOUCLE_listemanif634>
</BOUCLE_listemanif678>

et quand j'essaye en ne mettant qu'un événement ça déconne plein tube... d'où vient mon erreur ?

vanessa attard <va@tvardeche.com> wrote:

Bonjour la liste !

Je cherche à faire apparaître des événements qui ont tel ou tel mot
clé à un endroit et tel ou tel mot clé à un autre endroit. Par
exemple je souhaite que les mot 1 et 2 se place à gauche et 3 et 4 a
droite. et que les événements soient rangé par ordre chronologique (1
et 2 confondu puis 3 et 4 confondu).
Je pensais faire cette boucle :

<BOUCLE_listemanif(EVENEMENTS){id_mot=1}{id_mot=2}{age_fin<=0}{par
date}{pagination}>

Le problème avec cette boucle c'est que là il me prend les événements
qui ont le mot 1 ET 2 et moi je veux qui ont le mot 1 OU 2 mais que
les événements de ces deux mots soit rangés chronologiques. Je ne
sais pas si je suis bien clair... mais je vous remercie par avance à
ceux qui voudront bien se pencher sur mon cas !! Merci !

#SET{les_mots,#ARRAY{0,1,1,2}}
<BOUCLE_listemanif(EVENEMENTS){id_mot IN #GET{les_mots}}{age_fin<=0}{par
date}{pagination}>

--
http://wojylac.free.fr
Un proverbe chinois dit que lorsqu'on a rien à dire
on cite généralement un proverbe chinois.

Le 6 oct. 07, à 19:02, vanessa attard a écrit :
ca ne marche pas... ça me donne une page blanche... :

<BOUCLE_listemanif634(EVENEMENTS){id_mot=634}{doublons evenement}>
<BOUCLE_listemanif678(EVENEMENTS){id_mot=678}{doublons evenement}>

bin oui, tu te doute bien qu'une boucle doit etre fermée ... j'avais précisé qu'il te restait à faire la finition

ici on constitue la pile doublons avec des boucles vides
<BOUCLE_listemanif634(EVENEMENTS){id_mot=634}{doublons evenement}></BOUCLE_listemanif634>
<BOUCLE_listemanif678(EVENEMENTS){id_mot=678}{doublons evenement}></BOUCLE_listemanif678>

ça c'est le principe .. pour le reste à toi de jouer :wink:

@+ NicolasR

Le 6 oct. 07 à 20:23, nicolasriq@free.fr a écrit :

Le 6 oct. 07, à 19:02, vanessa attard a écrit :
ca ne marche pas... ça me donne une page blanche... :

<BOUCLE_listemanif634(EVENEMENTS){id_mot=634}{doublons evenement}>
<BOUCLE_listemanif678(EVENEMENTS){id_mot=678}{doublons evenement}>

bin oui, tu te doute bien qu'une boucle doit etre fermée ... j'avais
précisé qu'il te restait à faire la finition

ici on constitue la pile doublons avec des boucles vides
<BOUCLE_listemanif634(EVENEMENTS){id_mot=634}{doublons
evenement}></BOUCLE_listemanif634>
<BOUCLE_listemanif678(EVENEMENTS){id_mot=678}{doublons
evenement}></BOUCLE_listemanif678>

Ben oui effectivement comme ça, ça marche mieux... j'avais pas assez réfléchi... merci pour ton aide !!

La même sans le #SET et #ARRAY :

<BOUCLE_listemanif(EVENEMENTS){id_mot IN (1,2)}{age_fin<=0}{par date}{pagination}>

jmv

----- Original Message -----
From: Dominique
To: spip@rezo.net
Sent: Saturday, October 06, 2007 7:40 PM
Subject: Re: [Spip] La boucle MOTS

vanessa attard <va@tvardeche.com> wrote:

Bonjour la liste !

Je cherche à faire apparaître des événements qui ont tel ou tel mot
clé à un endroit et tel ou tel mot clé à un autre endroit. Par
exemple je souhaite que les mot 1 et 2 se place à gauche et 3 et 4 a
droite. et que les événements soient rangé par ordre chronologique (1
et 2 confondu puis 3 et 4 confondu).
Je pensais faire cette boucle :

<BOUCLE_listemanif(EVENEMENTS){id_mot=1}{id_mot=2}{age_fin<=0}{par
date}{pagination}>

Le problème avec cette boucle c’est que là il me prend les événements
qui ont le mot 1 ET 2 et moi je veux qui ont le mot 1 OU 2 mais que
les événements de ces deux mots soit rangés chronologiques. Je ne
sais pas si je suis bien clair… mais je vous remercie par avance à
ceux qui voudront bien se pencher sur mon cas !! Merci !

#SET{les_mots,#ARRAY{0,1,1,2}}
<BOUCLE_listemanif(EVENEMENTS){id_mot IN #GET{les_mots}}{age_fin<=0}{par
date}{pagination}>


http://wojylac.free.fr
Un proverbe chinois dit que lorsqu’on a rien à dire
on cite généralement un proverbe chinois.


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.net/fr_article1054.html