# Datenbankeintag eines Warenkorbes funktioniert nicht



## jsffer (20. Dez 2012)

Hallo,

habe folgendes Problem:

Habe einen JSF-Shopsystem programmiert, dabei soll der gewählte Warenkorb, sowie auch der "Kunde" in eine MySQL Datenbank eingetragen werden. Problem ist das nur die Kundendaten in die Datenbank übertragen werden. Ich brauche eine Möglichkeit um den Warenkorb, der sozusagen zwei Schritte zuvor generiert wurden, zu speichern und hier mit den Kundendaten in die DB zu übertragen. 

Hier nochmal der chronologische Ablauf: 

Warenkorb -> Kundendaten -> Übersicht und Übertragung der Daten in die DB(bestätigung der Übersicht)

Hier der Code für die Übertragung in DB


```
public String bestellen() {
		Kunde k = new Kunde();
		Position p;
		Bestellung b = new Bestellung();
		List<Wkorb_buch> waren = wkorb.getWarenkorb();

			
		
		
		int kid;
		int bid;
		k.setGruppennr(gruppennr);
		k.setGueltigbis(kartengueltigkeit);
		k.setKartennr(kartennummer);
		k.setName(name);
		k.setOrt(ort);
		k.setPlz(plz);
		k.setStrasse(strasse + hausnummer);
		k.setVorname(vorname);
		k.setZahlungsart(zahlungsart);
		kid = db.persistKunde(k);
		b.setGruppennr(gruppennr);
		b.setKdnr(kid);
		bid = db.persistBestellung(b);
		// Warenkorb:
		for (int i = 0; i < waren.size(); i++) {
			p = new Position();
			p.setGruppennr(gruppennr);
			p.setMenge(waren.get(i).getAnzahl());
			p.setId(new PositionId(bid, waren.get(i).getId()));
			db.persistPosition(p);
		}
		//Wkorb.warenkorbloeschen();
		return null;
	}
```

Kann mir da jemand helfen? Kann dann auch den weiteren Code zu verfügung stellen.

Danke schonmal!


----------



## bronks (21. Dez 2012)

Verstehe ich das richtig: Noch in Zeile 21 macht das Programm was es soll und danach ... ... ja was macht es danach? 
- Speichert es nur Deinen Warenkorb nicht in die DB?
oder
- Oder gibt es eine Fehlermeldung?


----------



## Horschie (21. Dez 2012)

Zeige halt mindestens mal die persistKunde(). In meiner Glaskugel isses heute leider etwas vernebelt


----------



## jsffer (22. Dez 2012)

bronks hat gesagt.:


> Verstehe ich das richtig: Noch in Zeile 21 macht das Programm was es soll und danach ... ... ja was macht es danach?
> - Speichert es nur Deinen Warenkorb nicht in die DB?
> oder
> - Oder gibt es eine Fehlermeldung?



Genau, der Ablauf ist ja wie folgt:

Ware in Warenkorb -> Eingabe Kundendaten -> Bestätigung, Übersicht und Übertragen an DB

Das alles geschieht in verschiedenen Klassen. Da die Kundendaten in die DB eingetragen werden, vermute ich das ich den Warenkorb irgendwie anders speichern muss, damit er dann auf der Bestätigung/Übersichtsseite auch an die DB übertragen werden kann.


----------



## jsffer (22. Dez 2012)

Horschie hat gesagt.:


> Zeige halt mindestens mal die persistKunde(). In meiner Glaskugel isses heute leider etwas vernebelt




```
package Handler;

import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;

import javax.faces.model.ListDataModel;
import javax.faces.validator.ValidatorException;


import wkorb.Wkorb_buch;
import wkorb.Wkorb;
import Handler.Warenkorb;
import de.imut.ec.bshop.Bestellung;
import de.imut.ec.bshop.Buch;
import de.imut.ec.bshop.DBUtil;
import de.imut.ec.bshop.Kunde;
import de.imut.ec.bshop.Position;
import de.imut.ec.bshop.PositionId;

@ManagedBean // sagt dem system dass das hier eine Managed Bean sein soll
@SessionScoped // definiert die Gültigkeit der session

public class Kasse extends Warenkorb{
//	Warenkorb wkorb;
	
	DBUtil db = new DBUtil();
	int gruppennr = 5;
	String name;
	String vorname;
	String ort;
	String strasse;
	String hausnummer;
	String plz;
	String zahlungsart;
	String karte;
	String kartennummer;
	String kartengueltigkeit;
//	private Warenkorb warenkorb;
//	ListDataModel<Warenkorb> Waren;
	List<Wkorb_buch> waren;

//	public List<Wkorb_buch> getWarenkorb() {
//		return wkorb.getWarenkorb();
//	}
	
	public String kasse(){
		waren = wkorb.getWarenkorb();
	//	System.out.println(waren);
		return "Kasse";
	}
	
	
//	public void setWarenkorb(Warenkorb wkorb) {
//		this.wkorb = wkorb;
//	}

	public void setName(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setVorname(String vorname) {
		this.vorname = vorname;
	}

	public String getVorname() {
		return vorname;
	}

	public void setOrt(String ort) {
		this.ort = ort;
	}

	public String getOrt() {
		return ort;
	}

	public void setStrasse(String strasse) {
		this.strasse = strasse;
	}

	public String getStrasse() {
		return strasse;
	}

	public void setHausnummer(String hausnummer) {
		this.hausnummer = hausnummer;
	}

	public String getHausnummer() {
		return hausnummer;
	}
	
	public void setPlz(String plz) {
		this.plz = plz;
	}

	public String getPlz() {
		return plz;
	}

	public void setZahlungsart(String zahlungsart) {
		this.zahlungsart = zahlungsart;
	}

	public String getZahlungsart() {
		return zahlungsart;
	}

	public void setKarte(String karte) {
		this.karte = karte;
	}

	public String getKarte() {
		return karte;
	}

	public void setKartennummer(String kartennummer) {
		this.kartennummer = kartennummer;
	}

	public String getKartennummer() {
		return kartennummer;
	}

	public void setKartengueltigkeit(String kartengueltigkeit) {
		this.kartengueltigkeit = kartengueltigkeit;
	}
	
	public String getKartengueltigkeit() {
		return kartengueltigkeit;
	}
	
"Validierung habe ich hier entfernt"
	
	
	public String bestellen() {
		Kunde k = new Kunde();
		Position p;
		Bestellung b = new Bestellung();
//		List<Wkorb_buch> waren = wkorb.getWarenkorb();
		int kid;
		int bid;
		k.setGruppennr(gruppennr);
		k.setGueltigbis(kartengueltigkeit);
		k.setKartennr(kartennummer);
		k.setName(name);
		k.setOrt(ort);
		k.setPlz(plz);
		k.setStrasse(strasse + hausnummer);
		k.setVorname(vorname);
		k.setZahlungsart(zahlungsart);
		kid = db.persistKunde(k);
		b.setGruppennr(gruppennr);
		b.setKdnr(kid);
		bid = db.persistBestellung(b);
		// Warenkorb:
		for (int i = 0; i < waren.size(); i++) {
			p = new Position();
			p.setGruppennr(gruppennr);
			p.setMenge(waren.get(i).getAnzahl());
			p.setId(new PositionId(bid, waren.get(i).getId()));
			db.persistPosition(p);
		}
		//Wkorb.warenkorbloeschen();
		return null;
	}
	
	
	
}
```


----------

