2 hoch 12 - nicht 12 hoch 2
Du musst aber nicht 2^12 = 4096 Abfragen machen, sondern nur ganz genau 12.
Ich sagte "logisch ver-UNDen" und meinte sowas in der Art:
$checkboxes = array(01, 02, 04, 010, 020, 040, 0100, 0200, 0400, 01000, 02000, 04000);
foreach($checkboxes as $cb){
if (($yourboxes & $cb) == $cb){
// die entsprechende Checkbox ist 'wahr'
}
}
Die Zahlen im Array stellen die einzelnen Checkboxen dar, also ganze 2 hoch irgendwas, 1 bis 2048 - in Oktalschreibweise.
Der einfache &-Operator ver-UNDet bitweise.
$yourboxes sei dein Wert aller gesetzten (und nicht gesetzten) Checkboxen.
Wenn in $yourboxes das Flag $cb gesetzt ist, wird die Bedingung wahr.
Du kannst dem Array auch ($key => $value)-Paare geben.
Der Link von aemka macht quasi das gleiche (nur andersrum)
for ($i=0; $i<10; $i++) {
if (($datenbank_feld >> $i) & 1) {
$catsarray[] .= $cats[$i];
}
}
Hierbei wird das $datenbank_feld (hab ich oben $yourboxes genannt) um 1,2,3,... Stellen nach rechts geschoben und das dann rechteste Bit (Wert 1) betrachtet.
Also wenn das nicht genau das ist, was du willst, hast du dich schlecht ausgedrückt.
.
Edit:
Hab nochmal nachgelesen. Du schreibst:
Wie kann ich die in der Datenbank gespeicherten Daten in Fluid ausgeben?
Wir haben dir Lösungen oder zumindest Ansätze in PHP angeboten, fluid spricht ja nicht direkt mit der DB.
Oder willst du etwa die Logik mit fluid-for-Viewhelper durchlaufen? Machbar wäre das auch.
Anders gefragt: Was hast du für einen Ansatz und an welcher Stelle liegt das Problem?