1) order by [log_ID] desc")..." /> 对于wolfit的[Rndarticle 随机乱弹 1.0]的修改。 - 编程开发 - 地母深渊 - 江海客

地母深渊

为生而活,每时每刻我都不能忘记。

« RocketDock 让你的桌面动起来!尼泊尔今日将宣布共和 传贾南德拉国王已离开王宫 »

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

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

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

以下为原始代码:
        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


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

第一种修改方法:
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


  看了自己发的帖子才想起来另一种方法。这样修改,参数设置中就应该写最大文章数(总数)而不是最新文章ID了。
第二种修改方法:
        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


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

发表评论:



  

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表