Daten korrekt in DB schreiben

  • Themenstarter Themenstarter Gast
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gast

Gast
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??
 
Poste doch mal ein bischen Source-Code, sonst können wir dir ganz schlecht helfen
 
ok also hier ist der HTML code teil:

Code:
<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:

Code:
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.
 
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!
 
und wie mache ich das, dass alle elemente in die db eingegeben werden??
 
Du kannst die checkboxen umbenennen und jeweils mit:
Code:
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.
 
das habe ich schon probiert. ich habe erst die checkboxen umbenannt, und dann im jsp code das gehabt:

Code:
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

Code:
insert into kunde values (.....'"+hobbies+"'...);
 
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:
Code:
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...
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben