# checkbox in datenbank



## hamid (2. Aug 2010)

hallo.

wie kann man am besten checkbox informationen in der datenbank abspeichern? kennt jemand gute tutorials im web???die meißten sind nicht so gut...

ich hab 3 checkboxen und ein feld in der DB. wenn ich alle 3 checkboxen anwähle dann gibt es probleme die daten in DB abzuspeichern..

wie kann man das am besten lösen?

danke


----------



## Tomate_Salat (2. Aug 2010)

Man speichert doch keine checkbox. Man speichert den Wert und der ist ein Boolean. Also würde ich in der Datenbanktabelle für die checkbox ein Boolean-feld vorsehen.


----------



## hamid (2. Aug 2010)

danke für den tipp.

brauch ich in  DB auch 3 felder oder nur 1 Feld? Denke für jeden Checkbox 1 Feld oder?


----------



## Tomate_Salat (2. Aug 2010)

1 Feld? Dann sehe das so in etwa aus [c]1,0,1[/c]...lass soetwas bleiben, pack nicht mehrere Datensätze in ein Feld. Nimm 3 Felder


----------



## hamid (2. Aug 2010)

danke kumpel ! ich versuchs...hoffe du bist noch ne weile on falls ich deine hilfe brauche


----------



## ARadauer (2. Aug 2010)

3 checkboxen... ich würd 3 felder nehmen... und dann mit 1,0 oder true, falsch schalten.
Im Grunde sind ja die Checkboxen unabhängig voneinander zu wählen...

Was anderes wäre bei radioboxen wo immer nur ein wert ausgewählt werden kann.


----------



## Tomate_Salat (2. Aug 2010)

Np ;-) . Notfalls gibts hier noch genug andere, die dir sicher weiterhelfen können.


----------



## hamid (2. Aug 2010)

> Im Grunde sind ja die Checkboxen unabhängig voneinander zu wählen...




ich hab sowas hier. jede checkbox heisst anders. ist das richtig so? oder müssen alle gleich heissen? 


```
<form:checkbox path="KATEGORIEN_EFFIZIENT"/>
    
    Effizienz 
    <form:checkbox path="KATEGORIEN_QUALI"  />
    Qualit&auml;t 
    <form:checkbox path="KATEGORIEN_UMWELT"  />
    Umwelt 
    
    <form:checkbox path="KATEGORIEN_ASI" />
    ASI 
    <form:checkbox path="KATEGORIEN_ORDNUNG" />
    Ordnung<br />
```


----------



## fastjack (2. Aug 2010)

Das hört sich eher nach bestimmten Typen an, die Du einem Objekt gibst. Da man anscheinend einem Objekt mehere Typen der gleichen Klasse zuweisen kann, würde ich die dann mittel NM-Relation speichern: Objekt -> NM -> Type

Tabelle Typ
-----------
ID TYP
1  Effizienz 
2  Qualit&auml;t 
3  Umwelt 
4  ASI 
5  Ordnung

Tabelle Objekt (oder irgendetwas, was diesen Typen haben soll)
--------------
ID
1
2
3

NM-Tabelle (Object -> Typ)
---------------------------
OBJEKT TYP
1          1
1          2
1          3
2          3
3          1

Du brauchst eventuell noch Logik (Programm oder DB) um das doppelte speichern ein und desselben Typs zu einem Objekt zu verhindern.


----------



## hamid (2. Aug 2010)

hi fastjack.

geht das nicht einfacher? ich möchte nur die werte von den checkboxen in die DB speichern. mehr nicht ! ich benutze DERBY DB von Apache.


----------



## fastjack (2. Aug 2010)

Natürlich kannst Du auch zu jedem Typen true/false speichern. Du hast dann aber eventuell mehr Aufwand, wenn mehr Typen dazukommen, oder welche entfallen.


----------



## hamid (2. Aug 2010)

die checkboxen bleiben fest. 4 stück...

kennst du dich mit derby db aus??? es gibt dummerweise kein typ boolean


----------



## fastjack (2. Aug 2010)

Speicher doch als Nummer, 0 ist false, 1 true oder ähnlich. Smallint macht sich gut.


----------



## hamid (2. Aug 2010)

mm..irgendwann fuzt dat net so..bekomme komischerweise auch keine fehlermeldung...

also ich hab in der DB.

4 felder jeweils mit dem smallint

KATEGORIEN_EFFIZIENT SMALLINT,
KATEGORIEN_QUALI SMALLINT,
KATEGORIEN_UMWELT SMALLINT,
KATEGORIEN_ASI SMALLINT,
KATEGORIEN_ORDNUNG SMALLINT,

in meine domain habe ich 

4 variablen

jeweils vom typ int mit den settern und getter methoden.


ich weiss nicht wie ich das ganze debuggen soll um meinen fehler heraus zubekommen.


kannst du mir einen tipp geben?

danke


----------



## maki (2. Aug 2010)

Hat ja nicht wirklich etwas mti WebApps zu tun, daher
*verschoben*


----------



## fastjack (2. Aug 2010)

Mit dem Eclipse Debugger oder dem billigsten Debugger der Welt


----------



## hamid (2. Aug 2010)

mein problem ist die logik...wenn meine db felder den typ smallint haben, ist es doch ok wenn in der logik die varibalen vom typ int sind richtig?


----------



## fastjack (2. Aug 2010)

In Java machst Du daraus Boolean-Variablen. Beim Einlesen schaust Du einfach, ob eine 0 im Feld ist, dann wird daraus false, bei 1, -1, oder was Du sonst so festlegst für true, machst du true daraus.
Beim Speichern gehst Du einfach andersrum vor.


----------



## hamid (2. Aug 2010)

ok danke...glaub es funzt jetzt mit checkbox...das problem war nur das ich in java statt boolean, integer hatte 

was muss ich bei radiobuttons beachten um die werte korrekt in der DB zu speichern?


----------



## Tomate_Salat (2. Aug 2010)

Für Radios hast du ein Feld. Jetzt musst du dir halt überlegen, wie du später das ganze wieder idendifzierst. Am elegantesten wäre wohl: du hast eine Tabelle mit Radio-Beschreibungen und zu jede Beschreibung hat eine eigene ID. Dann speicherst du nur die ID im der Auswahl im Feld:


```
tabelle antworten:
ID | ANSWER
-------------
1  | JA
2  | NEIN
3  | VLLT

tabelle anytable:
antwort|datum
---------------
1|heute     //verweist dann auf JA
2|gestern  // verweist dann auf NEIN
```

Ansonsten würde ich im Programm die radio-bezeichner in einer Liste,Array o.ä. ablegen und dann deren indexnummer zur idendifikation nutzen.


----------



## hamid (2. Aug 2010)

ist mir wieder zu kompliziert.

kann ich nicht wieder wie bei der checkbox die felder als smallint speichern und in java als boolean....analog zu checkbox


----------



## Tomate_Salat (2. Aug 2010)

was ist daran kompliziert? 

Natürlich kannst du es auch so machen, davon rate ich aber ab. Mal abgesehen von Datenbankdesign ist es einfach zu fehleranfällig! Ein SQL ist mal falsch oder jmd hat händisch da gepfuscht und zack steht da mal eine 1 zu viel drin.


----------



## fastjack (2. Aug 2010)

Denk auch an den Wartungsaufwand bzw. Updateaufwand den Di hast, falls sich an den jetzt "festen" Typen doch mal was ändert.
Persönlich würde ich das lieber handfest mit den Typen machen. Da hast Du jetzt ein wenig Aufwand, dafür kannst Du sie später viel besser warten und in der DB wirds auch übersichtlicher aussehen.


----------



## Tomate_Salat (2. Aug 2010)

fastjack hat gesagt.:


> Da hast Du jetzt ein wenig Aufwand, dafür kannst Du sie später viel besser warten und in der DB wirds auch übersichtlicher aussehen.



...richtig. Alles was man nur im entferntesten erweitern könnte....mach es variabel! Vllt wirst du es für das jetztige projekt nicht brauchen, aber glaub mir. Es wird das Projekt kommen, wo du alles fest gemacht hast und du wirst es bereuen. Den Fehler hab ich gemacht und jetzt kommt die returkutsche(wohl eher returLKW).


----------

