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 !
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).
> <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 ...
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
???
> 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.