网上购物已成为生活的潮流,在网上购物之后,想要随时查看自己已买的东西,想要随时删除或改动某件商品数量,要怎么做呢?以下我就来写代码及释义。先来做用户登陆页面(login.asp):

<html>

<head>

<title>购物车的实现</title>

</head>

<body>

<formmethod="post"action="check.asp">

<tablewidth="200"border="1">

<tr><tdwidth="107">username:</td>

<tdwidth="77"><inputtype="text"name="username"id="username"/></td></tr>

<tr><td>password:</td>

<td><inputtype="password"name="userpass"id="userpass"/></td></tr>

<tr><tdcolspan="2"><inputtype="submit"value="登录"></td>

</tr>

</table>

</form>

</body>

</html>

然后来写接收用户所填写的信息以检查是否存在该用户的页面(check.asp),假设存在该用户,那么就跳到购物的首页(index.asp):

<%

uname=request.Form("username")

upass=request.Form("userpass")

sql="select*fromuserswhereuname='"&uname&"'andupass='"&upass&"'"

setrs=server.CreateObject("adodb.recordset")

rs.opensql,conn,3,1

ifnotrs.eofthen

用户登陆成功之后,将username放入session里,并给用户分配一个订单,就像去超市购物推着一个购物车,此时这个购物车是属于你的,用username和系统时间作为购物车的名字,然后跳转到购物首页。

session("name")=uname

session("orderid")=time&uname

response.Redirect("index.asp")

else

%>

<script>

alert("username或password不对!");

history.back();

</script>

<%

endif

rs.close

setrs=nothing

conn.close

setconn=nothing

%>

那么,接下来就是购物的首页(index.asp)了

<!--#includefile="inc/conn.asp"-->

<html>

<head>

以下用css样式表将表格里的字体统一设置为14号字

<styletype="text/css">‘

<!--

table{

font-size:14px;

}

-->

</style>

</head>

<body>

<%

假设用户没登陆就直接打开购物首页,那么就跳转到登陆页面

ifsession("name")=""then

response.Redirect("login.asp")

endif

%>

做一个搜索的文本框,方便用户搜索商品。其原理是这种:用户填入要搜索的商品后,通过表单提交到本页面,从数据库中查找像用户填写的字符串的商品,再显示出来

<formmethod="post"action="index.asp">

<inputtype="text"size="15"name="search"id="search"/><inputtype="submit"value="搜索"/>

</form>

<%

searchname=request.Form("search")‘得到用户填写的字符串

sql="select*fromproductswherepnamelike'%"&searchname&"%'"‘写sql语句,查找出结果

setrs=server.CreateObject("adodb.recordset")‘设置一个结果集对象

rs.opensql,conn,3,1

whilenotrs.eof‘循环输出商品的相关信息

%>

每一个商品以下都有一个购买button,须要做一个表单

<formmethod="post"action="buy.asp">

<tablestyle="float:left">

<tr>

<tdwidth="103"rowspan="3"><ahref="product.asp?id=<%=rs(0)%>"><imgsrc="images/<%=rs(2)%>"width="100"height="100"border="0"></a><inputtype="hidden"name="id"value="<%=rs(0)%>"><inputtype="hidden"name="price"value="<%=rs(3)%>"/></td>

<tdwidth="107">名称:

<%=rs(1)%></td>

</tr>

<tr>

<td>价格:<%=rs(3)%></td>

</tr>

<tr>

<tdalign="center"><inputtype="submit"name="buy"value="购买"/></td>

</tr>

</table>

</form>

<%

rs.movenext‘指向下一个记录

wend

rs.close

setrs=nothing

conn.close

setconn=nothing

%>

</body>

</html>

假设用户想要查看商品更具体的信息,那么就应该将商品图片做成一个超链接,连接到product.asp,在该页面显示具体信息。在该页面也有一个购买button,点击之后相同跳到buy.asp:

<!--#includefile="inc/conn.asp"-->

<body>

<%

pid=request.QueryString("id")

response.Write(pid)

sql="select*fromproductswherepid="&pid

setrs=server.CreateObject("adodb.recordset")

rs.opensql,conn,3,1

ifnotrs.eofthen

%>

<tablewidth="387"height="119">

<tr>

<tdwidth="120"rowspan="4"><imgsrc="images/<%=rs(2)%>"width="100"height="100"></td>

<tdwidth="276">名称:<%=rs(1)%></td>

</tr>

<tr>

<td>价格:<%=rs(3)%></td>

</tr>

<tr>

<tdheight="30"><%=rs(4)%></td>

</tr>

<tr>

