[spip-dev] boucle DATA et critère !par clé

bonjour,

il me semble qu’il y a un bug pour faire un tri par ordre décroissant (inverse) sur les clé d’un tableau avec DATA. Et je n’ai pas trouvé sur la liste de message le signalant.

Donc avec Spip 3.0.11, une boucle du type (DATA){source table #GET{tableau}}{!par clé} ne donne pas le résultat attendu, les clés sont toujours triées dans l’ordre croissant.

En regardant le code dans écrire > iterateur > data.php ligne 389, il y a :

if (isset($r2) and $r[2])

or, en écrivant “if (isset($r[1]) and $r[2])”

le tri par clé en ordre inverse fonctionne à nouveau.

christophe

En effet, if (isset($r[*2*]) and $r[2])... c'est mieux

Corrigé par:
http://core.spip.org/projects/spip/repository/revisions/21010
et
http://core.spip.org/projects/spip/repository/revisions/21011

Merci pour le signalement !

il me semble qu'il y a un bug pour faire un tri par ordre décroissant
(inverse) sur les clé d'un tableau avec DATA. Et je n'ai pas trouvé sur
la liste de message le signalant.

Bien joué

Corrigé par:
http://core.spip.org/projects/spip/repository/revisions/21010
et
http://core.spip.org/projects/spip/repository/revisions/21011

Merci pour le signalement !

Ça venait de moi ; j'avais bien raté mon coup :frowning:
http://core.spip.org/projects/spip/repository/revisions/19545

Merci Christophe & Suske.

MM.

de même dans ecrire/iterateur/data.php, ligne 414

remplacer

return ($a ' . ($r[2] ? '>' : '<').' $b) ? -1 : 1;';

par

return ($a ' . (isset($r[2]) ? '>' : '<').' $b) ? -1 : 1;';

permet d’éviter une notice PHP,

car $r[2] n'est pas défini lorsque le sens de tri est ASC (sens par défaut et implicite)