Jointure / balise #TRI
La balise #TRI est super pour présenter des listes de résultats, mais il y a un problème dans un cas précis: si on fait le tri sur un champ d'une table jointe (ici: spip_rubriques.profondeur), et qu'on n'utilise pas la balise correspondante dans la boucle (#PROFONDEUR)
[(#TRI{titre,"TITRE",ajax}) |] [(#TRI{profondeur,"PROFONDEUR",ajax}) |]
- #TITRE
Le cas suivant marche, par contre (histoire de montrer où est le souci)
[(#TRI{titre,"TITRE",ajax}) |] [(#TRI{profondeur,"PROFONDEUR",ajax}) |]
- #PROFONDEUR - #TITRE
Je précise que c'est un cas qui n'est pas si idiot, parce qu'il y a souvent des boucles dans le genre suivant qui n'utilisent pas les balises:
[(#TRI{titre,"TITRE",ajax}) |] [(#TRI{profondeur,"PROFONDEUR",ajax}) |]
La solution serait d'ajouter la colonne utilisée par #TRI dans la liste des colonnes demandées par SELECT dans la requete, pour passer de la requete (erronnée)
Error SQL 1054 Unknown column 'profondeur' in 'order clause' SELECT '', articles.titre, articles.lang FROM spip_articles AS `articles` WHERE (articles.statut = 'publie') ORDER BY profondeur LIMIT 0,5
a la requete suivante
SELECT '', articles.titre, articles.lang, rubriques.profondeur FROM spip_articles AS `articles` JOIN spip_rubriques AS `rubriques` USING (id_rubrique) WHERE (articles.statut = 'publie') ORDER BY profondeur LIMIT 0,5