您好,欢迎访问三七文档
购物车一、数据库结构:产品数据表(Products):存放产品信息产品名ProductName产品编号ProductID单价Price分类编号CategoryIDCart:购物车数据表,临时存放客户的订单产品编号ProductID产品名ProductName价格Price客户Session标号SessionID订购数量QuantityOrders:订单,当用户确认订单后,订货数据将由Cart表转存入此表产品编号ProductID客户Session编号SessionID订购数量QuantityCustomers:客户,实现客户登录时将使用该表二、建立数据库连接:1、添加数据源:在控制面板中选择:管理工具/ODBC数据源,单击添加,选择数据库驱动程序为MicrosoftAccessDriver,单击完成,在弹出的对话框中为数据源命名为Store,单击选择,找到建立好的.mdb文件,然后单击确定2、建立连接:在InterDev中的ProjectExlporer中右击选择AddDataConnection,选择数据源,命名为Con,连接建立后的所有数据存取都将基于此连接。三、购物车要实现的基本功能和对应的文件:产品浏览和选购Products.asp放入购物车AddtoCart.asp浏览购物车ViewCart.asp删除一个产品DeleteItem.asp更新购物车UpdateCart.asp确认订单SaveOrder.asp四、Products.asp本页以表格显示客户所选的产品分类中的所有商品,每一个商品后都有一个添加到购物车按钮,指向AddtoCart.asp。1、添加prodRec控件,设定记录源为Products表。2、添加Grid控件,设定其数据源为prodRec3、添加选购此产品链接在Grid的属性页中单击AddUnboundColumn,在Header中输入:选购此产品,在Field/expression中输入:=<Ahref=AddtoCart.asp?ProductID=+[ProductID]+>选购+</A>。此语句的作用是,将当前选定的产品的产品编号存放在变量ProductID中传递给AddtoCart.asp,在AddtoCart.asp中将根据此产品编号为购物车添加记录。五、AddtoCart.asp本页提供用户所选商品的详细信息,用户在此页可以修改订购数量。1、添加一个记录集,命名为prodRec,设定记录源为SQLstatement,输入:SELECT*FROMProducts。在<Head>区中输入如下代码:<ScriptLanguage=JavascriptRunat=Server>functionprodRec_onbeforeopen(){newSQL=Select*FromProductsWhereProductID=+Request(ProductID);prodRec.setSQLText(newSQL);}</Script>此段代码在记录集打开之前执行,根据Products.asp传递来的ProductID参数,过滤记录集,获得用户选择的商品。2、再添加一个记录集,命名为cartRec,该记录集的作用是根据用户的Session编号和选定的产品编号,确定所选商品是否已经在购物车中,如果已经在购物车中,则提取Cart表中的记录,提示用户该商品已选购,并让用户更改选购数量:<ScriptLanguage=JavascriptRunat=Server>VarIncart;//是否在购物车中VarQtyinCart;//用户已经选购的数量functioncartRec_onbeforeopen(){newSQL=Select*FromCartWhere(SessionID=+'Session.SessionID'+)and(ProductID=+Request(ProductID)+);cartRec.setSQLText(newSQL);}functioncartRec_ondatasetcomplete(){if(cartRecrdset.getCount()==1)//过滤后记录集不为空,用户已选购了该商品{Incart=true;QtyinCart=cartRec.fields.getValue(Quantity);//取出用户已经选购的数量}</Script>3、<Body>中的代码:<FormAction=UpdateCart.aspMethod=Post>您选定的商品为:<%=prodRecorset.fields.getValue(ProductNAME)%><%IfIncart=trueThen%>您的购物车中已有<%=QtyinCart%>件此商品,请更新您选购的数量:<InputType=TextName=OrderQtyValue=<%=QtyinCart%>><%Else%>请输入您的选购数量:<InputType=TextName=OrderQtyValue=1><%EndIf%><InputName=prodIDType=hiddenValue=<%=prodRec.fields.getValue(ProductID)%>>//使用一个隐藏的编辑框,存放用户选定的产品编号,供UpdateCart.asp使用。<InputName=prodNameType=hiddenValue=<%=prodRec.fields.getValue(ProductName)%>><InputName=prodPriceType=hiddenValue=<%=prodRec.fields.getValue(Price)%>>//使用三个隐含编辑框,向UpdataCart.asp传递产品编号、名称和价格。<InputType=SubmitValue=添加至购物车></Form>六、UpdateCart.asp接收AddtoCart.asp传递来的prodID、prodName、prodPrice和OrderQty,加上客户的Session编号,存入Cart表中。1、添加记录集cartRec,设置数据源为Select*FromCart2、添加更新数据的代码:<ScriptLanguage=JavascriptRunat=Server>functioncartRec_onbeforeopen(){if(Request(InCart)==0){newSQL=Select*FromCart;}//不在购物车中,取出所有数据else{newSQL=Select*FromCartWhereSessionID=+Session.SessionID;}//已经在购物车中,取出唯一的数据,准备修改数据cartRec.setSQLText(newSQL);}functioncartRec_ondatasetcomplete(){if(Request(InCart)==0)//如果不在购物车中,添加新纪录{fields=newArray(ProductID,ProductNameQuantity,SessionID);values=newArray(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.asp1、添加记录集,命名为cartRec,设置数据源为Select*FromCart2、添加Grid控件,设定数据源为cartRec,显示三个字段:ProductName、Quantity、Price。添加两个UnboundedColumn:1)显示总价格,Field/Expression为:=[Quantity]*[Price]。2)编辑/删除按钮,Field/Expression为:=<AHref=AddtoCart.asp?ProductID=+[ProductID]+编辑/A>/<AHref=DeleteItem.asp?ProductID=+[ProductID]+>删除</A>。这两个超链接分别将ProductID传递给AddtoCart.asp和DeleteItem.asp。3、添加指向SaveOrder.asp的链接<Ahref=SaveOrder.asp>确认订单</A>八、DeleteItem.asp删除用户选定的一条购物车记录1、添加记录集cartRec,设置数据源为Select*FromCart2、添加代码:<ScriptLanguage=JavascriptRunat=Server>functioncartRec_onbeforeopen(){newSQL=Select*fromCartWhere(SessionID=+'Session.SessionID'+)And(ProductID=+Request(ProductID)+);cartRec.setSQLText(newSQL);}//过滤记录集得到当前用户选定要删除的购物车记录functioncartRec_ondatasetcomplete(){cartRec.deleteRecord();Response.Redirect(ViewCart.asp);}//删除客户选定的购物车记录,然后转向ViewCart.asp十、SaveOrder.asp保存购物车中的临时数据至Order表1、添加记录集cartRec,设定数据源为Select*FromCart,在onbeforeopen()中过滤用Select*FromCartWherSessionID=Session.SessionID过滤记录集,得到当前用户的所有未保存购物车记录2、添加记录集orderRec,设定数据源为表Order3、捕获cartRec的ondatasetcomplete()事件,输入代码:functioncartRec_ondatasetcomplete(){while(!cartRec.EOF){fields=newArray(ProductID,SessionID,Quantity);values=newArray(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);}计数器在浏览网页的时侯,常常可以看见一些“当前网站上的人数是XXX人”的在线人数同计。如何用ASP来做一个呢?首先,分析一下它的做法,一般来说,这些线上人数统计都是指一个时段内的访客人数统计。比如(5分钟内,10分钟内)而这个时间的长短,是由设计者设定的。在这个时段内同计各个不同IP的访客总数,就可以得出当前的线上人数了,但这里有一个精确问题需要解决,至于用什么办法来精确地统计,那就是各人不同的做法了,比如可以用自动提交的页面,隔一段时间读取COOKIES等等,而在ASP中,有一个更好的技巧,就是使用session对象来统计,这里介绍一下gobal.asa这个文件,这是一个很重要的一个文件,请看看它的结构。<SCRIPTLANGUAGE=VBScriptRUNAT=Server>SubSession_OnStart
本文标题:ASP十大常用程序
链接地址:https://www.777doc.com/doc-4296631 .html