function mes_stats($arg1, $arg2) {
$row = spip_fetch_array(spip_query("SELECT stats.$arg1 AS retour FROM adbdp WHERE id = $arg2"));
return $row['retour'];
}
derni^H^H^H (ne *jamais* dire 'dernière') correction
(la proposition précédente ne peut fonctionner) :
function mes_stats($arg1, $arg2) {
$row = spip_fetch_array(spip_query(" SELECT stats{$arg1} AS retour FROM adbdp WHERE id = '$arg2' "));
return ($row['retour'] ? $row['retour'] : '');
}
Alors, la réponse d'ESJ à RealET est la bonne mais je ne suis pas convaincu par la solution qui en découle.
1- on peut avoir un *tri* sur un champ dynamique (mais pas avec num aux dernières nouvelles en 1.9.2)
2- le probleme levé par ESJ, c'est que le champ demandé n'est pas forcement remonté dans la boucle car le compilateur optimise les requetes (ce qui est indépendant des 2 autres problemes évoqués : maj/minuscule dans les noms des champs en base et tri dynamique avec num).
donc [(#ENV{#ENV{test3}})] marche très bien, le seul souci, c'est que le champ demandé n'est pas forcement dans la requete (il n'est d'ailleurs pas forcement dans la table...)
Donc 2 solutions pour etre sur qu'il y est:
1- => avoir la balise #XXX correspondante dans la boucle.
ce qui peut se faire tout simplement comme de plusieurs facons, la plus simple etant :
[(#STATS1|?)][(#STATS2|?)][(#STATS3|?)][(#STATS4|?)]
...
[(#ENV{#ENV{test3}})]
2- plus clean, en déclarant explicitement la boucle de facon à lui faire faire un "select *", soit sans doute (pas testé) :
function boucle_ADBDP($id_boucle, &$boucles) {
$boucle = &$boucles[$id_boucle];
$boucle->select[]= '*';
return calculer_boucle($id_boucle, $boucles);
}
et la tu pourras faire :
spip.php?page=test15&test=2006&test2=stats4&test3=stats5
<BOUCLE_anim(ADBDP){annee=#ENV{test}}{par #ENV{test2}}{inverse}>
Contenu du champ [(#ENV{test3})] : [(#ENV{#ENV{test3}})]
</BOUCLE_anim>