Zum Inhalt springen

Wie speichert t3 checkbox werte in der DB?

Erstellt am 20. Dezember 2007 · 4 Antworten · letzte Antwort am 2. Januar 2008

Tags: TCA, Frage

InforMedic ·

Hallöchen,

ich habe ein kleines Verständnisproblem:

ich habe eine ext. geschrieben die mehrere Eingabemöglichkeiten über das BE (für user teils auch im FE) bietet.

Soweit sogut, ich habe 4 checkboxen für eine Themenwahl!
Klicke ich jetzt box 3 und 4 an speichert mir t3 das ganze in der db mit 12 ab (box 2 und 3 ist entsprechend 6). T3 speichert da wohl bei mehrfach auswahl das multiplizierte ergebniss ab!

Klicke ich nur box 2 an wird in der DB auch 2 gespeichert. Jetzt hätte ich vermutet das bei 3 => 3 abgespeichert wird, was dann zu einem Problem hätte führen müssen wenn 1 und 3 gechecked wären, es wird aber 4 abgespeichert.

Irgendwie blick ich die logik dahinter nicht, denn ich will das ganze auch über das FE Formular darstellen.

Kennt sich jemand mit checkbox in t3, speziell im BE und bezüglich der DB speicherung aus und kann mir ein paar Tipps geben?

Das wäre super, danke und Gruß
Info
Wie funktioniert das dann aber z.B. mit box 1 und 3

InforMedic ·

Hallo Liebe Helfer,

leider habe ich jetzt eine Problem beim Abfragen der Checkboxen direkt in der DB via mysql.

Um die Trefferanzeige meiner Userliste einzugrenzen habe ich eine
Filterselectbox gebastelt die die Werte 1,2,4 und 8 enthält.

Ein onchange löst mir das gewünschte Ereigniss aus und übergibt den gewünschten Wert, an die User MySqlSelectFunction.

Zusätzlich habe ich ein hilfsarray erstellt, welches alle möglichen Kombinationen
Checkbox von 4 möglichen Checkboxen enthält. Checkbox 2 z.b: ist im Bit 2,3,6,7 usw. enthalten.

Die Where Klausel meines SELECT Statements habe ich bezgl. der Topics anhand des Hilfsarrays mit "AND boxes = 2 OR boxes = 3 OR boxes = 6 etc." erweitert.

Leider funktioniert der Select nicht #paralyzed#

Gibt es eventuell in der API bereits bestehende Funktionen zum generieren von WHERE Klauseln speziell für checkbox Dualzahl Abfragen?

digedag ·
InforMedic schrieb

Die Where Klausel meines SELECT Statements habe ich bezgl. der Topics anhand des Hilfsarrays mit "AND boxes = 2 OR boxes = 3 OR boxes = 6 etc." erweitert.

Nur eine Vermutung: fehlt dir vielleicht die Klammer um die "ORs"?

AND (boxes = 2 OR boxes = 3 OR boxes = 6)

MySql verfügt übrigens auch über Operatoren für bitweise Vergleiche.
Wenn du wissen willst, welche Boxen gesetzt sind, dann kannst du das auch so prüfen:

/* Test CB 2 gesetzt */
WHERE ( boxes & 2 ) = 2
/* Test CB 4 gesetzt */
WHERE ( boxes & 8 ) = 8
/* Test CB 2 und 4 gesetzt */
WHERE ( boxes & 10 ) = 10

Du brauchst also jeweils den dezimalen Wert deiner gewünschten Kombination und prüfst diesen direkt gegen den gespeicherten dezimalen Wert.

InforMedic ·

Es waren die Klammern #angry#

Habe in meiner For Schleife wo ich die OR blabla angebe mit Klammern erweitern und siehe da, der select klappt! :p

sql sollte man halt schon beherrschen, wenn eingesetzt =\

Danke Dir für Deinen Tipp!