论坛帖子加锁、置顶、加精华的实现

      ASP与ASP.NET 2004-12-25 11:2
俗话说:当官的一句话,当兵的跑断腿。但在论坛里,管理员或者版主这些当官的却没有这么幸运,他们都是论坛里最为忙碌的人,网友到了论坛里,随意发几个字,转身便没了人影,那个版若是水版那也罢了,其他版面可就为难,对水贴删除也不是(怕网友生气),不删除也不是(影响版面啊)。我曾开过一个武侠论坛,有一个常来的网友有一天忽然发了十几篇台湾人评论大陆的文章,有些话语实在是不方便在论坛里出现的,我只好把那些贴子给删除了,这样得罪了那位朋友,以后他一次也没有再来过。

除此之外,管理员还得对一些暂时不可回复或不需回复的贴子进行锁定处理,对一些重要的贴子进行置顶处理,给好文章加上精华,所以论坛里的官们只有一个字:忙啊!管理员忙,编写程序的人更忙,发文章便发了,为什么还要加锁、置顶、加精这么多烦人的事呢?没有这些事,程序员不是要省心得多?呵呵,省心倒是省心,但若是没有那么多烦人的事,谁都能编程序了,还要咱们这些写程序的人干什么?所以啊,别人的论坛里有了什么功能,你还是老老实实想想怎么实现那些功能吧,那么,怎么实现呢?往下看吧,让本堂主来教会你吧。当然,本堂主的法子肯定不是最好的法子,只是给你提供一种思路而已。

●这里假设你的论坛里有两张表,或者说,我们要用到的,主要是两张表:一张表用来存储关于版面的信息,一张表用来存储文章信息,两张表的结构如下:

DB_Forum表结构

字段
数据类型
说明

Fid
自动编号
版面ID

Fname
文本
版面名称

Fmaster
文本
版主

Intro
文本
版面介绍


DB_Article表结构

字段
数据类型
说明

Aid
自动编号
文章

Fid
数字
版面ID

Title
文本
文章标题

Author
文本
作者

Content
备注
文章内容

Utime
时间/日期
发布时间

Rid
数字
回复贴标志

Ridcount
数字
回复数

Click_count
数字
点击数


在这个论坛中,所有主贴和回复贴是在一个表中存放的,其区别就在于Rid这个字段中,如果是主贴,则Rid字段的值为默认值0,如果是回复贴,则Rid字段的值为对应贴子的Aid值。设计论坛读主贴时,只需在查询中加一条Where Rid=0就行了。

如果数据库就是现在这个样子,是无法实现锁定、置顶和加精三项功能的,我们需要在DB_Article表中添加如下三个字段:

·Check_Lock 数字型,用来记录是否锁定,为1则锁定,为0则不锁定;

·Check_Top 数字型,用来记录是否置顶,为1则置顶,为0则不置顶;

·Check_Best 数字型,用来记录是否加精,为1则是精华,为0则不是

这三个字段的默认值均为0,也就是说,一个贴子发出来后,默认为不锁定、不置顶、不加精华的。下面我们来说一说该如何将一个贴子变为锁定、置顶和加入精华。这里就不罗索该怎么发贴啦,UBB什么的啦,我们直接显示文章吧。先建一个记录集,取名ReArticle,这里你也可以取其他名字。

●在文章的最底下,加一条分隔线,加分隔线的方法有很多,我就不多说了。在分隔线下面,敲以下字符吧:

锁定解锁 | 置顶取消置顶 | 加精取消精华

然后分别给他们建立链接:

·锁定 lock.asp?aid=<%=(ReArticle.Fields.Item("Aid").value)%>&action=1

·解锁 lock.asp?aid=<%=(ReArticle.Fields.Item("Aid").value)%>&action=0

·置项 Settop.asp?aid=<%=(ReArticle.Fields.Item("Aid").value)%>&action=1

·取消置顶 Settop.asp?aid=<%=(ReArticle.Fields.Item("Aid").value)%>&action=0

·加精 Setbest.asp?aid=<%=(ReArticle.Fields.Item("Aid").value)%>&action=1

·取消精华 Setbest.asp?aid=<%=(ReArticle.Fields.Item("Aid").value)%>&action=0

●现在我们打开代码窗口,在

<a href=” lock.asp?aid=<%=(ReArticle.Fields.Item("Aid").value)%>&action=1”>锁定<a>这句话前加上一句:<% if ReArticle.Fields.Item("Chech_Lock").value=0 %>,在这句话后面加上<% else %>,然后到解锁的链接后面,即:<a href=” lock.asp?aid=<%=(ReArticle.Fields.Item("Aid").value)%>&action=0”>解锁<a>这句话后面加上<% end if %>

这几句代码是什么意思呢?这其实是一段典型的ASP代码,即常说的判断语句,if 什么什么,则什么什么,否则什么什么的啦。<% if ReArticle.Fields.Item("Chech_Lock").value=0 then %>是说,如果Check_Lock字段的值为0,即如果这篇文章没有被锁定,则显示“锁定”链接,<% else %>为否则,显示“解锁”链接。我这里只详细地说了对锁定和解锁加的链接,置顶、加精的链接与此相类似,只不过位置不同,链接不同罢了,大家自己加吧。完成后关于这一段的代码应为:

<% if ReArticle.Fields.Item("Chech_Lock").value=0 the %>

<a href=” lock.asp?aid=<%=(ReArticle.Fields.Item("Aid").value)%>&action=1”>锁定<a>

<% else %>

<a href=” lock.asp?aid=<%=(ReArticle.Fields.Item("Aid").value)%>&action=0”>解锁<a>

<% end if %> |

<% if ReArticle.Fields.Item("Chech_Top").value=0 then %>

<a href=” SetTop.asp?aid=<%=(ReArticle.Fields.Item("Aid").value)%>&action=1”>置顶<a>

<% else %>

<a href=” SetTop.asp?aid=<%=(ReArticle.Fields.Item("Aid").value)%>&action=0”>取消置顶<a>

<% end if %> |

<% if ReArticle.Fields.Item("Chech_Best").value=0 then %>

<a href=” Setbest.asp?aid=<%=(ReArticle.Fields.Item("Aid").value)%>&action=1”>加精<a>

<% else %>

<a href=” SetBest.asp?aid=<%=(ReArticle.Fields.Item("Aid").value)%>&action=0”>取消精华<a>

<% end if %>


都加好了吗?应该都加好了,如果加不了这个,你还是先从留言本做起,而不要来做论坛了。
标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}