Archief - [PROG][JSP] Webshop

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Candyman66

Legacy Member
Hallo,

Ik ben op het moment een kleine webshop in mekaar aan het steken met behulp van JSP's (code volgt hieronder). Hetgene dat ik wil dat hij momenteel moet doen is het volgende: ge selecteert een product uit een combobox, daarna vult ge een getal in hoeveel keer ge het wilt hebben en daarna drukt ge op toevoegen. Men krijgt dan direct de inhoud van de shoppingcart te zien (zit in een hashtable bij mij). Als ik erna nog eens opnieuw hetzelfde product kies en een waarde invul, dan zou hij die waarde moeten optellen bij de huidige waarde in de hashtable en dat is nu net het probleem dat ik heb.

Code:
[SIZE=2]
[LEFT<%

	if (request.getParameter("toevoegen") != null) {
	
		if (session.getAttribute("list") == null) {
			Hashtable table = new Hashtable();
			table.put(request.getParameter("product"), request.getParameter("aantal"));
			session.setAttribute("list", table);
		}
		
		else {
			Hashtable table = (Hashtable)(session.getAttribute("list"));
			Enumeration keys = table.keys();
			boolean toevoegen = false;
			
		while (keys.hasMoreElements()){
		
			String key = (String)(keys.nextElement());
			
			
				if(key.equals(request.getParameter("product"))){
					//out.println((Integer)(table.get(key)) + " + " + Integer.parseInt(request.getParameter("aantal")));
					
					toevoegen = true;
				}
											
			}
			int aantal = 0;
			if (toevoegen) {
				aantal = (Integer)(table.get(request.getParameter("product"))) + Integer.parseInt(request.getParameter("aantal"));
				table.put(request.getParameter("product"), aantal);
			}
			else {
				aantal = Integer.parseInt(request.getParameter("aantal"));
				table.put(request.getParameter("product"), aantal);
			}
			session.setAttribute("list", table);
		}
		
		Hashtable table = (Hashtable)(session.getAttribute("list"));
		Enumeration keys = table.keys();
		String key;
		out.println("<lu>");
		while (keys.hasMoreElements()){
			key = (String) keys.nextElement();
			out.println("<li>");
			out.println(key+" : "+table.get(key));
			out.println("</li>");
			session.setAttribute("list", table);
		}
		out.println("</lu>");
		
	
	}

%>[/SIZE]

Als resultaat krijg ik telkens de waarde * 2. Met een println heb ik de huidige waarde gecontroleerd, en het blijkt dus dat hij de nieuwe waarde er effectief in zet en deze dus ophoogt met wat ik in het textfield invul.
Als iemand mijn fout ziet, ik zou het heel erg apprecieren als ge het hier wilt zeggen :)

*edit*

De code is aangepast, het werkt nu bijna. Ik krijg enkel een fout als ik de eerste entry in mijn hashtable wil ophogen met de nieuwe waarde. De rest van de entries worden perfect aangepast zoals het moet.

Ollie

Legacy Member
Code:
[SIZE=2]table.put(request.getParameter("product"), request.getParameter("aantal"));

...

int aantal = 0;

if (toevoegen) {
   aantal = (Integer)(table.get(request.getParameter("product"))) + Integer.parseInt(request.getParameter("aantal")) ;
   table.put(request.getParameter("product"), aantal) ;
}[/SIZE]

Zoek het verschil...(hint: type van value in de Hashtable)

Code staat trouwens vol herhalingen. Zo goed als 50% is overbodig.

WHiSPy

Legacy Member
Scriptlets zijn niet de oplossing. Kijk aub eens naar het MVC design pattern?

Emerxill

Legacy Member
Brrrr, scriptlets *shiver*
Gelijk WHiSPy zegt, MVC toepassen.
Neen, MVC zelf gaat de Strings niet voor u naar ints omzetten, maar het is geen rocketscience omdat wel te doen dmv MVC te gebruiken

tmagus

Legacy Member
indeed, eerste simple schoon oo modelke maken en dan gewoon simple gebruik maken van een paar controllerkers die samen werken met uw jsp pagina's,

zal veel schooner zijn en veeel simpeler zijn...

Candyman66

Legacy Member
Ik heb het uiteindelijk opgelost gekregen door de hashtable types mee te geven <String, Integer> Toen werkte wel alles, en de herhalingen zijn er ook uitgehaald :)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan