[Résolu] Tri sur 2 niveaux dans une boucle REPONSES FORMULAIRE FORMIDABLE

Dans les boucles « habituelles », il existe la possibilité de trier {par critère1, critère2}.
Du coup, en essayant de reproduire le même comportement dans une boucle interrogeant les réponses à un formulaire formidable, j’ai essayé {tri_selon_reponse input_1, input_3} ou {tri_selon_reponse input_1, tri_selon_reponse input_3}} mais sans succès…
Ce n’est pas la bonne écriture ou peut-être n’est-ce pas possible ?

As tu testé {tri_selon_reponse input_1} {tri_selon_reponse input_3} ?

1 « J'aime »

Maieul, tu es un magicien !
(et SPIP, c’est bô !)

Hop c’est dans la doc : Boucler sur les réponses de Formidable - SPIP-Contrib

En surveillant les réponses à un formulaire, je constate quelque chose qui m’intrigue. J’ai un formulaire pour lequel il y a 358 réponses validées.
J’ai mis en place une boucle qui ne filtre pas les réponses et se contente de les trier
<BOUCLE_tri(FORMULAIRES_REPONSES ){id_formulaire=7}{tri_selon_reponse input_1}{tri_selon_reponse input_3}>
Or cette boucle ne retourne que 349 réponses.
J’ai donc cherché à comprendre et il s’avère que c’est le deuxième tri_selon_reponse qui est en cause. Le champ input_3 n’est effectivement pas un champ obligatoire. Il est le plus souvent rempli mais… 9 réponses comportaient un champ input_3 sans réponse et l’application du critère {tri_selon_reponse input_3} entraîne la non prise en compte de ces réponses.
S’agissant d’un tri « complémentaire » (=sous tri si on peut dire), on ne s’attend pas à ce comportement.
=> Comportement normal ? Pas normal ?

Ya pas de notion de « complémentarité » au sens facultatif où tu l’entends. Les critères écrits à la suite sont toujours conjugués par des ET (AND).

Ce que tu voudrais semble t il c’est

  • une option de ce critère {tri_selon_reponse input_3 seulement_si_défini}
    (ou {?tri_selon_reponse input_3} qui en fait un critère optionnel mouais)
  • ou peut une valeur par défaut pour son argument input_3 dans sa déclaration (ça existe pas ? jesaispas),
  • ou une combinaison de ces 2 possibilités {tri_selon_reponse input_3 valeur_sinon}

C’est à coder, ou au moins tu peux créer un ticket pour en exprimer le besoin.

Je ne comprends pas bien ta réponse. Ce que je voulais exprimer c’est le constat de voir qu’un critère de tri - qui est quelque chose dont la fonction est d’ordonner les résultats issus d’une boucle - conduisent à exclure des résultats. J’imaginais dans ma petite tête de non-codeur que {tri_selon_reponse input_3} ferait un tri de toutes les réponses selon la valeur d’input_3 et ensuite prendrait en compte les réponses pour lesquelles input_3 n’a pas de valeur en les mettant je sais pas où, à la fin ou au début, mais quelque part car, encore une fois, s’agissant d’un tri, on s’attend à retrouver toutes les réponses, alors que là il y a exclusion de certaines réponses.

Dans le cas présent, on peut effectivement contourner le problème en mettant une valeur par défaut.

Tu peux aussi créer un ticket pour cela :slight_smile:

et tant mieux si une valeur par défaut solutionne la situation