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.
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.
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.