# Daten korrekt in DB schreiben



## Gast (22. Mai 2005)

Hallo, ich habe folgendes Problem:

Über eine HTML Seite kann ich mittels checkboxen mehrere eigenschaften ankreuzen, die dann in eine spalte der DB geschrieben werden. wenn ich díe daten aber dann wieder auslesen will, dann kommt immer nur eine eigenschaft, auch wenn mehrere angekreuzt werden.
weiss jemand vielleicht, was ich da falsch mache??


----------



## Gast (22. Mai 2005)

ach ja hba ich vergessen zu schreiben: ich mache das mit jsp


----------



## TheSunToucher (22. Mai 2005)

Poste doch mal ein bischen Source-Code, sonst können wir dir ganz schlecht helfen


----------



## Gast (22. Mai 2005)

ok also hier ist der HTML code teil:


```
<tr>
	<td valign="top">Hobbies:</td>
	<td>
		<table border="0">
			<tr><td><input type="checkbox" name="hobbies" value="Sport"> & Sport</td><td><input type="checkbox" name="hobbies" value="Computer"> & Computer</td></tr>
			<tr><td><input type="checkbox" name="hobbies" value="Lesen"> & Lesen</td><td><input type="checkbox" name="hobbies" value="Internet"> & Internet</td></tr>
			<tr><td><input type="checkbox" name="hobbies" value="Kino"> & Kino</td><td><input type="checkbox" name="hobbies" value="Natur"> & Natur</td></tr>
			<tr><td><input type="checkbox" name="hobbies" value="Theater"> & Theater</td><td><input type="checkbox" name="hobbies" value="Heimwerken"> & Heimwerken</td></tr>
			<tr><td><input type="checkbox" name="hobbies" value="Oper"> & Oper</td><td><input type="checkbox" name="hobbies" value="Reisen"> & Reisen</td></tr>
			<tr><td><input type="checkbox" name="hobbies" value="Autos"> & Autos</td><td><input type="checkbox" name="hobbies" value="Kochen"> & Kochen</td></tr>
			<tr><td><input type="checkbox" name="hobbies" value="Kunst"> & Kunst</td><td><input type="checkbox" name="hobbies" value="Shoppen"> & Shoppen</td></tr>
		</table>
	</td>
</tr>
```

und dann auf der jsp seite, wenn man auf "senden" klickt wird das so eingelesen:


```
String hobbies=request.getParameter("hobbies");
...
try {
		Class.forName("com.mysql.jdbc.Driver");
		Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/partner", "", "");
		Statement stmt = conn.createStatement();
		String sql="insert into kunde values('','"+name+"','"+alter+"','"+geschlecht+"','"+plz+"','"+wohnort+"','"+hobbies+"','"+musik+"','"+kommentar+"','"+suche+"','"+benutzerName+"')";
		
		stmt.executeUpdate(sql);
		
		out.println("Profil erfolgreich erstellt
");
	}
```



also ich hoffe es ist einigermasen klar. also in dem teil wo man seine hobbies anklicken kann, wird immer nur ein hobbie eingetragen.


----------



## Bleiglanz (23. Mai 2005)

String hobbies=request.getParameter("hobbies");

liefert nur den ersten Wert!!


die Werte stehen in einem Array, weil alle den gleichen namen haben

und

aufpassen, weil nicht gesetzte Checkboxen nicht vorhanden sind!


----------



## Gast (23. Mai 2005)

und wie mache ich das, dass alle elemente in die db eingegeben werden??


----------



## TheSunToucher (23. Mai 2005)

Du kannst die checkboxen umbenennen und jeweils mit:

```
String hobbies=request.getParameter("name_der_checkbox");
```
Da jede checkbox "hobbies" heißt funktioniert's nicht. 

Man könnte es zukünftig noch schöner machen, schau dir mal die Methoden von "request" genauer an.


----------



## Gast (23. Mai 2005)

das habe ich schon probiert. ich habe erst die checkboxen umbenannt, und dann im jsp code das gehabt:


```
String hobbies1=request.getParameter("hobbies1");
String hobbies1=request.getParameter("hobbies1");
usw
```

das hat aber nicht geklappt, da ja dann in der sql anweisung nicht jedes einzelne hobbie steht, sondern nur


```
insert into kunde values (.....'"+hobbies+"'...);
```


----------



## Gast (23. Mai 2005)

natürlich immer eine neue nummer bei hobbies


----------



## TheSunToucher (23. Mai 2005)

Ach du willst das alle Hobbies in einer einzigen Spalte in der Datenbank stehe? Das würde ich aber nicht so machen, wenn du die Hobbies später anzeigen willst mußt du den String den du dann aus der Datenbank list parsen.

Wenn du es dennoch so machen willst setze die hobbies doch einfach zu einem String zusammen, also ungefähr so:

```
StringBuffer sb = new StringBuffer();
sb.append(request.getParameter("hobby1"));
sb.append(request.getParameter("hobby2"));
// usw
String hobbies = sb.toString();
```

Wie gesagt, das ist kein normalisertes Datenbank-Modell und auch den Code könnte man schöner machen, aber so sollte es gehen...


----------

