现在很多人用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 %> --------------------------------------------------- (出处:热点网络)
|