更新每天的新闻内容,对站长们来说是一件非常头痛的事。收集了大量的新闻资料后,还必须制作大量的网页。每天大大小小的国际新闻、国内新闻、IT新闻,可真够你累的。最致命的一点,这些组织得松散的新闻是管理不了的。不能查询,不能在线动态删改。新闻讲求时效性,当你作好网页然后上传到服务器上的时侯,恐怕别人已先你一步把新闻报导出来了,当真是吃力不讨好。针对我们现在的上网环境,实现在线发布新闻、动态生成新闻网页、为新闻添加搜索和查找等功能是必不可少的。
定制新闻发布系统的方法大致上有两种:一是把录入的新闻内容自动由程序直接生成HTML文件,比如按日期和新闻ID号来做HTML文件的名称,我们常常可以从一些大新闻站点看到这样的处理。另一种是直接把新闻数据保存到数据库里,当用户阅读新闻时,从数据库中调出数据,动态生成页面。
两种处理有何差别?第一种的显示速度和对服务器的负荷来说是最轻的。对于大流量的站点,速度就是生命,网站太慢了,有谁去浏览呢?后一种方法在处理上比较简便,维护也方便。因为只有应用数据库才能方便地处理查询,从而把读者引导至相应的新闻页面。综合上面的方法,可以说是各有千秋,现在我们主要介绍数据库的使用方法。
一、处理流程
从处理流程上来说,主要是提供一个管理新闻的页面(可以添加和删除每天的新闻,包括新闻图片、标题等),然后在调用新闻的显示页面里处理。考虑到新闻需要插到不同风格的网页中,所以不能使用一个固定格式的页面来显示新闻提要,应当把它们做成一个主页的可插入部分。就如下面的script语句
<script language="JavaScript" src="http//xxx.com.cn/special/linux/lnews/autoup.asp">
</script>
最后还有一个阅读新闻时的详细内容页面。总的来说,也就是一个可以完成在线新闻发布的程序主要由四大部分程序构成:addnew.asp(用于把新闻数据保存到数据库中)、delete.asp(用于处理删除新闻) 、autoup.asp(用于处理新闻的标题显示,也就是插入主页的部分)、read.asp(动态生成新闻的详细内容)。
协助处理的部分有set_disp.asp(用于处理新闻在主页的显示数目等等)。
当然,必不可少的就是一个新闻数据库了。
二、添加和管理每天的新闻内容
当进行了新闻提交后,则由一个名为addnew.asp的ASP程序来对新闻内容进行处理,以便分类和保存。为了显示清晰,我们每提交一条新闻,下面的那个新闻内容库就重新读入,以便可以查看新闻是否能成功加入都数据库中,也可以方便地删除新闻内容。
现在看看addnew.asp是如何完成程序处理的。
源代码下载地址:http://www.popunet.com/2001/zip/39-1.zip
程序中首先判断了所提交的新闻是否符合条件。比如新闻标题不能为空,而换行符也得转换为HTML语句的“br”,否则不能正常地显示出新闻的格式,而这里采用了一个包含文件data.inc,它的用处主要是用于连接不同的数据库,所以ASP程序都通过包含这个文件来指定数据源,那么当更改使用别的数据库时,只需要更改这个文件,就能方便地实现不同数据库间的切换,是不是十分方便呢?
以下的data.inc文件的内容。
<%
Set conn = Server.CreateObject("ADODB.Connection")
DBPath = Server.MapPath("/")&"/news/data/data.mdb"
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
%>
还有需要注意一下的是,WINNT和Windows 98的日期时间函数所返回的值是不同的,Win98是以24小时来计算的,而NT Server则使用12小时,另外加上“上午”和“下午”来表示,因此需要作出少许的更改处理。
程序处理完毕后,重新导向delete.asp文件,用以刷新新闻数据库内的显示,那么每提交一条新闻资料,我们马上可以看见执行的结果是否成功了。
以下是delete.asp的文件内容。
源代码下载地址:http://www.popunet.com/2001/zip/39-1.zip
delete.asp也是一个构成webadmin.htm的管理页面的ASP文件,它负责新闻数据库的标题显示,以便让你知道现在库中有些什么新闻。同时可以通过它来删除新闻记录。另外一个附加的ASP程序set_diap.asp用于控制每一类新闻在主页上显示的数目,它主要使用application对象来设定。
<% language="vbscript" %>
<%
response.buffer=true
Response.Expires=0
application("disp_1")=request.form("disp_1")
application("disp_2")=request.form("disp_2")
application("disp_3")=request.form("disp_3")
application("disp_4")=request.form("disp_4")
application("disp_5")=request.form("disp_5")
response.redirect "delete.asp"
%>
完成了上面的程序,我们的新闻发布系统就可以使用在线添加、删除和设置显示等功能了。需要加上搜寻功能,也可以在这个基础上加上。下一节我们来分析如何令新闻代码嵌入不同的网页,实现真正的在线新闻功能。
三、将新闻代码插入页面
最好的新闻发布当然是为网站本身定做的,那样才能与主页风格一致,但如此一来,新闻发布系统又缺乏了通用性,不能移植到别的网站上使用。有得必有失,关键是找一个平衡点。综合来考虑,最好的做法是与页面分离,这样就可以不影响网页的外观,而也能达到很好的效果。在使用新闻的网页上我们可以通过放置一条这样的script语句来调用新闻代码:
<script language="JavaScript"
src="http//xxx.com.cn/special/linux/lnews/autoup.asp">
现在请大家看看autoup.asp的代码。
源代码下载地址:http://www.popunet.com/2001/zip/39-1.zip
通过定制这段代码,就能制作出符合要求的网页显示格式。
OK,添加、删除、显示都讲解完了,最后一项,就是把新闻的详细内容显示出来。当用户点击新闻标题,就打开disp.asp文件,同时使用GET这种方式来把参数传递过去。
disp.asp的文件内容:
源代码下载地址:http://www.popunet.com/2001/zip/39-1.zip
至此,新闻发布系统已能投入使用,试试看,是不是很方便,很容易就能增添每天的新闻内容了。我们还可以为新闻发布系统加入标题/全文检索功能,让它更加完美。