2007-11-20 10:12
530761333
网上“店铺”DIY
[size=5]一、概述:
最近电子商务是一个非常热门的话题。那么到底什么是“电子商务”?“电子商
务”离我们到底还有多远?据一些网站的问卷调查结果显示,真正成熟的电子商务离
我们还有一定的距离。而中国目前所谓的“电子商务”,也是有中国特色的,这首先
一点就体现在交易方式上:在国外,大多采用“VISA”卡等通用的网上结算方式,而
在国内,虽然最近招商银行、建行等几家银行先后推出了网上结算服务,但还是缺少
一个“顶级”的认证机构,从而导致了网上购物时的消费心态:商家对客户不信任,
而客户也怕上当受骗,所以就形成了目前的具有中国特色的网上购物形式,大多数都
是采用汇款或货到付款的方式。
虽然目前国内还没有开始真正意义上的电子商务,但是对于我们来说,还是应该
做好准备,迎接迟来的电子商务。下面我们来做一个简单的“网上书店”,希望大家
从中能得到一些启示。
要建立一个网上书店,首先应该在网上安一个家。第一步是申请一个域名,然后
还要有自己的服务器,至于服务器的选择,可以用自己的服务器,也可以从ISP处租用
空间,如果使用自己的服务器,可以将它放在自己的机房内自己维护,也可以放在ISP
处实行托管。这几种方式各有各的优缺点,大家可以根据自己的实际情况进行选择。
采用租用空间的形式最为简单,要以满足一般中小用户的要求,而且对于主机的各种
维护您均不用操心。如果您有自己的主机,那么您的使用将是非常灵活的,您可以在
您的机子上建立数据库,而不用受ISP的限制,但是对于您的专业要求将比较高。因此
对于初次涉足这一领域的人来说,可以先租用一块空间就可以了。
在有了一个域名和一个“空间”后,剩下的就是主页了。这里所说的主页指的是
ASP主页,因为这种主页可以很好地处理数据库。要想很好地使用ASP,必须有一些
HTML的基础和一门脚本语言的知识,在后面,我会对HTML和脚本语言做一个较为简要
地介绍,然后重点说一下ASP主页的创建以及与数据库的结合,最后地压轴好戏是一个
网上书店的具体实例,如果大家能跟我一步步地做下去… …好了,下面我们就开始
吧!
二、HTML基础:
HTML在严格意义上来讲,并不算是一种语言,因为它完全是靠浏览器来解释执行
的。也可以说,HTML是一种标记语言,用它可以快速地开发出Web页面。
HTML中有很多的标志词,而且一般都是成对出现。<html>与</html>位于HTML的开始
与结尾,分别标志着HTML文件的开始和结束。其它一些标志词都出现在它们中间。
<title>与</title>用来表示一个页面的标题,它里面的内容将出现在浏览器的标题
上。<body>与</body>可以说是HTML中最常用的一个标志词,它是HTML的主体部分,
其它一些主要的内容都出现在这个标志词中间。
第二部分:实例
项目结构:
该项目主要由几个ASP文件和一个数据库组成:
book.mdb:存放数据库的内容
index.asp:网站主要的文件,大部分的内容均由它来显示
buy.asp:购物蓝的内容
in.asp:供登录使用
registry.asp:使您成为我们的会员
数据库(book.mdb):
第一个表是Book,用于存储关于书目的一些相关的信息,结构如下:
ID
整型
书的序号
Name
字符
书的名字
Author
字符
作者
Brief
字符
简介
Ifcover
整型
是否首页显示
Price
双精度
价格
Publisher
字符
出版社
Cover
字符
封面的图片的路径
Flag
整型
标志
第二个表是info,用于存储会员的信息,结构如下:
Id
字符
会员登录号
Name
字符
会员姓名
Pwd
字符
登录密码
Email
字符
Address
字符
地址
Phone
字符
电话
Post
字符
邮编
Sfz
字符
身份证号码
第三个表是class,用于存储书目的类别,其结构如下:
ID
字符
编号
Name
字符
类别
几个ASP文件的内容:
Index.asp
<!--
分三个TD,最主要的中间的一个,大多数操作都是对中间的一个。
-->
<%@ Language=VBScript %>
<script language=javascript>
function openwindow(num){
window.open ("info.asp?key=" + num,"yu",0,0)
}
</script>
<script language=javascript>
function buy(name){
window.open ("buy.asp?name=" + name ,"yu",0,0)
}
</script>
<script language=javascript>
function viewPage(ipage){
document.Page.txtPage.value=ipage
document.Page.submit()
}
</script>
<HTML>
<HEAD>
<title>网上书店</title>
<META NAME="GENERATOR" C>
</HEAD>
<BODY bgColor=lightcyan>
<P align=center><IMG alt="网上书店"
src="file://C:\InetPub\wwwroot\images\title.jpg">
<TABLE align=center border=0 cellPadding=0 cellSpacing=10
width="100%" style="BORDER-BOTTOM-COLOR: red; BORDER-LEFT-COLOR: red;
BORDER-RIGHT-COLOR: red; BORDER-TOP-COLOR: red">
<tr>
<td colspan=3>
<table border=1 width=100% bgcolor=Khaki cellpadding=0 cellspacing=0>
<tr>
<td bgcolor=MediumSeaGreen ><% =year(date()) & "年" & month(date)
& "月" & day(date) & "日" %></td>
<td bgcolor=MediumSeaGreen ><a href="about.htm">关于我们</a></td>
<td bgcolor=MediumSeaGreen ><a href=buy.asp?name=view>查询购物蓝
</a></td>
<%
if session("UserID")<>"" then
Response.Write "<td bgcolor=MediumSeaGreen> 会员:" & session
("UserName") & "</td>"
else
Response.Write "<td bgcolor=MediumSeaGreen>会员:未登录</td>"
end if
if session("sum")="" then session("sum")=0
Response.Write "<td bgcolor=MediumSeaGreen>购货总金额:" & session
("sum") & "</td>"
%>
</tr>
</table>
</td>
</tr>
<TR>
<TD width="15%" valign=top bordercolor=deeppink bgcolor=beige>
<A href=index.asp?ifcover=1><P align=center>
最新书目</a>
畅销书目
<hr color=deeppink>
<P></P>
<p align=center>
图书分类
<table border=1 cellspacing=0 cellpadding=0 width=100%>
<% set rs=server.CreateObject("ADODB.recordset")
rs.open "select * from class order by ID","DSN=sqlsales;UID=sa;",3,3
rs.movefirst
do while not rs.eof
Response.Write "<tr><td align=center>"
Response.Write "<A href=index.asp?flag=" & rs("ID") & ">" & rs
("Name") & "</a>
"
Response.Write "</td><tr>"
rs.movenext
loop
%>
</table>
</p>
</TD>
<TD width = "65%" bordercolor=orangered valign=top>
<% if Request.QueryString("flag")="" and session("flag")="" or
request.querystring("ifcover")=1 then %>
<%
set rs=server.CreateObject("ADODB.Recordset")
rs.Open "select * from book where
ifcover=1","DSN=sqlsales;UID=sa;",3,3
%>
<P align=center style="FONT-SIZE: x-large"><FONT
color=mediumslateblue style="FONT-FAMILY: serif" >最新书目</FONT></P>
<% for i=1 to rs.RecordCount %>
<table border=0 cellpadding=5 cellspacing=5 width="100%">
<tr>
<td colspan=2><font color=red size=5 ><p align=center><% =rs.Fields
("Name") %></p></font></td>
</tr>
<tr>
<td width="30%"><a href="javascript:openwindow(<% =rs.Fields("ID") %
>)"><img src=<% =rs.Fields("Cover") %>>
</td>
<td><FONT color=mediumslateblue>书号:</FONT><% =rs.Fields("ID") %>
<FONT color=mediumslateblue>作者:</FONT><% =rs.Fields("Author") %
>
<FONT
color=mediumslateblue>原价:</FONT><% =rs.Fields("Price") %>
<FONT
color=mediumslateblue>现价:</FONT><% =rs.Fields("Price") %>
<FONT
color=mediumslateblue>出版社</FONT><% =rs.Fields("Publisher") %></td>
</tr>
<tr>
<td colspan=5> <FONT
color=#660066><% =rs.Fields("Brief") %>
</FONT>
</td>
</tr>
<tr>
<td colspan=6><p align=right><a href=buy.asp?name=<% =rs.Fields("ID")
& "`" & rs.fields("Name") & "`" & rs.fields("Price") %>>购买
</A></p></td>
</tr>
</table>
<hr>
<% rs.MoveNext
next
rs.Close
%>
<% elseif Request.QueryString("flag")=9999 then
Response.Write "购物蓝"
else
set rs=server.CreateObject("ADODB.recordset")
if Request.QueryString("flag")<>"" then session("flag")
=Request.QueryString("flag")
rs.open "select* from book where flag=" & session
("flag"),"DSN=sqlsales;UID=sa;",3,3
session("PageNum")=rs.PageCount
if rs.RecordCount <>0 then
%>
<table border=1 width="100%">
<tr>
<td width=40% align=center>书名</td>
<td width=15% align=center>作者</td>
<td width=29% align=center>出版社</td>
<td width=8% align=center>价格</td>
<td width=8% align=center>订购</td>
</tr>
<%
rs.MoveFirst
session("pagecur")=session("pagecur" & Request.QueryString("flag"))
if session("pagecur") ="" then
session("pagecur")=1
rs.AbsolutePage=1
else
if (Request.Form("txtPage"))="" then
'response.write session("pagecur") & "
"
rs.AbsolutePage =session("pagecur")
session("page")=session("pagecur")
else
rs.AbsolutePage =clng(Request.Form("txtPage"))
session("page")=clng(Request.Form("txtPage"))
'session("Page")=clng(Request.Form("txtPage"))
end if
end if
%>
<form action="index.asp" method=post name=Page>
<% ="<a href=" & chr(34) & "javascript:viewPage(1)" & chr(34) & ">首页
</a>" %>
<%
if session("Page")="" then
session("Page")=1
end if
if clng(session("Page"))>1 then
session("pagecur")=clng(session("page"))-1
Response.Write "<a href=" & chr(34) & "javascript:viewPage(" & session
("Pagecur") & ")" & chr(34) & "> 前页</a>"
else
Response.Write " 前页"
end if
if clng(session("Page"))<clng(session("PageNum")) then
session("pagecur")=clng(session("Page"))+1
Response.Write "<A href=" & chr(34) & "javascript:viewPage(" & session
("Pagecur") & ")" & chr(34) & "> 后页 </a>"
else
Response.Write " 后页 "
end if
Response.Write "<a href=" & chr(34) & "javascript:viewPage(" & session
("PageNum") & ")" & chr(34) & ">末页</a>"
%>
<INPUT id=txtPage name=txtPage style="HEIGHT: 22px; WIDTH: 103px"
value=1>
<INPUT id=submit1 name=cmdPage type=submit value=GO style="BACKGROUND-
COLOR: peru; COLOR: greenyellow">
</form>
<%
i=0
do while not rs.EOF and i<rs.PageSize
i=i+1
Response.Write "<tr>"
'Response.Write "<td>" & rs.Fields("ID") & "</td>" %>
<td><a href="javascript:openwindow(<% =rs.Fields("ID") %>)"><%
=rs.Fields("Name") %></a></td>
<% Response.Write "<td>" & rs.Fields("Author") & "</td>"
Response.Write "<td>" & rs.Fields("Publisher") & "</td>"
Response.Write "<td>" & rs.Fields("Price") & "</td>"
Response.Write "<td>订购</td>"
Response.Write "</tr>"
rs.MoveNext
loop
Response.Write "</table>"
end if
rs.Close
end if %>
<TD width="20%" valign=top bordercolor=orangered bgcolor=beige>
<form method=post action="in.asp" id=login name=login>
<p align=center>
会员登录</p><p align=center>用户<INPUT
id=text1 name=txtUser size=12>
密码<INPUT id=text2 name=txtPWD size=12 type=password></p>
<P align=center><INPUT id=cmdLogon name=cmdLogon type=submit value=进
入><INPUT id=cmdReg name=cmdReg type=button value=申请
onclick=window.location.href="registry.asp"></form></P>
<%
' session("num_book")=session("num")
' if session("num_book")<>"" then
' num_book=clng(session("num_book"))
' response.write "<table border=1 width=100%\><tr><td>书号</td><td>单
价</td><td>数量</td></tr>"
' for i=0 to num_book
' response.write "<tr><td>" & session("ID_" & cstr(num_book))
& "</td><td>" & session("price_" & cstr(num_book)) & "</td><td>" &
session("num_" & cstr(num_book)) & "</td></tr>"
' next
' response.write "</table>"
' end if
%>
<P>为了您获得更优惠的价格,请您申请成为我们的会员,并在此进行登录。</P>
<p>付账方式:采用邮局付款或送货上门方式。
</p></TD></TR></TBODY></TABLE></P>
<p align=center><font size=2 color=blue>所包括文字和图片版权归于530761333
所有,未经许可,不得抄录
于爱武</font></p>
</BODY>
</HTML>
Buy.asp
<HTML>
<HEAD>
<title>购货蓝</title>
<META NAME="GENERATOR" C>
</HEAD>
<BODY bgColor=lightcyan>
<P align=center><IMG alt="网上书店"
src="file://C:\InetPub\wwwroot\images\title.jpg">
<BODY bgColor=lightcyan>
<form action=buy.asp method=post>
<script language=vbscript>
function ID(mystr)
pos=0
for i=1 to len(mystr)
if mid(mystr,i,1)="`" then
if pos=0 then
ID=left(mystr,i-1)
exit for
end if
end if
next
end function
</script>
<%
function ID(mystr)
pos=0
for i=1 to len(mystr)
if mid(mystr,i,1)="`" then
if pos=0 then
ID=left(mystr,i-1)
exit for
end if
end if
next
end function
function BookName(mystr)
pos=0
for i=1 to len(mystr)
if mid(mystr,i,1)="`" then
if pos=0 then
pos=pos+1
else
BookName=mid(mystr,len(id(name))+2,i-2-len(id(name)))
exit for
end if
end if
next
end function
function Price(mystr)
for i= len(mystr) to 1 step -1
if mid(mystr,i,1)="`" then
if pos=0 then
Price=right(mystr,len(mystr)-i)
exit for
end if
end if
next
end function
select case request.querystring("Name")
case "view"
response.write "浏览"
if session("num")="" then
response.write "目前购货蓝中没有选中的书目!"
else
num=clng(session("num"))
response.write "<table border=1><tr><td>书号</td><td>书名</td><td>单价
</td><td>数量</td><td>小计</td></tr>"
session("sum")=0
for i=0 to num
session("sum")=session("sum")+session("sum_" & cstr(i))
response.write "<tr><td>" & session("ID_" & cstr(i)) & "</td><td>" &
session("BookName_" & cstr(i)) & "</td><td>" & session("price_" & cstr
(i)) & "</td><td><input type=text size=5 name=txtNum" & cstr(i) & "
value=" & session("num_" & cstr(i)) & "><td>" & session("sum_" & cstr
(i)) & "</td></td></tr>"
next
response.write "</table>"
Response.Write "购货总金额:" & session("sum")
end if
case ""
response.write "本页内修改"
num=clng(session("num"))
for i=0 to num
session("num_" & cstr(i))=(request.form("txtNum" & cstr(i)))
session("sum_" & cstr(i))=session("num_" & cstr(i))*session("price_"
& cstr(i))
next
response.write "<table border=1><tr><td>书号</td><td>书名</td><td>单价
</td><td>数量</td><td>小计</td></tr>"
session("sum")=0
for i=0 to num
session("sum")=session("sum")+session("sum_" & cstr(i))
response.write "<tr><td>" & session("ID_" & cstr(i)) & "</td><td>" &
session("BookName_" & cstr(i)) & "</td><td>" & session("price_" & cstr
(i)) & "</td><td><input type=text size=5 name=txtNum" & cstr(i) & "
value=" & session("num_" & cstr(i)) & "><td>" & session("sum_" & cstr
(i)) & "</td></td></tr>"
next
response.write "</table>"
Response.Write "购货总金额:" & session("sum")
case else
response.write "增加"
if session("num")="" then
session("num")=0
else
session("num")=clng(session("num"))+1
end if
num=clng(session("num"))
name=(request.querystring("Name"))
session("ID_" & cstr(num))=id(name)
session("Bookname_" & cstr(num))=bookname(name)
session("price_" & cstr(num))=price(name)
session("sum_" & cstr(num))=price(name)
session("num_" & cstr(num))=1
response.write "<table border=1><tr><td>书号</td><td>书名</td><td>单价
</td><td>数量</td><td>小计</td></tr>"
session("sum")=0
for i=0 to num
session("sum")=session("sum")+session("sum_" & cstr(i))
response.write "<tr><td>" & session("ID_" & cstr(i)) & "</td><td>" &
session("BookName_" & cstr(i)) & "</td><td>" & session("price_" & cstr
(i)) & "</td><td><input type=text size=5 name=txtNum" & cstr(i) & "
value=" & session("num_" & cstr(i)) & "><td>" & session("sum_" & cstr
(i)) & "</td></td></tr>"
next
response.write "</table>"
Response.Write "购货总金额:" & session("sum")
end select
%>
<p><input type=submit value="修改购物蓝"><input type=button value="返
回" onclick=window.location.href="index.asp?flag=<% =session("flag") %
>"></p>
</form>
</BODY>
</HTML>
其运行界面如下:
在下面有总金额的显示,并且购买的数量可以更改。
In.asp
<%@ Language=VBScript %>
<%
if Request.Form("txtUser")="" or Request.Form("txtPWD")="" then
Response.Write "用户名或密码为空,请重新输入,如果您没有注册,请选择注
册!"
else
set rs=server.CreateObject("ADODB.recordset")
rs.Open "select * from info where ID='" & Request.Form("txtUser")
& "'" ,"DSN=sqlsales;UID=sa",3,3
if rs.RecordCount =0 then
Response.Write "此会员号不存在!"
else
if trim(rs.Fields("PWD"))<>trim(Request.Form("txtPWD")) then
Response.Write "密码不正确!"
Response.Write rs.Fields("ID") & "
"
Response.Write rs.Fields("PWD") & "
"
Response.Write Request.Form("txtPWD")
else
session("UserID")=rs.Fields("ID")
session("UserName")=rs.Fields("Name")
Response.Redirect "index.asp"
'Response.Write rs.Fields("ID") & "
"
'Response.Write rs.Fields("PWD") & "
"
'Response.Write "欢迎光临!"
end if
end if
rs.Close
end if
%>
<HTML>
<HEAD>
<META NAME="GENERATOR" C>
</HEAD>
<BODY>
</BODY>
</HTML>
此段程序用于检测登录的合法性。
Registry.asp
<%@ Language=VBScript %>
<%
if Request.Form("txtID")="" and Request.Form("txtPWD")="" and
Request.Form("txtPWD1")="" and _
Request.Form("txtname")="" and Request.Form("txtSFZ")="" and
Request.Form("txtemail")="" and _
Request.Form("txtAdd")="" and Request.Form("txtPost")="" and
Request.Form("txtPhone")="" then
Response.Write "请认真填写以下内容:"
else
if Request.Form("txtID")="" then
Response.Write "用户名为空,请重新填写!" & "
"
elseif Request.Form("txtPWD")="" then
Response.Write "密码为空,请重新填写!" & "
"
elseif Request.Form("txtPWD1")="" then
Response.Write "密码校验为空,请重新填写!" & "
"
elseif Request.Form("txtName")="" then
Response.Write "姓名为空,请重新填写!" & "
"
elseif Request.Form("txtAdd")="" then
Response.Write "联系地址为空,请重新填写!" & "
"
elseif Request.Form("txtPost")="" then
Response.Write "邮政编码为空,请重新填写!" & "
"
elseif trim(Request.Form("txtPWD"))<>trim(Request.Form("txtPWD1"))
then
Response.Write "密码位与校验位不一致,请重新输入!" & "
"
else
set rs=server.CreateObject("ADODB.Recordset")
rs.Open "select * from info where ID='" & trim(Request.Form("txtID"))
& "'" ,"DSN=sqlsales;UID=sa;",3,3
'rs.Open "select * from info where ID=" & chr(34) & "yuaiwu" & chr
(34) ,"DSN=sqlsales;UID=sa;",3,3
if rs.RecordCount <>0 then
Response.Write "此用户已经登记,请选择别的用户名:"
else
dim fld(7)
dim value(7)
fld(0)="ID"
fld(1)="name"
fld(2)="PWD"
fld(3)="Email"
fld(4)="address"
fld(5)="phone"
fld(6)="post"
fld(7)="sfz"
value(0)=Request.Form("txtID")
value(1)=Request.Form("txtname")
value(2)=Request.Form("txtpwd")
value(3)=Request.Form("txtEmail")
value(4)=Request.Form("txtadd")
value(5)=Request.Form("txtphone")
value(6)=Request.Form("txtPost")
value(7)=Request.Form("txtSFZ")
rs.AddNew fld,value
rs.Update
end if
rs.Close
end if
end if
%>
<HTML>
<HEAD>
<META NAME="GENERATOR" C>
</HEAD>
<BODY bgColor=oldlace>
<p align=center><font size=6 color=midnightblue>会 员 申 请</font></p>
<P>
<form action="registry.asp" method="post">
<TABLE border=1 cellPadding=0 cellSpacing=0 width="100%">
<TR>
<TD bgColor=bisque>用户名</TD>
<TD><INPUT id=txtID name=txtID
style="HEIGHT: 22px; WIDTH: 275px">**</TD></TR>
<TR>
<TD bgColor=bisque>密码</TD>
<TD><INPUT id=password1 name=txtPWD
type=password
style="HEIGHT: 22px; WIDTH: 274px">**</TD></TR>
<TR>
<TD bgColor=bisque>确认</TD>
<TD><INPUT id=password2 name=txtPWD1
type=password
style="HEIGHT: 22px; WIDTH: 275px">**</TD></TR>
<TR>
<TD bgColor=bisque>姓名</TD>
<TD><INPUT id=text2 name=txtname
style="HEIGHT: 22px; WIDTH: 274px">**</TD></TR>
<TR>
<TD bgColor=bisque>身份证号码</TD>
<TD><INPUT id=text3 name=txtSFZ
style="HEIGHT: 22px; WIDTH: 274px"></TD></TR>
<TR>
<TD bgColor=bisque>Email</TD>
<TD><INPUT id=text4 name=txtEmail
style="HEIGHT: 22px; WIDTH: 273px"></TD></TR>
<TR>
<TD bgColor=bisque>联系地址:</TD>
<TD><INPUT id=text5 name=txtAdd
style="HEIGHT: 22px; WIDTH: 272px">**</TD></TR>
<TR>
<TD bgColor=bisque>邮政编码:</TD>
<TD><INPUT id=text6
name=txtPost
style="HEIGHT: 22px; WIDTH: 270px">**</TD></TR>
<TR>
<TD bgColor=bisque>联系电话:</TD>
<TD><INPUT id=text5 name=txtPhone
style="HEIGHT: 22px; WIDTH: 270px"></TD></TR>
</TABLE></P>
<P align=center><INPUT id=submit1 name=cmdSubmit type=submit value=确
认><INPUT id=reset1 name=cmdCancel type=reset value=取消></P></FORM>
<P><FONT color=orangered>请注意:</FONT></P>
<UL>
<LI><FONT color=orangered>带有 ** 号的栏目是必须填写的,其他的栏目可以不
填</FONT>
<LI><FONT color=orangered>以上信息应如实填写,以便我们能与您取得及时的联
系</FONT></LI></UL>
<P> </P>
</BODY></HTML>
这个登录界面和大多数网上的登录新用户类似。
小结:
几个程序都做了一个简要地说明,当然,程序做地非常简单,还有很多功能没有
或有待完美,但它却示范了一个简单的范例,在此仅供大家参考。如果大家有兴趣,
可以把上面的程序试一下,祝大家成功![/size]