Les jointures sont disponibles depuis quelque temps dans SPIP, mais tout comme plein de nouveautés des dernières versions, je n’y avait pas encore goûté. C’est maintenant fait, et aux quelques errements initiaux près, c’est vraiment à connaitre. Voici un exemple très concret.
Utilisant le plugin Agenda pour gérer des événements [1], j’ai eu besoin de lister chronologiquement les événements rattachés à des articles ayant un mot clef particulier.
Le code du squelette aurait été beaucoup plus simple si les mots clefs étaient rattachés directement aux événements, mais je préfère largement attacher les mots clefs aux articles, l’ajout aux événements étant laborieux.
Le problème, donc, est de lister {par date} des (EVENEMENTS) liés à des (ARTICLES) qui ont au moins un mot clef avec {id_mot=3}.
La technique traditionnelle serait de faire une boucle (ARTICLES) pour filtrer selon le mot clef, puis dans son corps une boucle sur les (EVENEMENTS) de chaque article.
Malheureusement, cela ne permet pas un classement {par date} de l’ensemble des (EVENEMENTS), mais seulement article par article.
C’est là que les jointures arrivent à la rescousse. L’idée est donc de faire une unique boucle, qui porte sur deux sources de données, les (ARTICLES) et les (EVENEMENTS), le lien étant l’id_article.
Voici ce que cela donne pour lister des événements passés rattachés aux articles de la rubrique courante ayant un mot clef avec {id_mot=3} :
Il faut tester différentes syntaxes pour arriver au résultat, mais globalement, quelques règles découvertes sur le tas peuvent aider :
(EVENEMENTS) et non celui des (ARTICLES), sans doute parce que les (EVENEMENTS) sont l’élément principal de la boucle{id_mot=3} fonctionne sur une boucle (ARTICLES), il ne fonctionne pas sur la table articles, d’où nécessité d’ajouter la seconde jointure sur la table mots_articlesA vous de tester !
[1] En remplacement de mon vieil agenda développé il y a quelques années
Le toujours excellent [1] et cryptique [2] Maître Eolas nous apprend que le droit à la copie privée n’est pas un droit, et que de toute façon on ne l’a pas, on a l’air malins !
The application itself is not a goal at all, it’s an obstacle between the user and their goal. [1]
Pas mal de blogs ont déjà parlé ces derniers jours de Wordle, un service permettant de réaliser via une applet Java [1] des nuages de tags assez jolis.
Derniers commentaires
NiKo sur Les 3 Suisses mutilent leurs mannequins ! : J’ai envoyé l’url de ton billet à PhotoshopDistasters, croises les doigts >>
Xavier sur Les 3 Suisses mutilent leurs mannequins ! : Peut-être le bellâtre tenait-il dans sa main une bouteille de bière, faisant penser que "les (...) >>
Sur Microsoft Office:mac 2008 a un auto update capricieux : tutut tu te gourres même si ce n’est pas évident. l’installeur de autoUpdate te demande de fermer (...) >>
Plugandsecure sur Les transferts de gros fichiers simplifiés : PnS Concept propose une solution payante qui présente de très nombreux avantages : transfert de (...) >>
giz404 sur Les dinosaures du Web francophone sont gâteux... et je me fais (virtuellement) vieux : Si je suis loin d’être un dinobloggueur (j’ai commencé en 2004), tu m’as donné envie de fouiner dans (...) >>
Sylvain sur Google s’emmêle les pinceaux : hmmm ... je pense que c’est surtout que ton site à un bien meilleur score sur ces mots (...) >>
Oncle Tom sur Diigo l’ultra social permet de s’ajouter comme son propre ami : Qu’est-ce qui est si bien sur Diigo ? J’ai du mal à remplacer ma barre de favoris Delicious et le (...) >>
NiKo sur Surveillez vos erreurs 404, elles peuvent être très instructives : Attention cependant, logguer les 404 dans une base de données (ou dans un fichier de logs (...) >>
Olivier G. sur Surveillez vos erreurs 404, elles peuvent être très instructives : Intéressant. Est-ce que tu n’aurais pas aussi intérêt à t’envoyer l’adresse IP du visiteur (...) >>
Olivier sur Surveillez vos erreurs 404, elles peuvent être très instructives : merci pour cet éclairage très instructif. Il va falloir appliquer les recettes maintenant (...) >>