零星网络

技术&资讯
网站超市

需要前后台演示请留言,或QQ:150623477联系站长。

本成品是基于ASP+Access开发的网站内容管理系统,提供了简介类模块,新闻类模块,产品类模块,图片类模块,下载类模块
· 适用性:充分考虑公司企业的实际需要,确保功能上较强的实用性。
· 易用性:用户界面简洁、美观、友好,易于用户操作和使用,操作人员只需简单学习即可掌握。
· 安全性:安全可靠的权限划分,既考虑信息的共享,又注意信息的保护与隔离。

编程 您的当前位置:首页 > 技术&资讯 > 编程

AspCms 模拟limit执行从第N个开始调用数据

发布时间:2017-11-03  浏览次数:  分享到:
复制代码
  1. 对于使用ASPCMS的朋友来说一定遇到过这样的情况,首页调用新闻,第一条新闻为头条,下面的要从第二条开始调用,一般的做法为:先调用一条数据   
  2. {aspcms:content sort=XXX order=order num=1}   
  3. {/aspcms:content}   
  4. 然后再做判断从第二条开始调用4条内容   
  5. {aspcms:content sort=XXX order=order num=5}   
  6. {if:[content:i]>1}   
  7. 从第二条开始的内容   
  8. {end if}   
  9. {/aspcms:content}   
  10. 如果要从第20条开始调用,调用5条,那么只能写num=25,然后判断[content:i]>20,感觉比较麻烦。   
  11. 我们知道操作access的sql没有limit。此文章以下内容为模拟使用limit调用从指定位置开始调用数据。   
  12. 最后的使用方法为   
  13. {aspcms:content sort=XXX num=5 start=10}   
  14. {/aspcms:content}   
  15. 代表的意义是,从第10条开始获取5条内容。相当于limit 10,5。。。。   
  16. 本文仅仅作为一个参考资料,提供一个思路而已,如果有什么问题还需自行修改~   
  17.   
  18.   
  19. 打开AspCms_MainClass.asp   
  20. 找到   
  21. Public Function parseLoop(Byval str)   
  22. dim sqlstart,rs,s,startID,startstr,startnum,lstart,sortArr,sortStr,sortI,labelRuleField,matches,match,labelStr,loopStr,labelArr,lnum,ltype,lsort,lorder,ltime,whereType,whereSort,orderStr,whereTime,sql,DateArray,matchesfield,loopstrTotal,i,sperStrs,spec,sperStr,aboutkey,title,lstar,contentlen,pagecontent   
  23. labelRule = "{aspcms:"&str"([\s\S]*?)}([\s\S]*?){/aspcms:"&str"}"  
  24. labelRuleField = "\["&str":([\s\S]+?)\]"  
  25. regExpObj.Pattern = labelRule   
  26. set matches = regExpObj.Execute(content)   
  27. for each match in matches   
  28.     labelStr = match.SubMatches(0)   
  29. 'echo str & labelStr   
  30. loopStr = match.SubMatches(1)   
  31. set labelArr = parseArr(labelStr)   
  32. lstart=labelArr("start") : lnum = labelArr("num") : ltype = labelArr("type") : lsort = labelArr("sort") : lorder = labelArr("order") : ltime = labelArr("time") : aboutkey = labelArr("tag") : lstar=labelArr("star")   
  33.   
  34. if isNul(ltype) then ltype="all"  
  35. if ltype="all" then    
  36. whereType=""  
  37. end if   
  38. if isNul(lnum) then lnum = 10  else lnum = cint(lnum)   
  39. sortStr=""  
  40.   
  41.   
  42. 其中获取标签的代码改为:   
  43. lstart=labelArr("start") : lnum = labelArr("num") : ltype = labelArr("type") : lsort = labelArr("sort") : lorder = labelArr("order") : ltime = labelArr("time") : aboutkey = labelArr("tag") : lstar=labelArr("star")   
  44. 在以下位置添加代码   
  45.   
  46. '从指定数目开始查找解决方法   
  47. dim startorder   
  48. if isNul(lorder) then    
  49. startorder = "time"  
  50. elseif lorder="id" then   
  51. startorder = " order by ContentID desc"  
  52. elseif lorder="visits" then   
  53. startorder = " order by Visits desc"  
  54. elseif lorder="time" then   
  55. startorder = " order by AddTime desc"  
  56. elseif lorder="order" then   
  57. startorder = " order by IsTop desc,isrecommend desc,ContentOrder,AddTime desc"  
  58. elseif lorder="istop" then   
  59. startorder = " and IsTop order by ContentOrder,AddTime desc"  
  60. elseif lorder="isrecommend" then   
  61. startorder = " and isrecommend order by ContentOrder,AddTime desc"  
  62. elseif lorder="isimagenews" then   
  63. startorder = " and IsImageNews order by ContentOrder,AddTime desc"  
  64. elseif lorder="isheadline" then   
  65. startorder = " and IsHeadline order by ContentOrder,AddTime desc"  
  66. elseif lorder="isfeatured" then   
  67. startorder = " and IsFeatured order by ContentOrder,AddTime desc"  
  68. end if   
  69. if isNul(lstart) then   
  70. lstart=""    
  71. startstr=""  
  72. elseif lstart=0 then   
  73. lstart="开始位置不能为0"  
  74. startstr=""  
  75. else   
  76. lstart=" top "&cint(lstart)   
  77. sqlstart="select "&lstart" ContentID from AspCms_Content where sortID="&lsort&startorder   
  78. set rs=conn.Exec(sqlstart,"r1")   
  79. if  not rs.eof then    
  80. do while not rs.eof    
  81. startID=rs(0)   
  82. rs.movenext   
  83. loop    
  84. end if   
  85. startstr=" a.ContentID < "&cint(startID)" and"  
  86. end if   
  87.   
  88. 将搜索内容的SQL语句改为   
  89. sql="select top "&lnum" ContentID,a.SortID,a.GroupID,a.Exclusive,Title,Title2,TitleColor,IsOutLink,OutLink,Author,ContentSource,ContentTag,Content,ContentStatus,IsTop,Isrecommend,IsImageNews,IsHeadline,IsFeatured,ContentOrder,IsGenerated,Visits,a.AddTime,a.ImagePath,a.IndexImage,a.DownURL,a.PageFileName,a.PageDesc,SortType,SortURL,SortFolder,SortFileName,SortName,ContentFolder,ContentFileName,b.GroupID,b.Exclusive"&sperStr" from AspCms_Content as a,AspCms_Sort as b where a.LanguageID="&setting.languageID"  and a.SortID=b.SortID and "&startstr" ContentStatus=1 and TimeStatus=0 "&whereType&whereSort&whereTime&orderStr   
  90.   
  91. 前台调用标签 start=NUM   (num为指定位置,是一个数值)   
  92.   
  93.   
  94. 注意申明变量  

 

相关评论

    评论加载中...
    评论者:     验证码:
        

首页|网站超市|业界|营销|优化|HTML|JS|JQUERY|DIV+CSS|编程|运营|设计排版|创业|访谈

Copyright © 2006-2015 Power by 零星设计. 联系QQ:150623477
合作共赢、快速高效、优质的网站建设提供商

  • ●在线咨询点击这里给我发消息
  • ●在线咨询点击这里给我发消息
  • ●在线咨询点击这里给我发消息
  • 业务电话正在通话中…
  • 09:00AM-22:00PM
  • 高效优质的网站建设提供商
  • 加入收藏