[Résolu] Boucle sur les réponses formulaire formidable

J’ai un formulaire formidable qui contient un champ « case à cocher » dont la réponse est optionnelle (=non obligatoire). Ce champ s’appelle checkbox_1
Je cherche à faire une boucle sur la table FORMULAIRES_REPONSES_CHAMPS dans le but de repérer (en vue de les exclure ensuite en utilisant le critère doublons) les réponses pour lesquelles il n’y a pas eu de case de cochée (valeur de checkbox_1 vide)
Comment rédiger correctement le critère à indiquer dans la boucle un truc dans l’esprit : <BOUCLE_vide(FORMULAIRES_REPONSES_CHAMPS){#VALEUR checkbox_1=NULL}>

Quelqu’un(e) a déjà fait qqchose du genre ? Merci+++ d’avance

Désolé, j’étais pris quand tu as posé ta question sur contrib.

Il vaut mieux procéder par jointure plutot que par stockage/exclusion. Cela sera nettement plus performant en terme de perf.

Quelque chose comme

<BOUCLE(FORMULAIRES_REPONSES spip_formulaires_reponses_champs){id_formulaire=28} {nom=checkbox_1} {valeur!=''}>
#ID_FORMULAIRES_REPONSE

</BOUCLE>
  1. On joint la table des réponse et la table des champs
  2. On veut uniquement le formulaire 28
  3. On chercher le champ checkbox1
  4. On exclut si la valeur est vide ''

Merci Maïeul, c’est OK avec cette écriture.
Je tombe cependant sur un os complémentaire.
Ce formulaire est un formulaire d’inscription à des postes de bénévole. Comme il y a de nombreux postes et de nombreux créneaux, une même personne peut remplir plusieurs fois le formulaire : il indique le poste et le créneau qu’il souhaite mais à chaque fois il re-renseigne son nom, son téléphone (…). Du coup, dans l’idée de faire un « annuaire » pour avoir simplement les coordonnées (tel, mail…) de chaque bénévole n’apparaît qu’une fois, j’ai imaginé une solution qui met #SET et #GET à contribution :

<BOUCLE_tous(FORMULAIRES_REPONSES spip_formulaires_reponses_champs){id_formulaire=7} {nom=checkbox_1} {valeur=!''}>
#SET{name,#VOIR_REPONSE{input_1,valeur_uniquement}}
<BOUCLE_individu(FORMULAIRES_REPONSES_CHAMPS){valeur=#GET{name}}{0,1}>
(et ensuite les réponses : #VOIR_REPONSE{input_1,valeur_uniquement}, #VOIR_REPONSE{input_2,valeur_uniquement} etc...)

À chaque tour de la boucle « tous », #GET{name} est bien rempli (si je demande à l’afficher, je le vois bien), mais la boucle « individu » ne renvoie rien.
Par curiosité, j’ai fait renseigné « en dur » la boucle « individu »

<BOUCLE_individu(FORMULAIRES_REPONSES_CHAMPS){valeur=André DUPONT}}{0,1}>
(et ensuite les réponses : #VOIR_REPONSE{input_1,valeur_uniquement}, #VOIR_REPONSE{input_2,valeur_uniquement} etc…)

ça fonctionne bien.
Tout se passe comme si le critère {valeur=#GET{name}} n’était pas correctement prise en compte.
Une idée de ce qu’il se passe ?

Partant de la réponse à la première question, j’ai complété la doc : Boucler sur les réponses de Formidable - SPIP-Contrib

c’est parce que #VOIR_REPONSE{input_1,valeur_uniquement} sans précision envoie une valeur « formatée » (avec balise <p>). Le uniquement signifie juste qu’on enlève le label. Ca ne correspond donc pas exactement à la valeur en base. Utilise plutot #VOIR_REPONSE{input_1,brut} `.

Merci Maieul. J’aurais pu tourner longtemps en rond dans le sens où, lorsque on affiche #GET{name},
par exemple

<BOUCLE_tous(FORMULAIRES_REPONSES spip_formulaires_reponses_champs){id_formulaire=7} {nom=checkbox_1} {valeur=!’’}>
#SET{name,#VOIR_REPONSE{input_1,valeur_uniquement}}

on a Antoine DUPONT Emile N’TAMAK François CROS Thomas RAMOS (…) donc sans formatage.

Donc, là pas trop compris mais pour autant c’est nickel
Merci infiniment Maïeul !

@Emmanuel_GUILLEMONT parce que ce que tu vois à l’écran, c’est la version « interpeté », mais regarde le code source…

ouvre un nouveau sujet stp.