[TYPO3-german] Checkbox-Wert auslesen

Bernd Wilke xoonsji02 at sneakemail.com
Wed Sep 27 00:10:57 CEST 2006


On Tue, 26 Sep 2006 14:21:53 +0200, Rainer Griess wrote
with subject "Re: [TYPO3-german] Checkbox-Wert auslesen":

> Hi Micha,
> 
> erster Mann (oder Frau) zur Stelle... Bist immer so schnell mit der 
> Antwort. Danke. Noch eine Nachfrage...
> 
> Michael Feinbier wrote:
> > Hi Rainer,
> > 
> > Rainer Griess schrieb:
> >> Wenn die Checkbox blau nun im Backend gewählt wurde, wird in der 
> >> Datenbank im Feld farbe der Wert "1" gespeichert. Bei Auslesen im 
> >> Frontend per sL() wird dann auch "blau" angegeben.
> >>
> >> Wenn ich nun aber z.B. *zwei* Checkboxen anklicke, enthält das Feld 
> >> farbe den Wert '3'. Sind alle angeklickt enthält das Feld den Wert "7".
> >>
> > 
> > In der Datenbank werden die Werte der Checkboxen als Dualzahlen 
> > ausgewertet und dann in Dezimalzahlen ausgewertet.
> > 
> > Wenn ich nur die erste Checkbox ausgewählt habe ist die Dual
> > 
> > 001 -> ergibt dezimal 1
> > 
> > Wähle ich die ersten zwei aus
> > 
> > 011 -> ergibt dezimal 3
> > 
> > Alle drei:
> > 
> > 111 -> dezimal 7
> > 
> > So erhälst du für jede "Checkboxkombination" eine eindeutige Dezimalzahl.
> > 
> >> Wie kann ich alle angeklickten Werte im Frontend ausgeben?
> >>
> > 
> > Du musst wahrscheinlich die dezimalzahl wieder in die dualzahl umwandeln 
> > und dann entsprechend die 1en und 0en auswerten.
> > Möglich, dass es dazu eine fertige Funktion in der API gibt, weiß ich 
> > aber nich genau. Zur not eben mit den PHP Funktionen arbeiten.
> 
> Auch wenn du nicht weißt, wie das am elegantesten zu lösen ist. Für die 
> Nachwelt möchte ich hiermit verkünden, dass ich an einem Hinweis dazu 
> sehr interessiert wäre. Ich schätze nicht, dass das, was ich vorhabe, so 
> unüblich ist, dass ich da selbst eine Funktion schreiben muss. Da gibt 
> es doch sicher was.
> 
> Oder wie macht ihr anderen das?


for ($i=0; $i<$anzoptions; $i++) {
	if (($dbfeld >> $i) & 1) {
		$content.=$farbe[$i].' ist gewählt.<br />';
	}
}

die entscheidenden Operatoren zum Nachlesen:
	>>  schiebe Wert bitweise um ... Stellen nach rechts
	&   bitweises und

schiebe die zahl bitweis enach rechts und dann betrachte nur das letzte Bit

eine Alternative, die evtl. verständlicher ist:
	if (($dbfeld & (1<<$i)) {
bzw. genaugenommen:
	if ((($dbfeld & (1<<$i))!=0) {

hier:
	<< schiebe nach links

schiebe ein Bit (1) nach links und überprüfe ob dieses Bit in der zu
überprüfenden Zahl gesetzt ist.


Bernd
-- 
----------------
Bernd Wilke     
Annweilerstr.20 
40229 Düsseldorf
0211/229 2800



More information about the TYPO3-german mailing list