[spip-dev] Toujours les tableaux de valeur dans une URL

Bonsoir,

Je poste ici parce qu'il me semble que ce n'est pas, en l'état de la syntaxe de SPIP, possible.

Au début, je n'avais qu'une valeur dans l'URL, sans que ce soit un tableau : id_mot=12

Et ma boucle avait {id_mot ?} pour en tenir compte ou non.

Puis j'ai voulu avec un tableau de mots : id_mot[]=12&id_mot[]=13

Mais comment je fais pour avoir le même fonctionnement ?
{id_mot ?IN #ENV{id_mot} } n'existe pas (qui ferait un OU ou n'en tiendrait pas compte)
{id_mot ?} qui ferait un ET sur tous les éléments du tableau n'existe pas non plus

Bref, {champ ?} est disponible pour une valeur discrète, mais pas pour un tableau de valeur.
ça me semble un manque...

il me semble que si, et ce serait l'interpretation logique.
Toutefois aucun espoir dans ce cas particulier où ce que tu veux est l'équivalent de
{id_mot=12}{id_mot=13}
avec autant de jointures que d'items dans ton tableau id_mot.
Note bien que ca va te rendre service en évitant d'écrouler ton serveur lorsqu'il devrai faire 5 ou 6 jointures.

Cédric

Pas sûr de bien comprendre mais peut-être...
<BOUCLE_et(ARTICLES){id_mot=12}{id_mot=13}>
</BOUCLE_et>
<BOUCLE_ou(ARTICLES){id_mot IN 12,13}>
</BOUCLE_ou>
<//B_et>

pierre

* Pierre Fiches tapuscrivait, le 12/11/2008 20:14:

Bonsoir,

Je poste ici parce qu'il me semble que ce n'est pas, en l'état de la syntaxe de SPIP, possible.

Au début, je n'avais qu'une valeur dans l'URL, sans que ce soit un tableau : id_mot=12

Et ma boucle avait {id_mot ?} pour en tenir compte ou non.

Puis j'ai voulu avec un tableau de mots : id_mot=12&id_mot=13

Mais comment je fais pour avoir le même fonctionnement ?
{id_mot ?IN #ENV{id_mot} } n'existe pas (qui ferait un OU ou n'en tiendrait pas compte)
{id_mot ?} qui ferait un ET sur tous les éléments du tableau n'existe pas non plus

Bref, {champ ?} est disponible pour une valeur discrète, mais pas pour un tableau de valeur.
ça me semble un manque...

Pas sûr de bien comprendre mais peut-être...
<BOUCLE_et(ARTICLES){id_mot=12}{id_mot=13}>
</BOUCLE_et>
<BOUCLE_ou(ARTICLES){id_mot IN 12,13}>
</BOUCLE_ou>
<//B_et>

Là, c'est en dur.
Ce que je demande (au père Noël ?), c'est _dynamique_.

* cedric.morin@yterium.com tapuscrivait, le 12/11/2008 20:11:

Bonsoir,

Je poste ici parce qu'il me semble que ce n'est pas, en l'état de la syntaxe de SPIP, possible.

Au début, je n'avais qu'une valeur dans l'URL, sans que ce soit un tableau : id_mot=12

Et ma boucle avait {id_mot ?} pour en tenir compte ou non.

Puis j'ai voulu avec un tableau de mots : id_mot=12&id_mot=13

Mais comment je fais pour avoir le même fonctionnement ?
{id_mot ?IN #ENV{id_mot} } n'existe pas (qui ferait un OU ou n'en tiendrait pas compte)

il me semble que si, et ce serait l'interpretation logique.
Toutefois aucun espoir dans ce cas particulier où ce que tu veux est l'équivalent de
{id_mot=12}{id_mot=13}

Pour le ET, oui.
Mais le OU serait déjà pas mal.
Là, j'ai le sentiment de ne pouvoir faire ni l'un, ni l'autre de manière dynamique.

avec autant de jointures que d'items dans ton tableau id_mot.
Note bien que ca va te rendre service en évitant d'écrouler ton serveur lorsqu'il devrai faire 5 ou 6 jointures.

Tout à fait d'accord avec toi sur le risque en terme de performances.

fais ton critere a la main, c'est trop risque en terme de perfo pour mettre un truc comme ca dispo par defaut...
il suffit de faire un hit

?idmot[]=1&id_mot[2]&id_mot[]=3....&id_mot[]=1000
pour mettre ton serveur a terre plusieurs jours...

Cédric

Je me disais bien que c'était un poil plus complexe.

Mais rien n'empêche de remplacer 12 et 13 par une valeur dynamique, non?
enfin on peut complexifier pas mal...