留言簿框架图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Dreamweaver2004序列号:WPD700-52206-61494-40475
留言簿
一、网站规划图
管理所有的留言
二、数据库设计
一个数据库,库命名用学号或拼音缩写,包括三个数据表。
表结构如下:
1、用户表:
输入第一条信息是自己的信息
2、管理员表:
管理用户名为个人的姓名拼音、密码随便
3、留言簿
4、建立用户表与留言簿之间的关系,对应一对多的关系
三、网页与数据库连接
数据库存取组件(database access component):采用ADO技术存取符合ODBC(开放式数据库连接)的标准的数据库信息。
连接方法有三种:
1)基于ODBC数据源的方式:
首先定义数据源,方法如下:(书中P151)管理工具—数据源(ODBC),系统DSN,添加。
数据源名称为自己姓名拼音
建立与数据库连接,单独保存在一个网页中,网页名称为自己的学号或姓名的缩写
代码如下:
1)基于ODBC数据源的方式:
dim conn
set conn=server.CreateObject("adodb.connection")
conn.open “dsn=数据源名称”
2)基于ODBC,无数据源的方式:(远程服务器是无法建立数据源的)dim conn
set conn=server.CreateObject("adodb.connection")
conn.open “driver={Microsoft access driver
(*.mdb)};dbq=”&server.mappath(“ly.mdb”)
3)基于ole db的连接方式(ole db数据库驱动程序,推荐使用第三种方法)
dim conn
set conn=server.CreateObject("adodb.connection")
conn.open “provider=Microsoft.jet.oledb.4.0;data
source=”&server.mappath(“ly.mdb”)
四、功能模块的设计
以下所有显示内容的网页中均定义一个常量,常量名为“某某的留言簿”,将此常量添加到标题和文件头的描述中。
1、注册会员的功能模块的程序设计
包括二个页面,一个是注册表单页面,一个是处理表单页面。
涉及到的知识点:request、response、session对象等。
(1)Request.form(“参数名”) 读取表单的信息
(2)response.write …在客户端输出信息
(3)response.end 程序结束
(4)response.redirect(“参数名”)跳转到某个网页
(5)session(“参数名”)=变量名
记录某个特定用户的信息(用户的信息存放在服务器端)
读取session对象的信息
变量名= session(“参数名”)
session对象存储用户的信息默认为20分钟。
程序代码提示:
1)读取表单信息:
Request.form(“表单元素名称”)
比如:读取用户名
Dim username
Username=trim(request.form(“username”))
注意第一个username为变量,第二个是表单元素的名称。
不要混淆。
2)判断是否为空
条件语句
If username=”” or email=”” then
为空:response.write "你输入的信息不全!请返回<a href='reg.asp'>注册界面</a>"
不为空:执行以下程序
3)建议记录集
Dim sql
以下是查询语句
Sql=”select * from users where username=‟”&username&”‟”
建立记录集
Set rs=conn.execute(sql)
4)判断是否有重复的用户名,即在记录集中是否有记录
如果有:
If not rs.eof and not rs.bof then
Response.write “用户名重复,请<a href=‟reg.asp‟>返回</a>”Response.end‘程序停止运行
若没有重复,即将信息插入到数据库中。
Sql="insert into users(username,mima,email,submit_date) Values('" & username & "','" & password & "','"& email & "',#"&date()&"#)"
conn.execute(sql)
在此提醒,如果变量为字符串类型需在添加引号,如是日期/时间类型需添加#号。
5) 建立session对象,并跳转到插入留言页面。
Session(“username”)=username
Response.redirect(“ly.asp”)
2、添加留言功能模块的程序设计:共有二个页面,表单页面
界面如图所示:
处理留言页面:
3、登陆功能模块的程序设计
有二个页面构成,一个是表单登陆页面,一个处理登陆信息页面。
表单登陆页面:
处理登陆信息页面:
代码提示:
建立记录集
Dim sql,rs
Sql=”select * from users where username=‟”&username&”‟and mima=‟”&password&”‟”
Set rs=conn.execute(sql)
是否有符合条件的记录
If not rs.eof and not rs.bof then
建立session对象,跳转到管理留言页面。
4、管理留言页面(注意:这里是用户管理自己的留言,不能修改或删除其它人的留言)
共包括三个页面:管理留言页面、删除页面、更新页面。
管理留言页面:
代码提示:
‘读取session信息
username=session("username")
‘查询符合session信息的记录
dim rs,sql
sql="select * from guestbook where username='"&username&"'" ‘建立记录集
代码略
使用循环语句do while…loop实现
‘循环地将符合要求的记录输出
<%do while not rs.bof and not rs.eof%>
‘序号
<%=rs("id")%>
‘标题
<%=rs("subject")%>
<%
…指针向下移
rs.movenext
…循环
loop
%>
‘添加删除链接:
<a href="delete.asp?id=<%=rs("id")%>">删除</a>
‘添加修改链接:
<a href="update.asp?id=<%=rs("id")%>">修改</a>
删除留言页面:
代码提示:
‘读取上个网页传递过来的链接信息
id=request.QueryString("id")
‘删除符合要求的记录
sql="delete from guestbook where id="&id
conn.execute(sql)
更新留言页面:(包括两个页面,一个是表单页面,第二个处理表单页面)
代码提示:
表单元素赋初值如标题的赋值
<input name="subject" type="text" id="subject"
value="<%=rs("subject")%>" size="80">
表单处理页面:
第二个页面:处理表单页面
这里有一个关键,就是怎么把前面那个页面的ID信息传递过来。
采用如下措施:在表单页面添加一个隐藏域,名称为ID,值为:rs(“id”) 在本页面读取该表单元素的值就可以了。
将表单信息更新记录中的原有信息
sql="update guestbook set
subject='"&subject&"',content='"&content&"' where id="&id conn.execute(sql)
5、后台管理功能模块的程序设计
共包括二部分,第一部分是管理员登陆,第二部分是管理全部的留言第一部分管理员登陆:包括二个页面,登陆表单页面和处理登陆信息页面。
1)登陆表单页面
2)处理登陆信息页面
代码提示:
sql="select * from gly where name_gly='"&name_gly&"' and password_gly='"&password_gly&"'"
set rs=conn.execute(sql)
第二部分是管理全部的留言:共有三个页面,管理留言页面,删除留言页面,更新留言页面。
1
删除留言页面,更新留言页面。
与前面相同,但要保存为不同的网页。
6、网站的首页页浏览留言功能模块的设计(index.asp)
loop
代码提示:
Rs.bof:记录集中第一条记录的开始
Rs.eof:记录集中最后一条记录的下方
Rs.movenext:记录指针向下移动
Rs(“字段名”):显示记录集中的信息例如:Response.write rs(“username”)
7、添加留言的查询功能
在首页添加一个查询表单,如图所示。
处理查询信息页面
代码提示:
if s_type="username" then
sql="select * from guestbook where username LIKE '%"&search&"%'"
elseif……
为网页添加总的访问人数(即计数器)
采用application对象来实现,application对象存储所有访问本网站的用户信息。
Application(“counter”)=application(“counter”)+1
如果有二个以上的用户同时访问本网站时,那么这个计数器可能存在漏计的现象,那么就要用到application对象的两个方法lock、unlock。
当一个用户修改计数值时,要锁定,修改完毕后,再解锁。
Application.lock
Application(“counter”)=application(“counter”)+1 Application.unlock
根据上述讲解,请在留言簿的首页添加计数器。
添加本客户端对网站的访问次数和来访者欢迎信息
本实例采用了一个表单首先注册用户,然后在第二个页面显示cookies信息。
五、网页的分页功能
使用到的知识点:
1)与前面网页相比,首先要明确建立recordset对象,然后才能用到recordset对象的相应的属性和方法。
这里采用先建立connection 对象,前面已经讲过,然后再明确建立recordset对象
Dim rs
Set rs=server.createobject(“adodb.recordset”)
Dim sql
Sql=”select * from guestbook order by id desc”
Rs.open sql,conn,1
解释一下最后一条语句:
表示打开记录集
格式为:
Rs.open
[source],[activeconnection],[cursortype],[locktype],[optio n]
如果如果中间某个参数不写,要用逗号留出位置留言内容分页,指针类型应为1或3。
2)recordset对象的属性
Rs.bof 第一条记录的上方
Rs.eof 最后一条记录的下方
Rs.pagesize 一页多少条记录
Rs.pagecount 总共多少页
Rs.absolutepage当前是第几页
读取附在URL后的信息
Numpage=Request.querystring(“参数”)
显示分页链接,第一页、上一页、下一页、最后页
代码提示:
1)建立记录集:
dim sql,rs
sql="select * from guestbook order by id"
set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn,1
指针为键盘指针,表示可向前或向后。
2)进行分页:
'如果记录集不为空,就执行分页显示
if not rs.bof and not rs.eof then
'下面要判断当前显示第几页,如果第一次打开,为第1页,否则由传回参数决定
dim num
if request.QueryString("numpage")="" then
num=1
else
num=cint(request.QueryString("numpage")) …从链接读取的信息转换为整型。
end if
'分页显示,指向要显示的页面,然后逐条显示当前页的全部记录rs.pagesize=3 ‘每页显示多少条记录
rs.absolutepage=num …当前页码为num
3)页码的显示
上一页的链接:
if num>1 then
response.write "<a href='index1.asp?numpage="&(num-1)&"'>上一页</a> "
else
response.write "上一页 "
end if
六、请添加网页背景和网页图像美化网页,并用CSS定制网页样式。