计算机之家 » 『 综合资源 』 » 网上“店铺”DIY


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]

2007-11-20 11:30 lyhummer
说得蛮好,不过字体太大看不舒服

2007-11-20 12:30 beard
有点创意,代码收藏了

页: [1]
查看完整版本: 网上“店铺”DIY


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.