Je souhaite afficher une liste de mots clé sur le site si et seulement
si il y a un article qui a ce mot clé et donc la date est supérieure
ou égale à celle du jour et comprise dans un intervalle de temps.
Voici ma requête en base de donnée avec la date simplifiée qui fonctionne :
SELECT A.id_article, A.titre, A.date, M.titre
FROM spip_articles A
INNER JOIN spip_mots_articles MA ON ( MA.id_article = A.id_article )
INNER JOIN spip_mots M ON ( M.id_mot = MA.id_mot )
WHERE `A`.`date` > '2010-01-20'
AND `A`.`date` < '2010-01-28'
AND M.id_groupe = 1
GROUP BY M.titre
LIMIT 0 , 30
Je souhaite afficher une liste de mots clé sur le site si et seulement
si il y a un article qui a ce mot clé et donc la date est supérieure
ou égale à celle du jour et comprise dans un intervalle de temps.
Et je bloque, je n'ai pas les mots clés qui se regroupent, et c'est
les noms des articles qui apparaissent...
Normal : tu fais une boucle sur les ARTICLES.
Je suggérerais de faire ça en 2 temps : tu récupères les articles qui ont les bons
critères, puis les mots-clé associés en le stockant dans un doublon "mots"
Reste à faire une boucle pour classer tes mots-clé
Le 21 janvier 2010 00:06, Florence HENRY <florence.henry@obspm.fr> a écrit :
Bonsoir,
Normal : tu fais une boucle sur les ARTICLES.
Je suggérerais de faire ça en 2 temps : tu récupères les articles qui ont
les bons
critères, puis les mots-clé associés en le stockant dans un doublon "mots"
Reste à faire une boucle pour classer tes mots-clé
ça marche nickel, en imbriquant les boucles entre elle, merci.
Pour la seconde solution, j'avais testé ce n'est pas concluant.
Je vais essayé de trouver la solution avec les jointures spip, ça doit
être faisaible et si je trouve, je vous en fait part car là au niveau
du temps de calcul c'est un peu long :
- spip : 0.479s
- phpmyadmin : 0.0079 sec
peut être que ça te permet de faire avec une seule boucle,
avec une boucle comme tu essayais de faire initialement ?
non.
le principe de la balise non ambigüe c'est de pouvoir récupérer
une balise associée au suffixe de la boucle d'où on veut récupérer
sa valeur (... hum, pas très français tout ça...).
sur *une* seule boucle, l'intérêt est nul.
et spip ne sait toujours pas traiter 2 balises de même nom mais de
table différentes : typiquement une boucle ARTICLES avec une jointure
sur MOTS ; #TITRE affiche quoi ? la valeur correspondante de la
*table principale* (FROM).
Denis vient de répondre à ma place, la balise ambigüe ne marche que
pour les boucles imbriquées.
Pas pour les boucles avec des jointures, peut être que dans le temps
ça viendra qui sait.
En tout cas merci pour votre aide à tous.
Par contre, je n'arrive pas à tout faire passer dans une seule boucle
avec des jointures snif snif, et j'ai essayé x possibilités, en
inversant l'ordre des noms :
<BOUCLE_mots_evenement(ARTICLES mots_articles mots) .... >
<BOUCLE_mots_evenement(MOTS mots_articles articles) .... >
<BOUCLE_mots_evenement(MOTS_ARTICLES articles mots) .... >
....
Ainsi qu'avec les noms en minuscule
<BOUCLE_mots_evenement(articles mots_articles mots) .... >
<BOUCLE_mots_evenement(mots mots_articles articles) .... >
<BOUCLE_mots_evenement(mots_articles articles mots) .... >
....
D'ailleurs, au niveau de la syntaxe exacte niveau évolutivité, c'est
quoi j'ai fait des recherches, un coup j'ai droit au nom en majuscule
puis minuscule ( http://programmer.spip.org/Forcer-des-jointures ) et