对于wolfit的[Rndarticle 随机乱弹 1.0]的修改。

  对于wolfit的[Rndarticle 随机乱弹 1.0]的修改。修改了一下。代码还可以优化~小狼加油~~~

看了关键代码,其原理以及流程:查找随机ID,找到了取得URL找不到赋值首页。

以下为原始代码:
[CODE=vb]
randomize
RndNumber=cInt((MaxNum-MinNum+1)*rnd+MinNum)

Set objRS=objConn.Execute(“SELECT [log_ID] FROM [blog_Article] WHERE ([log_ID]=” & RndNumber & “) AND ([log_Level]>1) order by [log_ID] desc”)
If (Not objRS.bof) And (Not objRS.eof) Then
Set objArticle=New TArticle
If objArticle.LoadInfoByID(objRS(“log_ID”)) Then
strPrevious= objArticle.Url
End If
Set objArticle=Nothing
objRS.MoveNext
else
strPrevious= ZC_BLOG_HOST ‘如果转到不该转的地方,则转向首页
End If
objRS.close

Response.Redirect strPrevious
[/CODE]

  参数设置中的[最大文章数]就要改为[最新文章ID]了,毕竟是通过ID查找的而不是objRS.Move x,不是吗?另外哪个objRS.MoveNext是不是不需要啊?呵呵。

第一种修改方法:
[CODE=vb]
Function GetArticleUrl()
RndNumber=cInt((MaxNum-MinNum+1)*rnd+MinNum)

Set objRS=objConn.Execute(“SELECT [log_ID] FROM [blog_Article] WHERE ([log_ID]=” & RndNumber & “) AND ([log_Level]>1) order by [log_ID] desc”)
If (Not objRS.bof) And (Not objRS.eof) Then
Set objArticle=New TArticle
If objArticle.LoadInfoByID(objRS(“log_ID”)) Then
strPrevious = objArticle.Url
End If
Set objArticle=Nothing
objRS.close
Else
GetArticleUrl() ‘如果没有该ID,则重新乱弹。
End If
End Function

randomize
Call GetArticleUrl()

Response.Redirect strPrevious
[/CODE]

  看了自己发的帖子才想起来另一种方法。这样修改,参数设置中就应该写最大文章数(总数)而不是最新文章ID了。
第二种修改方法:
[CODE=vb]
randomize
RndNumber=cInt((MaxNum-MinNum+1)*rnd+MinNum)

Set objRS=objConn.Execute(“SELECT [log_ID] FROM [blog_Article] WHERE [log_Level]>1 order by [log_ID] desc”)

If (Not objRS.bof) And (Not objRS.eof) Then
objRS.Move RndNumber – 1
Set objArticle=New TArticle
If objArticle.LoadInfoByID(objRS(“log_ID”)) Then
strPrevious= objArticle.Url
End If
Set objArticle=Nothing
else
strPrevious= ZC_BLOG_HOST ‘如果转到不该转的地方,则转向首页
End If
objRS.close

Response.Redirect strPrevious
[/CODE]

望小狼再接再厉~~~~~

发表评论

邮箱地址不会被公开。 必填项已用*标注