荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: jp (只写三行的日记), 信区: Homepage
标  题: 另一种显示文章系统的思路(zz)
发信站: 荔园晨风BBS站 (Thu Apr 18 12:26:47 2002), 转信

现在很多人用Access数据库实现文章显示系统,由于Access数据库本身的缺陷,用一
个字段存放文章内容,我以为对于访问量大,文章数目多的网站,很容易产生错误,此
举是极不明智的,经过实际比较,笔者得出另一种实现文章系统的方法,那就是采用
Access+文本文件 的模式.其中Access数据库用来存每篇文章的一般信息,而文本文
件用来存放具体文章内容.具体实现方法实现如下:

先用Access建立一个数据库wzozg,里面只有一个表ozg,存放文章一般信息,字段如
下:
字段名    类型        含义
wid      自动编号     文章id号
wsubject 文本         文章标题
wname    文本         存放文章内容的文本文件名
wcount   数字         文章访问次数
wdate    时间         文章加入时间
wauth    文本         文章作者
wsource  文本         文章来源

'其中wid与wname唯一对应,如wid=10,则wname="wz-10.asp",若wid=n,则
wname="wz-n.asp"

以下是文章添加,删除,以及实现文章标题列表显示,每篇文章具体内容显示的关键
代码段:

1.文章添加
  1)wzadd.html
  <form method="post" action="add.asp">
  <p>文章标题:<input name="isubject" size="45" maxlength="30"></p>
  <p>文章作者:<input name="iauth" size="45" maxlength="30"></p>
  <p>文章来源:<input name="isource" size="45" maxlength="30"></p>
  <p>文章内容:</p>
  <textarea cols="80" name="icontent"
rows="16"wrap="VIRTUAL"></textarea></p>
<p><input type="submit" value="完  成"  name="submit">
    <input type="reset" value="重  写" name="reset"></p>
</form>

  2)add.asp
   <%sj=now() '返回系统时间
    isubject= Request.Form("isubject")
    icontent = Request.Form("icontent")
    iauth= Request.Form("iauth")
    isource = Request.Form("isource")
    dim xwzlr()
   n=0
   for i = 1 to len(icontent)
   zh =mid(icontent,i,1)
   xzh=server.htmlencode(zh) '使字符不支持html语法
   redim preserve xwzlr(n)
   xwzlr(n)=lrtemp           '使add.html中表单form中textarea一行一行分别
                              存在数组中
   if asc(xzh)=10 then
   n=n+1
   lrtemp=""
   redim preserve xwzlr(n)
   end if
   lrtemp = lrtemp + zh
   next
                            '连接数据库
   set dbconn=server.createobject("adodb.connection")
   conpath="DBQ=" &server.mappath("wzozg.mdb")
   dbconn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & conpath
                            '新增文章
   iozg="wz-"
   sql="INSERT INTO ozg(wsubject,wname,wcount,wdate,wauth,wsource)
             Values
('"&isubject&"','"&iozg&"',0,'"&sj&"','"&iauth&"','"&isource&"')"
   dbconn.Execute(sql)

   sql="update ozg set wname='wz-'&cstr(wid)&'.asp' " '若文章id=n (n=0,1,2,...),
                                                    则使 存放文章内容的文本文件
                                                    名为 "wz-n.asp",即id号与文
                                                    本文件名唯一对应
   dbconn.Execute(sql)
   sql="select wcontent from ozg "
   set rs=server.createobject("adodb.recordset")
   rs.open sql,dbconn,3,1
   rs.movelast
   iozg=rs("wcontent") '获取文本文件名"wz-n.asp"
   rs.close
   dbconn.Close
   thisfile = server.mappath(iozg)
  Set fs=Server.CreateObject("Scripting.FileSystemObject")
  Set outfile = fs.CreateTextFile(thisfile) '创立文本文件"wz-n.asp"
(n=0,1,2,...)
  for i=0 to n step 1
  outfile.WriteLine xwzlr(i) '把数组中的文章内容逐行写入文本文件"wz-n.
asp"中
  next
  outfile.close
  set fs=nothing
%>

2.dele.asp
<% wname=trim(Request.QueryString("name")) 'name为要删除的文章对应的文本
文件 名"wz-n.asp" (n=0,1,2,...),同
时也是从数据库中的wname字段得来
  set dbconn=server.createobject("adodb.connection")
  conpath="DBQ=" &server.mappath("wzozg.mdb")
  dbconn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & conpath
  sql="delete from  ozg  where wname='"&wname&"'"  '删除数据库中文章信息

  dbconn.execute(sql)
  dbconn.close
  thisfile = server.mappath(wname)
  Set fs=Server.CreateObject("Scripting.FileSystemObject")
    if fs.FileExists(thisfile) then
      fs.DeleteFile thisfile,True       ' 删除对应的文本文件"wz-n.asp"
      end if
    Set fs=nothing
   %>
3.showwz.asp
<% set dbconn=server.createobject("adodb.connection")
  conpath="DBQ=" &server.mappath("../../db/wzozg.mdb")
  dbconn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & conpath
  set rs=server.createobject("adodb.recordset")
  rs.open sql,dbconn,3,1
  number=rs.recordcount%>  '把所有文章一般信息读入记录集rs中
%>
4.wz.asp
<%wname=Request.QueryString("wname") '从showwz.asp得来的要具体显示内容的
那篇文章的对应的文本文件名
set dbconn=server.createobject("adodb.connection")
conpath="DBQ=" &server.mappath("wzozg.mdb")
dbconn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & conpath
sql="update ozg set wcount=wcount+1 where wname="&wname&""
dbconn.Execute(sql)
sql="select wauth,wname,wcontent,wsource,wauth from ozg where
wid="&id&""
set rs=dbconn.Execute(sql)  '把要显示的那篇文章一般信息读入记录集中
filename = server.mappath(wname)
rs.close
dbconn.Close
Set fs=CreateObject("Scripting.FileSystemObject")
Set thisfile = fs.OpenTextFile(filename,1,False)
do while not thisfile.AtEndOfStream
thisline = thisfile.readline
if thisline<>"" then
thisline=server.HTMLENCODE(thisline)
response.write"<p>'"&thisline&"'</p>"
end if
loop
thisfile.close
set fs=nothing
%>


--
人生本应Happy,何必苦苦Study,找个漂亮Lady,生个胖胖Baby。

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.32.248]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店