Bonjour,
j'ai activé le champ "groupe_de_travail" qui correspond à ce que je
souhaite gérer.
Par contre c'est un champ numerique, et je n'ai pas compris sa logique
et donc encore moins comment faire des requetes, pour par exemple,
n'afficher que les membres pour lesquel la case "relations publiques" est
cochée
merci
Bonjour,
Si j'ai bien compris la logique.
Il n'y a qu'une zone numérique dans la base de donnée.
Cette zone est exprimée en binaire pour l'affichage.
Le tableau suivant vous permettra de comprendre la logique .
*bdd* *binaire* *valeurs*
0 0 rien n'est selectionné
1 1 la premiere valeur est selectionnée ( Télécoms)
2 10 la deuxieme valeur est selectionnée (Trésorerie)
3 11 la première et la 2eme valeurs sont selectionnées (Télécoms et
Trésorerie)
4 100 la troisième valeur est selectionnée (relations publiques)
Par conséquent si vous voulez n'afficher que les membres pour lesquel la
case "relations publiques" est cochée il faut selectionner
groupe_travail=4 .
(select * from membres where groupe_travail=4)
Cordialement Didier Flourac
2017-04-17 14:17 GMT+02:00 Solidairnet Chôm'Actif <solidairnet@gmail.com>:
> Bonjour,
> j'ai activé le champ "groupe_de_travail" qui correspond à ce que
je
> souhaite gérer.
> Par contre c'est un champ numerique, et je n'ai pas compris sa
logique
> et donc encore moins comment faire des requetes, pour par exemple,
> n'afficher que les membres pour lesquel la case "relations
publiques" est
> cochée
>
> merci
>
> --
> *Thierry MATTIO*
>
> *Conseiller Médiateur Numérique*
>
Merci pour l'explication :-)
mais du coup pour moi ça peut être (pour 4 cases cochables) si j'ai bien
compris 4,5,6,7,12,13,14,15 mais comme j'en ai 12 cochables....je ne suis
pas rendu :-)
Il y a une methode pour trouver les bonnes valeurs sans faire le tableau de
jenesaispascombien de lignes?
merci encore :-)
Thierry
4 100 la troisième v
5 101
6 110
7 111
8 1000
9 1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111
Le 17 avril 2017 à 18:12, didier flourac <didier.flourac@gmail.com> a écrit
:
> Bonjour,
> Si j'ai bien compris la logique.
> Il n'y a qu'une zone numérique dans la base de donnée.
> Cette zone est exprimée en binaire pour l'affichage.
> Le tableau suivant vous permettra de comprendre la logique .
> *bdd* *binaire* *valeurs*
> 0 0 rien n'est selectionné
> 1 1 la premiere valeur est selectionnée ( Télécoms)
> 2 10 la deuxieme valeur est selectionnée (Trésorerie)
> 3 11 la première et la 2eme valeurs sont selectionnées (Télécoms et
> Trésorerie)
> 4 100 la troisième valeur est selectionnée (relations publiques)
>
> Par conséquent si vous voulez n'afficher que les membres pour lesquel
la
> case "relations publiques" est cochée il faut selectionner
> groupe_travail=4 .
> (select * from membres where groupe_travail=4)
>
> Cordialement Didier Flourac
>
>
>
> 2017-04-17 14:17 GMT+02:00 Solidairnet Chôm'Actif
<solidairnet@gmail.com>:
>
>> Bonjour,
>> j'ai activé le champ "groupe_de_travail" qui correspond à ce
que je
>> souhaite gérer.
>> Par contre c'est un champ numerique, et je n'ai pas compris sa
logique
>> et donc encore moins comment faire des requetes, pour par exemple,
>> n'afficher que les membres pour lesquel la case "relations
publiques" est
>> cochée
>>
>> merci
>>
>> --
>> *Thierry MATTIO*
>>
>> *Conseiller Médiateur Numérique*
>>
>
>
Hello,
les champs à choix multiple sont stockés sous forme binaire. Un peu de
théorie sur le fonctionnement des opérations binaires te serait utile si
tu veux faire des trucs complexes.
Si tu veux juste sélectionner par option en SQL, il te faut déjà la
liste des options possibles avec leur numéro (ça commence à 0). Tu peux
obtenir cela en faisant : SELECT valeur FROM config WHERE cle =
"champs_membres";
Ça sera sous cette forme là :
[groupe_travail]
title = "Groupes de travail"
help = "Coucou"
editable = true
options[] = "Télécoms"
options[] = "Trésorerie"
options[] = "Relations publiques"
options[] = "Communication presse"
options[] = "Organisation d'événements"
options[] = "Présidents du monde"
Si tu veux les membres qui ont coché "Relations publiques" dans leur
fiche, c'est la troisième option, mais on commence à compter à zéro
(Télécoms = 0, Trésorerie = 1, etc.), c'est donc l'option numéro 2 :
SELECT * FROM membres WHERE groupe_travail & (1 << 2);
Remplacer "2" par le numéro de l'option s'il est différent. Ne pas
toucher au "1" dans la requête.
Cordialement.