<tdalign="center"><inputtype="button"onclick="javascript:location.href='buy.asp?id=<%=rs(0)%>&price=<%=rs(3)%>'"value="购买"></td>‘点击购买之后触发一个onclick事件,跳转到buy.asp

</tr>

</table>

<%

endif

rs.close

setrs=nothing

conn.close

setconn=nothing

%>

</body>

</html>

用户点击了购买以后,将该商品的id传到buy.asp,以下来写buy.asp的代码:

<!--#includefile="inc/conn.asp"-->‘将连接数据库的字符串包括进来

<%

pid=request("id")‘得到商品的id

price=request("price")‘得到商品的价格

sql="select*frommrcarwherepid="&pid&"andorderid='"&session("orderid")&"'"‘写sql语句来查询

setrs=server.CreateObject("adodb.recordset")

rs.opensql,conn,3,1

假设用户所要购买的商品已经买过,那么就直接在原来的基础上加1,否则的话,就插入记录

ifnotrs.eofthen

sql="updatemrcarsetpcount=pcount+1wherepid='"&pid&"'andorderid='"&session("orderid")&"'"

conn.executesql

response.Redirect("mycar.asp")

else

sql="insertintomrcar(orderid,pid,price,pcount)values('"&session("orderid")&"',"&pid&","&price&",1)"

conn.executesql

response.Redirect("mycar.asp")

endif

rs.close

setrs=nothing

conn.close

setconn=nothing

%>

运行完了sql语句之后将跳转到购物车页面(mycar.asp),显示出用户所购买的商品。而且有改动数量的button和删除的超链接

<!--#includefile="inc/conn.asp"-->

<%

sql="selecta.*,b.pnamefrommrcara,productsbwhereorderid='"&session("orderid")&"'anda.pid=b.pid"

setrs=server.CreateObject("adodb.recordset")

rs.opensql,conn,3,1

%>

<formmethod="post"action="update.asp"name="form1">

<tableborder="1">

<tr><td>orderid</td>

<td>商品名称</td>

<td>商品id</td>

<td>单位价格</td>

<td>数量</td>

<td>删除</td>

<td>改动</td>

</tr>

<%

sum=0

i=1‘这里的i值到后边有介绍

whilenotrs.eof‘将所购买的商品循环输出

%>

<tr><td><%=session("orderid")%></td>

<td><%=rs("pname")%></td>

<td><%=rs(1)%></td>

<td><%=rs(2)%></td>

<td><inputtype="text"size="10"value="<%=rs(3)%>"name="pcount"></td>

<td><ahref="delete.asp?id=<%=rs(1)%>">删除</a></td>

<td><inputtype="button"onclick="javascript:document.form1.action='update.asp?rowcount=<%=i%>&pid=<%=rs(1)%>';document.form1.submit();"value="确认改动"></td>

</tr>

<%

i=i+1

sum=sum+cint(rs(2))*rs(3)‘计算总价格

rs.movenext

wend

rs.close

setrs=nothing

conn.close

setconn=nothing

%>

</table>

</form>

<ahref="index.asp">返回继续购物</a>

总金额为:<%=sum%>

点击改动数量的button之后,就跳到update.asp:

<!--#includefile="inc/conn.asp"-->

<%

这里须要注意在上个页面,有个i值,在这里就用到了,你要指明改动的是哪一行记录

i=request.querystring("rowcount")

pcount=request.form("pcount")(i)

pid=request.querystring("pid")(i)

sql="updatemrcarsetpcount="&pcount&"wherepid="&pid&"andorderid='"&session("orderid")&"'"

conn.executesql

conn.close

setconn=nothing

response.redirect("mycar.asp")‘运行完之后又一次跳转到mycar.asp

%>

相同点击删除之后,就跳到delete.asp,在该页面得到商品的id

<!--#includefile="inc/conn.asp"-->

<%

pid=request.QueryString("id")

response.write(pid)

sql="deletefrommrcarwherepid="&pid&"andorderid='"&session("orderid")&"'"

conn.executesql

conn.close

setconn=nothing

response.Redirect("mycar.asp")‘运行完之后又一次跳转到mycar.asp

%>一个简单的购物车做好了,它用到了连接数据库、数据库的增、删、改、查。

