Tags功能的实现

看了jessezhao的Web2.0里面的Tags功能的实现 (http://www.cnblogs.com/jessezhao/archive/2007/03/20/680520.html)。
于是把自己的tags实现也贴上来吧:
1.表的关系
我是用三个表来实现的:一个主的文章表,两个tags的附加表。

2.数据插入
在文章表news里边有一个字段news_tags,放置该文章的所有tags。
比如一个简单的文章:五邑大学第十四届辩论赛
添加者提取的tags是:五邑大学 第十四届辩论赛 赛徽 辩题
这四个tag就放在news_tags里边。

插入这个文章的代码实现上有四个过程,后边三个用事务实现就是了:
单个tag是否存在(已经存在就跳过最后一步的单个tag插入),文章插入(news),tag和文章连接的插入(news_tags_link),news_tags还不存在的单个tag插入

3.数据修改
修改这个文章就只是需要加多一个删除原来的news_tags_link就可以了。
代码实现上有五个过程,后边四个是用事务来实现:
单个tag是否存在(已经存在就跳过最后一步的单个tag插入),文章插入(news),删除所有的与该文章相关的news_tags_link,tags和文章连接管理的插入(news_tags_link),news_tags的单个tag插入


很容易看到,这个方法没有删除news_tags中多余的tag(在news修改时候删除的tags)。
不好意思,文章乱乱的。希望能看明白。 

 

 

====

 

tag实际上就是把相关的日志联系起来.比如过年的时候tag写"高兴,过年",过生日的时候写"高兴,生日",那么点高兴就可以连到这两个日志.  
  实现起来不复杂  
  以前写过一个博客程序,下面是tag部分,不知道好不好看懂  
   
   
  if   p_tags<>""   then  
  tags=split(p_tags,",")  
  for   i=0   to   ubound(tags)  
  set   rs=conn.execute("select   tagid   from   tags   where   name='"&tags(i)&"'")  
  if   rs.eof   then  
  conn.execute("insert   into   tags   (name,addTagStyle)   values   ('"&tags(i)&"','"&request("nTagStyle")&"')")  
  tag_t=conn.execute("select   top   1   TagID   FROM   tags   ORDER   BY   TagID   DESC")(0)  
  new_tag=new_tag   &   tags(i)   &   ","  
  new_tagid=new_tagid   &   tag_t   &   ","  
  else  
  tag_t=rs(0)  
  end   if  
  conn.execute("insert   into   taglink   (tagid,fid)   values   ("&   tag_t   &","&   fid   &")")  
  rs.close  
  if   i=ubound(tags)   then  
  tagidlist=tagidlist   &   tag_t  
  else  
  tagidlist=tagidlist   &   tag_t   &   ","  
  end   if  
  next  
  end   if

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值