产品名 ProductName
产品编号ProductID
单价Price
分类编号CategoryID
产品编号ProductID
产品名ProductName
价格Price
客户Session标号SessionID
订购数量Quantity
产品编号ProductID
客户Session编号SessionID
订购数量Quantity
产品浏览和选购Products.asp
放入购物车AddtoCart.asp
浏览购物车 ViewCart.asp
删除一个产品DeleteItem.asp
更新购物车UpdateCart.asp
确认订单SaveOrder.asp
四、 Products.asp<Script Language=Javascript Runat=Server>
function prodRec_onbeforeopen(){
newSQL="Select * From Products Where ProductID="+Request("ProductID");
prodRec.setSQLText(newSQL);
}
</Script>
<Script Language=Javascript Runat=Server>
Var Incart; //是否在购物车中
Var QtyinCart; //用户已经选购的数量
function cartRec_onbeforeopen(){
newSQL="Select * From Cart Where (SessionID="+'Session.SessionID'+")
and (ProductID="+Request("ProductID")+")";
cartRec.setSQLText(newSQL);
}
function cartRec_ondatasetcomplete(){
if(cartRecrdset.getCount()==1)
//过滤后记录集不为空,用户已选购了该商品
{
Incart=true;
QtyinCart=cartRec.fields.getValue("Quantity");
//取出用户已经选购的数量
}
</Script>
<Form Action="UpdateCart.asp" Method="Post">
您选定的商品为:
<%=prodRecorset.fields.getValue("ProductNAME")%>
<%If Incart=true Then%>
您的购物车中已有
<%=QtyinCart%>件此商品,请更新您选购的数量:
<Input Type="Text" Name="OrderQty" Value="<%=QtyinCart%>">
<%Else%>
请输入您的选购数量:
<Input Type="Text" Name="OrderQty" Value="1">
<%End If%>
<Input Name="prodID" Type="hidden" Value="<%=prodRec.fields.getValue("ProductID")%>">
//使用一个隐藏的编辑框,存放用户选定的产品编号,供UpdateCart.asp使用。
<Input Name="prodName" Type="hidden" Value="<%=prodRec.fields.getValue("ProductName")%>">
<Input Name="prodPrice" Type="hidden" Value="<%=prodRec.fields.getValue("Price")%>">
//使用三个隐含编辑框,向UpdataCart.asp传递产品编号、名称和价格。
<Input Type="Submit" Value="添加至购物车">
</Form>
<Script Language=Javascript Runat=Server>
function cartRec_onbeforeopen(){
if(Request("InCart")==0)
{
newSQL="Select * From Cart";
}//不在购物车中,取出所有数据
else
{
newSQL="Select * From Cart Where SessionID="+Session.SessionID;
}//已经在购物车中,取出唯一的数据,准备修改数据
cartRec.setSQLText(newSQL);
}
function cartRec_ondatasetcomplete(){
if(Request("InCart")==0) //如果不在购物车中,添加新纪录
{
fields=new Array("ProductID","ProductName"Quantity","SessionID");
values=new Array(Request("prodID"),Request("prodName"),Request("OrderQty"),Session.SessionID);
cartRec.AddImmeidate(fields,values);
}
else//如果已经在购物车中,更新购买数量
{
cartRec.fields.setValue("Quantity",Request("OrderQty"));
}
Response.Redirect("ViewCart.asp");
</Script>
七、 ViewCart.asp
1、 添加记录集,命名为cartRec,设置数据源为Select * From Cart
2、 添加Grid控件,设定数据源为cartRec,显示三个字段:ProductName、Quantity、Price。添加两个Unbounded Column:
1) 显示总价格,Field/Expression为:=[Quantity]*[Price]。
2) 编辑/删除按钮,Field/Expression为:="<A Href=AddtoCart.asp?ProductID="+[ProductID]+"编辑/A>/<AHref=DeleteItem.asp?ProductID="+[ProductID]+">删除</A>"。这两个超链接分别将ProductID传递给AddtoCart.asp和DeleteItem.asp。
3、 添加指向SaveOrder.asp的链接
<A href="SaveOrder.asp">确认订单</A>
八、 DeleteItem.asp删除用户选定的一条购物车记录
1、 添加记录集cartRec,设置数据源为Select * From Cart
2、 添加代码:
<Script Language=Javascript Runat=Server>
function cartRec_onbeforeopen()
{
newSQL="Select * from Cart Where (SessionID="+'Session.SessionID'+")
And (ProductID="+Request("ProductID")+")";
cartRec.setSQLText(newSQL);
}//过滤记录集得到当前用户选定要删除的购物车记录
function cartRec_ondatasetcomplete()
{
cartRec.deleteRecord();
Response.Redirect("ViewCart.asp");
}//删除客户选定的购物车记录,然后转向ViewCart.asp
function cartRec_ondatasetcomplete()
{
while(!cartRec.EOF)
{
fields=new Array("ProductID","SessionID","Quantity");
values=new Array(cartRec.fields.getValue("ProductID"),
carRec.fields.getValue("SessionID"),
carRec.fields.getValue("Quantity"));
orderRec.Addimediate(fields,values);//向Order表中添加新记录
cartRec.deleteRecord();//删除购物车中的一条记录
cartRec.Movenext();//继续处理下一条记录
}
Response.Redirect("ViewCart.asp");
}