用ASP编写购物车代码的更多相关文章

  1. Asp.net 在网页编写C#代码示例-- 一个简单的web MsSql 命令执行环境

    在给一个客户做的系统上,因为要对数据库进行查看,但之前都是用TeamView来连接到客户的服务器进行数据库操作的 但最近客户那边的TeamView好像更改过密码导致我无法正常连接,而巧了客户的网官因为 ...

  2. (转)Asp.net页面生命周期详解任我行(1)-小试牛刀,编写页面代码

    原文地址:http://www.cnblogs.com/xuyubing/archive/2013/10/01/3348344.html 前言 很久很久以前,还是我在学校的时候,我就看了传智里面视频, ...

  3. Asp.net页面生命周期详解任我行(1)-小试牛刀,编写页面代码

    前言 很久很久以前,还是我在学校的时候,我就看了传智里面视频,学习了一下Asp.net页面生命周期,当时看的时候,因为内功不够深厚,看起来很吃力,现在回头温习了一下,还是有点收获的,于是想用博客记录一 ...

  4. 【夯实PHP系列】购物车代码说明PHP的匿名函数

    1. 定义:匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数.最经常用作回调函数(callback)参数的值.当然,也有其它应 ...

  5. python之编写购物车(第二天)

    作业: 编写购物车 具体实现了如下功能: 1.可购买的商品信息显示 2.显示购物车内的商品信息.数量.总金额 3.购物车内的商品数量进行增加.减少和商品的删除 4.用户余额的充值 5.用户购买完成进行 ...

  6. 10个小技巧助您写出高性能的ASP.NET Core代码

    今天这篇文章我们来聊一聊如何提升并优化ASP.NET Core应用程序的性能,本文的大部分内容来自翻译,当然中间穿插着自己的理解,希望对大家有所帮助!话不多说开始今天的主题吧! 我们都知道性能是公共网 ...

  7. 在 C# 中使用 Span<T> 和 Memory<T> 编写高性能代码

    目录 在 C# 中使用 Span 和 Memory 编写高性能代码 .NET 中支持的内存类型 .NET Core 2.1 中新增的类型 访问连续内存: Span 和 Memory Span 介绍 C ...

  8. [转]通过Visual Studio为Linux编写C++代码

    Build 2016大会上Microsoft首次公布的Visual Studio 2015扩展提供了在VS2015中编写C++代码,随后通过Linux/UNIX计算机进行编译和执行的能力.这种想法非常 ...

  9. 基于CkEditor实现.net在线开发之路(2)编写C#代码,怎么调用它。

    上一章简约的介绍了CkEditor编辑器,可以编辑js逻辑代码,css,html,C#代码,这章我根据实际例子,讲解怎么编写C#代码和怎么调用它. 大家都还记得刚刚接触程序编时的hello Word吧 ...

随机推荐

  1. HDU 1234 开门人和关门人

    #include <string> #include <algorithm> #include <iostream> using namespace std; st ...

  2. hdoj 1532 Drainage Ditches(最大网络流)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1532 思路分析:问题为最大网络流问题,给定一个有向图,需要求解该有向图的最大网络流,使用Edmonds ...

  3. Qtwebkit配置,设置交叉编译环境 - croop520的专栏 - 博客频道 - CSDN.NET

    Qtwebkit配置,设置交叉编译环境 - croop520的专栏 - 博客频道 - CSDN.NET Qtwebkit配置,设置交叉编译环境 分类: Qt Webkit 2012-04-12 15: ...

  4. [编程语言][java][java se]java泛型中? T K V E含义(学习)

    ? 表示不确定的java类型,类型是未知的. T  表示java类型. K V 分别代表java键值中的Key Value. E 代表Element,特性是枚举. 1.意思     jdk中的K,V, ...

  5. Objective-c 协议(protocol)

    协议的作用类似地C++中对抽象基类的多重继承.类似于Java中的接口(interface)的概念.   协议是多个类共享方法的列表,协议中列出的方法在本类中并没有相应实现,而是别的类来实现这些方法. ...

  6. oc拨打电话方法

    1,这种方法,拨打完电话回不到原来的应用,会停留在通讯录里,而且是直接拨打,不弹出提示NSMutableString * str=[[NSMutableString alloc] initWithFo ...

  7. js 特效 手风琴效果

    $(document).ready(function(){ //定义展开的块 var lastBlock = $('#a1'); //展开的块的宽度 var maxWidth = 406; //折叠的 ...

  8. http://riddle.arthurluk.net walkthrough

    MSVFMyU4MCU4MWh0dHAlM0ElMkYlMkZyaWRkbGUuYXJ0aHVybHVrLm5ldCUyRnN0YWdlb25lLnBocCUwRCUwQTIlRTMlODAlODFo ...

  9. (Problem 33)Digit canceling fractions

    The fraction 49/98 is a curious fraction, as an inexperienced mathematician in attempting to simplif ...

  10. 405 HTTP method GET is not supported by this URL

    孙鑫java web开发详解P285里面提交Get网站弹出提示405 HTTP method GET is not supported by this URL 原因父类doGet()方法未覆盖. 应写 ...