Help - Search - Members - Calendar
Full Version: Shopping cart
The Planet Forums > System Administration > Web Hosting
gpo
I've created a shopping html form and servlet for it,and I want to do this :Return a web page summarising the cost for each item.
and Add the totals up and provide a grand total.
But all information (apart from quantities) are listed as 0 or null when trying to display the output, could anyone help? I have included my code if anyone fancies giving me a few tips!!

part code...

Html form

<FORM action='../servlet/SimpleShoppingBasket' method='POST'>
<TR><TH ALIGN='center' VALIGN='top'>Item</TH>
<TH ALIGN='center' VALIGN='top'>Unit Price (£)</TH>
<TH ALIGN='center' VALIGN='top'>Quantity</TH></TR>
<TR><TD ALIGN='center' VALIGN='top' COLSPAN=3>
<tr>
<td> <b>Socks</b> </td>

<td> 4 </td>
<td> <SELECT NAME='choices'>"
"<OPTION>0</OPTION>"
"<OPTION>1</OPTION>"
"<OPTION>2</OPTION>"
"<OPTION>3</OPTION>"
"<OPTION>4</OPTION>"
"</SELECT>

</td>
</td>
</tr>

<td> <b>Shirt </b> </td>
<td> 16 </td>
<td> <SELECT NAME='choices1'>"
"<OPTION>0</OPTION>"
"<OPTION>1</OPTION>"
"<OPTION>2</OPTION>"
"<OPTION>3</OPTION>"
"<OPTION>4</OPTION>"
"</SELECT>

</td>

</td>
</tr>
<input type=submit value='Add to Cart'> </td>
</TABLE>

</FORM>

the servlet

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class SimpleShoppingBasket extends HttpServlet {

public void init() throws ServletException{
System.out.println("Servlet Initialised");
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{


response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<HTML><BODY>");

Enumeration aEnum = request.getParameterNames();
int[] unitprices = null;
int[] quantities = null;
String[] products = null;

while (aEnum.hasMoreElements()){
String parameterName = ( String )aEnum.nextElement();
System.out.println(parameterName);
String[] values = request.getParameterValues(parameterName);
if (unitprices == null) unitprices = new int[values.length];
if (quantities == null) quantities = new int[values.length];
if (products == null) products= new String[values.length];

for(int i = 0; i < values.length; i++){
if(parameterName.equals("price")){
unitprices[i] = Integer.parseInt(values[i]);
}

else if(parameterName.equals("choices")){
quantities[i] = Integer.parseInt(values[i]);
}

else if(parameterName.equals("items")){
products[i] = values[i];
}

System.out.println(products[i] + " " + quantities[i] + " " + unitprices[i]);
}
}

out.println("<TABLE ALIGN='center' BORDER='1' WIDTH='50%' CELLSPACING='3' CELLPADDING='3'><TR>" + "\n" +
"<TR><TH>Item</TH><TH>Unit Price (£)</TH><TH>Quantity</TH><TH>Total</TH>");

int total = 0;
for(int i =0; i < products.length; i ++){
total += quantities[i] * unitprices[i];
out.println("<TR><TD>" + products[i] + "</TD><TD>" + unitprices[i] + "</TD><TD>" +
quantities[i] + "</TD><TD ALIGN='right'>" + unitprices[i] * quantities[i] + "</TD></TR>");
}
out.println("<TR><TD ALIGN='left' VALIGN='top' COLSPAN=3>Grand Total</TD>");
out.println("<TD ALIGN='right' VALIGN='top'>" + total + "</TD></TR>");
out.println("</TABLE></BODY></HTML>");
}
}
nsheth
Looks like in your form, you have 2 fields - one name "choices" and the other named "choices1" . . . but in your servlet code, you are looking for fields named "item," "price," and "choices."

There are no form input elements named "price" or "item" so when trying to lookup those values, there won't be anything there.

Hope that helps!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2010 Invision Power Services, Inc.