[spip-dev] Moins c'est plus

Chers tous,

Il m'arrive d'avoir avec SPIP le problème suivant:

J'ai besoin d'afficher des infos (titre, descriptif ou liste d'articles)
sans ordre logique chronologique ou alphabétique. Alors, je suis obligé
de faire:
<BOUCLE_1(RUBRIQUES) {id_rubrique=12}>
  un tas de html ici
</BOUCLE_1>
<BOUCLE_2(RUBRIQUES) {id_rubrique=7}>
  le MÊME tas de html ici
</BOUCLE_2>
... et ainsi de suite

Et quand il faut changer un truc dans le html, moi qui suis fainéant,
franchement ça me saoûle !

En même temps, je lis parfois ici des messages du genre "'ttention les
gars, chuis trop fort en PHP et votre truc, y pourrait être 'achement
mieux si vous faisiez ça"...

Dans le folklore militaire ça s'appelle le syndrôme "Armons-nous et...
partez!"

Alors, je me suis permis de modifier inc-calcul-squelette.php3 avec mes
doigts et maintenant je fais:

<BOUCLE_un_nom_comme_on_veut(RUBRIQUES) {id_rubrique=12,7,6,1}>
toujours du html mais aussi
<BOUCLE_encore_un_nom_au_hasard(ARTICLES) {id_rubrique}
{conditions_habituelles}>
  blabla
</BOUCLE_encore_un_nom_au_hasard>
</BOUCLE_un_nom_comme_on_veut>

Je peux aussi faire:
<BOUCLE_toto(ARTICLES) {id_article=23,45,4,8}
  mon code
</BOUCLE_toto>

Cool... le patch basé sur le CVS de ce soir (1.187) est joint, enjoy !

Patrice

inc-calcul-squelette.txt (3.08 KB)

Hello,

<BOUCLE_un_nom_comme_on_veut(RUBRIQUES) {id_rubrique=12,7,6,1}>

Je n'ai pas bien compris ce qui ne te convient pas dans la syntaxe
habituelle :

<BOUCLE_un_nom_comme_on_veut(RUBRIQUES){id_rubrique==^(12|7|6|1}$>

-Nicolas

J'ai pas regardé son code, mais faut espérer qu'il fait un «in» et
pas un «like» ou assimilé comme dans le cas du ==
  C'est autrement plus performant («match» ne sait pas utiliser
un index).

À+, Pif.

:smiley:

Rien chuis une truffe, j'avais oublié...

Merci,
Patrice

> <BOUCLE_un_nom_comme_on_veut(RUBRIQUES){id_rubrique==^(12|7|6|1}$>
Rien chuis une truffe, j'avais oublié...

{machin in 1,2,3,4} me paraît plus facile à mémoriser et documenter que
l'astuce REGEXP ; mon souci serait que, en l'absence de tri {par xxx} on
puisse récupérer les articles dans l'ordre donné par la liste in ...

-- Fil

<BOUCLE_un_nom_comme_on_veut(RUBRIQUES){id_rubrique==^(12|7|6|1}$>
Rien chuis une truffe, j'avais oublié...

{machin in 1,2,3,4} me paraît plus facile à mémoriser et documenter
que l'astuce REGEXP

Autant mettre {machin parmi 1, 2, 3, 4} alors ... :wink:

mon souci serait que, en l'absence de tri {par xxx} on puisse
récupérer les articles dans l'ordre donné par la liste in ...

Ce serait pas mal, mais il me semble que MySQL ne supporte pas encore
les unions ...

-Nicolas

> mon souci serait que, en l'absence de tri {par xxx} on puisse
> récupérer les articles dans l'ordre donné par la liste in ...

Ce serait pas mal, mais il me semble que MySQL ne supporte pas encore
les unions ...

Avec un peu d'astuce on se débrouille toujours, mais ça risque d'être crado:
ORDER BY id_article=1,id_article=2,id_article=3,id_article=4 (DESC)

-- Fil

Avec un peu d'astuce on se débrouille toujours, mais ça risque
d'être crado:
ORDER BY id_article=1,id_article=2,id_article=3,id_article=4 (DESC)

Ouh laaaa ... :wink:

-Nicolas

C'est pas vraiment le but d'un in. Dans un ensemble, y'a pas d'ordre.

  Et le coupp du order by de sauvage, c'est vraiment pas idéal. Autant
faire autant de select qu'il y a d'id.

À+, Pif.

Merci de me remonter le moral, si j'ai oublié c'est pas seulement le
gâtisme précoce ;-))

Est-ce que je te comprends bien si ce que tu proposes serait d'arriver à
une requête du genre:
SELECT * FROM table_machin WHERE id_machin = 1 OR id_machin = 2 (etc...)
GROUP BY id_machin ORDER BY xxx
???

Patrice

> l'astuce REGEXP ; mon souci serait que, en l'absence de tri {par xxx} on
> puisse récupérer les articles dans l'ordre donné par la liste in ...

  C'est pas vraiment le but d'un in. Dans un ensemble, y'a pas d'ordre.

Ouais ouais, mais on peut en vouloir un !

  Et le coupp du order by de sauvage, c'est vraiment pas idéal. Autant
faire autant de select qu'il y a d'id.

Tu as raison : pourquoi faire simple quand on peut faire compliqué ? Le
order de sauvage aurait le mérite d'être simple à faire, même s'il est un
peu tiré par les chevaux.

-- Fil