看完了前面的2章,相信你已经能够开发这样一个静态页新闻系统了。但是,对于一个完整意义上的新闻系统来说,这些是远远不够的。还有很多功能,比如:在新闻内容中插入图片、实现新闻分类、可以多选的模板等,当然你可以为你的新闻系统加上很多的功能,但有一个原则:让用户方便的管理和操作。任何的功能都是围绕用户的需要的使用习惯来的,切记切记!
也许你会问,我们为什么要做这些新闻分类、模板多选等烦琐的事情呢?小田在刚开始做WEB程序开发的时候,和你的想法一样,而且对自己做的很容易满足!但是客户的要求往往是不根据你的想法而定的,他们往往在程序完成后或是开发的后期,提出一些另你很头疼的要求,使得你要更改你的程序,动动大手术。所以要在前期就了解客户的要求和使用习惯,并能想到他们可能提出的变化。比如:今天你的新闻系统做好了,客户突然提出要多一个新闻栏目,而且样式要不同的!!这时候你是瞪大眼睛看着他呢?还是找个地洞钻?还是最后灰溜溜的回去改你的程序!!!
好了说了很多的废话(不过这篇可能所谓经验只谈的废话比较多,大家多包涵哦),我们开始做上面说的几个功能。先来看新闻分类。
1、首先是数据库的设计,我们要在原来的数据库中添加一个表:T_Type,如图:
在里面先输入几个类别,如图:
打开原来的表T_News,在里面添加一个新的字段N_Type_ID(用来对应新闻分类的外关键字),如图:
如果这时候,你的新闻系统已经有了内容,还要在原来的数据内容上写上这分类的ID,为了方便起见,还是删除原来的新闻记录吧!
2、修改新闻添加页面add.asp页。打开add.asp页,我们在新闻内容的上面插入一个表格行,左列写“新闻类型”,右列插入一个List表单项,name="News_Type",如图:
/Article/UploadFiles/200501/20050121203319627.gif
然后,我们再添加一个新闻分类的记录集,如图:
接下来我们要把记录集放到List表单中去,选中List表单,打开Server Behaviors-->Dynamic Elements-->Dynameic List/Menu,如图:
单击OK,好了,新闻类型的记录集已经放在List里了。现在保存add.asp,ok!
3、修改保存新闻页面save.asp页。这个页面我们只要改2句代码就好了,由于这里的添加新闻内容到数据库的代码是从add.asp页copy过去的,大家做的时候,没有特殊情况的话,把代码在add.asp页调整好,再整个copy到save.asp页就好了。现在我们得改改save.asp页面。打开save.asp页的代码窗口,找到如下代码:
MM_fieldsStr = "N_Title|value|N_Content|value|N_FileName|value|N_FilePath|value|N_Date|value"
MM_columnsStr = "N_Title|',none,''|N_Content|',none,''|N_FileName|',none,''|N_FilePath|',none,''|N_Date|',none,NULL"
替换为:
MM_fieldsStr = "N_Title|value|News_Type|value|N_Content|value|N_FileName|value|N_FilePath|value|N_Date|value"
MM_columnsStr = "N_Title|',none,''|N_Type_ID|none,none,NULL|N_Content|',none,''|N_FileName|',none,''|N_FilePath|',none,''|N_Date|',none,NULL"
我们可以里面的变化,多加了|News_Type|value|(这表示从表单名为News_Type的value值传递过来的)和|N_Type_ID|none,none,NULL(这表示添加到数据字段N_Type_ID),保存save.asp页面。
ps:UD的插入数据是使用insert into来做的,你看,取Request.Form的值是把表单项名称等组个数组,然后用函数Split()分开,再取Request的值,这样做是为了软件使用的方便,大家做添加数据可别这么做哦!要晕死的,呵:)
4、修改新闻浏览页browse.asp页。这个页我们学着将新闻记录和新闻类型关联起来,这里应用了SQL语句。打开browse.asp页,重新打开记录集rsBrowse,点击Advanced...(高级),修改一下原来的SQL语句,如图:
/Article/UploadFiles/200501/20050121203324753.gif
看,这里的SQL语句:INNER JOIN ....ON....。把两个表关联起来了,点击OK。我们看到原来的Recordset已经有了变化了,如图:
然后我们在原来的新闻标题后面加上新闻的类型,如图:
浏览一下,是不是有了新闻类型了!!(分类的修改等等这里就不一一复述了,大家自己动动手吧)
ps:这里我们看到添加新闻的时候,插入T_News表的新闻类型是T_Type的ID值。也许你会问,为什么不直接插入T_Type的T_TypeName的值呢?这样的话调用的时候也不用2个表关联了!但是这么做有一个问题,如果你突然要修改新闻分类的名称,到时候是不是要修改所有新闻记录里的新闻分类名称呢!那就太……(电脑前的小田已经晕过去了)
好了,简单的新闻分类也有了,下面我们看看模板的多选。这个部分比较简单,有些和上面的新闻分类相似。
1、仍然是数据的修改。打开原来的表T_Example,我们添加个新的字段E_Type,如图:
在数据窗口填个类别进去,如图:
2、修改新闻添加页add.asp。和上面的添加一个新闻分类的List一样,再添加个模板类别的List(name="Example_Type"),把记录集放到这个List中去(value=ID)。这里就不详细说了。
3、保存新闻页save.asp页。这个页主要是要根据add.asp里的List(name="Example_Type")传递过来的值取出相应的模板记录。如图:
保存页面,现在模板的多选也有了,我们可以多做几个模板玩玩。
很多网友问,如何在新闻里插入图片、超链接等等。比较常规的方法就是使用UBB代码,就像我们在论坛的文章里插入图片等一样,如:,这里需要你编写一段UBB代码,小田就不写了,给大家个写好的,点击这里下载。
还记得我们前面save.asp页面中为了让新闻系统能够正常显示段落和空格的那段函数吗,现在打开它,并找到它:
<SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT>
function DoWhiteSpace(str)
DoWhiteSpace = Replace((Replace(str, vbCrlf, "<br>")), chr(32)&chr(32), " ")
End Function
</SCRIPT>
我们把下载下来的页面ubbcode.asp复制到新闻系统目录下,然后用一向语句替换上面的函数:
<!--#include file="ubbcode.asp" -->
然后在下面找到原来调用的函数语句:
N_Content=DoWhiteSpace(Request.Form("N_Content"))
替换为:
N_Content=UBBCODE(Request.Form("N_Content"))
同样,新闻更新页updata_save.asp也要同样的更改,ok,现在试试添加个新闻,内容写上:
htt://www.guitarsky.com,成功后,浏览看看,是不是有了超链接了!!
OK,现在我们的ASP2Htm的新闻系统已经慢慢完善起来了,当然,你应该可以想到更多的功能来完善它,小田只是抛砖引玉,让大家能够更好的利用UD开发ASP系统。小田是由衷的喜爱UD这个软件,但是如果你过分依赖它,就会觉得它的功能越来越不能适应你的要求,小田要告诉大家的是,要多学习ASP(现在大家都要开始学ASP.NET了吧)的知识!软件是死的,你可不是哦!!