[SPIP Zone] forms_et_tables : recherche sur les champs choix multiple

A propos de la Forms et Tables :

Quelques observations :

  1. lorsque l’on créé des champs de type « choix multiple » (spécifiant et public)
  2. puis que l’on interroge par forms_html la table qui contient ce choix multiple
  3. sur ce choix multiple lors de la recherche c’est le critère ET qui est adopté.

Ce qui signifie que les résultats n’afficheront que les données qui contiennent exactement la mêmes choix que ceux spécifiés dans la recherche.

Je pense que le critère ET est logique pour une utilisation entre des champs différents d’une table ce qui permet d’affiner la recherche. Par contre lors d’une sélection sur un choix multiple, l’utilisation (ou la possibilité d’utiliser) une condition OU me semble intéressante.

Cela permet par exemple de définir une entité qui possède plusieurs champs d’activité (définis dans le choix multiple).

Lorsque l’on recherche dans forms_recherche au moins un de ces champs (case à cocher) il serait logique que les résultats qui contiennent ce champ d’activité soient affichés.

Qu’en pensez vous ?

Pierre

pierre gracchus a écrit :

A propos de la Forms et Tables :

Quelques observations :

1. lorsque l'on créé des champs de type "choix multiple" (spécifiant et public)
2. puis que l'on interroge par forms_html la table qui contient ce choix multiple
3. sur ce choix multiple lors de la recherche c'est le critère ET qui est adopté.

Ce qui signifie que les résultats n'afficheront que les données qui contiennent exactement la mêmes choix que ceux spécifiés dans la recherche.

non,
avec {filtre} ou {filtre ET}, la boucle retourne toutes les donnees qui contiennent au moins tous ces choix, mais possiblement d'autres en plus
avec {filtre OU}, la boucle retourne toutes les donnees qui contiennent au moins un des choix

Je pense que cela correspond au plus grand usage.

Apres il y en aura toujours qui auront besoin d'un ET entre les champs et un OU entre les choix, ou le contraire.

Qu'ils proposent un patch ou qu'ils commitent le code et la syntaxe qui va bien !
Cedric

pierre gracchus a écrit :

A propos de la Forms et Tables :

Quelques observations :

1. lorsque l'on créé des champs de type "choix multiple" (spécifiant et public)
2. puis que l'on interroge par forms_html la table qui contient ce choix multiple
3. sur ce choix multiple lors de la recherche c'est le critère ET qui est adopté.

Ce qui signifie que les résultats n'afficheront que les données qui contiennent exactement la mêmes choix que ceux spécifiés dans la recherche.

Je pense que le critère ET est logique pour une utilisation entre des champs différents d'une table ce qui permet d'affiner la recherche. Par contre lors d'une sélection sur un choix multiple, l'utilisation (ou la possibilité d'utiliser) une condition OU me semble intéressante.

Cela permet par exemple de définir une entité qui possède plusieurs champs d'activité (définis dans le choix multiple).

Lorsque l'on recherche dans forms_recherche au moins un de ces champs (case à cocher) il serait logique que les résultats qui contiennent ce champ d'activité soient affichés.

Bonjour,

Pour les champs de style choix multiples, c'est un OU qui est utilisé (et non pas un ET comme vous l'indiquez).
On se retrouve en effet avec des requêtes de type :

dc.champ='xxxx' AND dc.valeur IN ('x','y')))

ce qui permet d'extraire les données associé à la valeur x OU y pour le champ de type xxxx.

Par contre il semblerait qu'on obtienne quelques incohérences dans les résultats lors de l'utilisation de plusieurs groupes de mots-clés (dont au moins un à choix multiples) au sein d'un formulaire de recherche (problème dans le regroupement et le HAVING res=x). Un débugage reste à faire à ce sujet à partir des logs sql .... ce qui implique de le faire et de le commiter ! :wink:

Amicalement,
Philippe