Ik heb een kolom Kleur in een database. De inhoud ziet er zo uit: bijv. zwart/wit of zwart/wit/rood of rood/wit/zwart of wit/zwart/rood of wit/rood etc.
Nu wil ik dat je met checkboxes kleuren kan selecteren. Dus als je kiest [wit] [zwart] en [rood], dat alle beesten met die kleuren (ongeacht de volgorde in de kolom) tevoorschijn komen.
Weet iemand welke functie je daarvoor kan gebruiken?
Je zult ook in je query bitwise moeten vergelijken. Anders krijg je in je query inderdaad enkel exacte matches. Het zal zoiets moeten zijn als:
'... WHERE (Code & '.$Code.' = '.$Code.')...'
Stel:
rood = 1
wit = 2
zwart = 4
Wat je zoekt:
rood + wit = 3
Wat je dus vergelijkt is Code met 3.
Een rood/wit/zwarte kat = 1 + 2 + 4 = 7
In dat concrete geval vergelijk je 7 met 3, oftewel 7 & 3. De uitkomst van zo'n vergelijking is de cijfersom van de overeenkomstige kleuren. Dit is dus ook 3. Je zou "7 & 3" dus kunnen lezen als "de overeenkomstige kleuren van rood+wit+zwart (7) en rood+wit (3)". Dit is wederom rood + wit (3).
Omdat dat hetgene is waar je uiteindelijk naar zoekt, moet je de vergelijking (7 & 3), of liever gezegd, de uitkomst hiervan, exact matchen met hetgeen je zoekt.
(Code & 3 = 3) levert een "Ja" of een "Nee" op die aangeeft of de kleurcode van de kat (Code) de kleuren rood + wit (3) bevat.
Als je simpelweg '... WHERE Code & '.$Code.' ...' zou gebruiken dan levert dit altijd "Ja" op als er ten minste één overeenkomstige kleur is omdat de uitkomst van deze vergelijking dan een getal groter dan 0 oplevert. En '... WHERE iets = <positief getal> ...' is altijd waar...