ASP 初阶笔记 By Shawl.qiu

ASP 初阶笔记 By Shawl.qiu


声明:
本文全部内容为 shawl.qiu 逐字逐句敲出来, 转载请注明出外. 谢谢!

适宜阅读人群为 ASP 初学者. 

说明: 这是长时间的笔记, 不打算整理, 需要什么按 ctrl+f 查找. 

附注: 期待我的中阶笔记吧, 目前内容还不多. :)

shawl.qiu
2006-8-14
  http://blog.csdn.net/btbtd

  1. linenum
  2. CREATED BY STABX, AT 2006-4-7.
  3.  
  4. DW And ASP Note
  5.  
  6. ---/---------------------------------------------------------
  7.  
  8. 0. 语法开关
  9. 1. FOR
  10. 2. NOW
  11. 3. OPTION EXPLLICIT
  12. 4. 数字不用引号,字符串要用引号
  13. 5. <%myvar=”Hello Magic!”%><%=TYPENAME(myvar)%>
  14. 6. ISEMPTY
  15. 7. 2维数组: 第一个索引指定行,第二个索引指定列。
  16. 8. 虽然数组的某一维的第一个索引值总是0,但其第一维总是用1表示,不要混淆了维数与索引。
  17. 9. 注意JScript是一种区分大小写的语言。
  18. 10. JScript: 日期对象在1970年1月1日午夜之后,才开始跟踪日期,对象表示所有与这个特定历史时刻相关的日期和时间。
  19. 11. 使用JScript 你不能建立多维数组。JScript 中的所有数组对象都是一维的,有时这是很不方便的,有时你需要创建多维数组。
  20. 12. 用简单的 + - 实现上下页跳转
  21. 13. 数据调用
  22. 14. 返回当前年月日星期
  23. 15. 页面选择框跳转
  24. 16. 判断 URL 地址栏的查询, 显示查询条件的内容
  25. 17. 定义函数, 调用函数
  26. 18.1 向下显示十多记录——循环
  27. 18.1.1 显示 N 条记录
  28. 18.2.1 显示全部记录——循环
  29. 18.2.2 显示全部记录——循环
  30. 18.2.3 显示数组或集合里的所有元素——循环
  31. 18.2.3.1 显示 A - Z 的字母
  32. 18.3 过程的混合运用——循环
  33. 19. 数据更新操作——计数器加1
  34. 21. 判断 URL 栏 查询 ID, 显示适当的内容
  35. 22. 获得当前 URL 查询字段 号码
  36. 23. 显示当前查询ID
  37. 24.1 接收复选框数值——表单
  38. 24.2 接收列表框数值——表单
  39. 24.3 接收列表表单并更新数据——表单
  40. 25. 是否以 HTML 格式显示
  41. 26. 数组操作
  42. 26.1 静态数组
  43. 26.2 动态数组
  44. 27. while... wend
  45. 28. select case... end select
  46. 29. 前后移动记录集的当前位置
  47. 30. fso
  48. 31. Randomize
  49.  
  50. ---/---------------------------------------------------------
  51.  
  52. 32. Form
  53.  
  54. 32.1 遍历表单元素
  55.   dim  x '列出表单中所有元素
  56. for x=1 to request.Form.count
  57.     response.write request.form.key(x)&" --- "
  58.     response.write request.form(x)&"<br/>"
  59. next
  60. // request.form.key(x) 为 元素名
  61. // request.form(x) 为 元素值
  62.  
  63. 32.2 遍历表单元素 - 方法2 
  64.     dim elem
  65. for each elem in request.form
  66.     response.write elem
  67.     response.write request(elem)
  68.     response.write "<br/>"
  69. next
  70. //elem 为 元素名
  71. //request.form(elem) 为元素值
  72.  
  73. 31.1 随机显示内容, 并以 "|" 作为分隔符
  74.         if inStr(sitesubtitle,"|") then
  75.             dim subTtNum, subTt, subTtShow(), i
  76.                 subTtNum=ubound(split(sitesubtitle,"|"))
  77.             redim subTtShow(subTtNum)
  78.                 i=0
  79.             for each subTt in Split(sitesubtitle,"|")
  80.                 subTtShow(i)=subTt
  81.                 i=i+1
  82.             next
  83.             dim rndSubTt
  84.                 randomize
  85.                 rndSubTt=int((subTtNum - 0 +1)*rnd+0)
  86.                 sitesubtitleRnd=subTtShow(rndSubTt)
  87.         else sitesubtitleRnd=sitesubtitle
  88.         end if
  89.  
  90. 31. Randomize
  91.  
  92. 30.2 递归显示所有文件夹
  93. <% 
  94. private sub    showFolder(byref fso)
  95.     for each folder in fso.subfolders
  96.         response.write folder.path&"<br/>"
  97.         showFolder Folder
  98.     next
  99. end sub
  100.     set fso=server.CreateObject("scripting.fileSystemObject")
  101.     set root=fso.getFolder(server.MapPath("include/system/themes/"))
  102.     
  103.     showFolder root
  104. %>
  105.  
  106. 30.1 动态包含文件
  107.     execute(CreateObject("scripting.fileSystemObject").openTextFile(server.MapPath("include/managemain/language/"&sitebglang&"/main.asp")).readall)
  108.  
  109. 30. fso
  110.  
  111. 29. 前后移动记录集的当前位置
  112. <%'ASP Access 中 前后移动记录集的当前位置
  113.     set rs=server.CreateObject("adodb.recordset") 
  114.         rs.open "select * from ctarticle",MM_conn_String,1 '游标设置决定可否前后移动记录集
  115.         '参数设置: recordset.Open Source, ActiveConnection, CursorType, LockType, Options
  116.         
  117.         rs.movelast '移至查询的最后一条记录
  118.         response.Write rs("articleid")
  119.         response.write " "
  120.         response.write rs("title") 
  121.         response.write "<p/>"
  122.         
  123.         rs.moveprevious '移至当前记录的前一条记录
  124.         response.Write rs("articleid")
  125.         response.write " "
  126.         response.write rs("title") 
  127.         response.write "<p/>"
  128.         
  129.         rs.move -10 '移至当前记录的第前十条, 当然可以用 +# 来移动记录集
  130.         response.Write rs("articleid")
  131.         response.write " "
  132.         response.Write rs("title") 
  133.         response.write "<p/>"
  134.         
  135.         rs.movenext '移至当前记录的下一条
  136.         response.Write rs("articleid")
  137.         response.write " "
  138.         response.Write rs("title") 
  139.         response.write "<p/>"
  140.         
  141.         rs.movefirst '移至查询的第一条记录
  142.         response.Write rs("articleid")
  143.         response.write " "
  144.         response.Write rs("title") 
  145.         response.write "<p/>"
  146.         
  147.         rs.close 
  148.     set rs=nothing 
  149. %>
  150.  
  151. 28.3 判断字符串类型
  152. <%'判断查询用
  153.         id_=request("id")
  154.     select case id_
  155.         case "tag"
  156.             sql= "select * from v_page_tag_at_of_tg where b.tag like '%"&request("tag")&"%' order by a.articleid desc"
  157.         case "bytagid"
  158.             sql= "select * from v_page_tag_tg_only order by tagid desc"
  159.         case "byarticleid"
  160.             sql= "SELECT * FROM v_page_tag_at_and_tg order by articleid desc"
  161.         case "bytagdate"
  162.             sql= "select * from v_page_tag_tg_only order by tagdate desc"
  163.         case "byarticledate"
  164.             sql= "SELECT * FROM v_page_tag_at_and_tg order by dateandtime desc"
  165.         case "bytaghits"
  166.             sql= "select * from v_page_tag_tg_only order by tagview desc"
  167.         case "byarticlehits"
  168.             sql= "SELECT * FROM v_page_tag_at_and_tg order by hits desc"
  169.         case else
  170.             sql= "select distinct tag from cttag  order by tag asc"
  171.     end select
  172. %>
  173.  
  174. 28.2 Select Case 判断真假类型 
  175. <% '读取数据用
  176. 'sample call '''// call schkreadopt(htmloff_,ubboff_,tt_,ct_) //'''
  177. sub schkreadopt(html,ubb,title,content)    
  178.                 f=html&ubb
  179.     select case f
  180.         case true&true                    'UBB HTML 都选择
  181.                 title=title 
  182.                 content=htmlToTextHTMLonUBBoff(content)
  183.         case false&false                 'UBB HTML 都没选择
  184.                 title=htmlToText(title)
  185.                 content=htmlToText(content)
  186.         case false&true                    'UBB选择, HTML 没选择
  187.                 title=htmlToText(title)
  188.                 content=htmlToText(content)
  189.         case true&false                    'UBB 没选择, HTML 选择
  190.                 title=htmlToTextNullUBB(title)
  191.                 content=htmlToTextNullUBB(content)
  192.     end select
  193. end sub
  194. %>
  195.  
  196. 28.1 Select Case 判断数字类型
  197. <% '添加更新数据用
  198. 'sample call '''// call schkaddorupopt(htmloff_,ubboff_,title_,content_) //'''
  199. sub schkaddorupopt(html,ubb,title,content)    
  200.                 f=html&ubb
  201.     select case f
  202.         case 00                            'html 和 ubb 都没选择
  203.                 title=textToHtml(trim(title))
  204.                 content=textToHtml(content)
  205.         case 11                         'html 和 ubb 都选择
  206.                 title=textToHtml1(trim(title))
  207.                 content=textToHtml1(content_)
  208.         case 01                            'HTML 没选择, UBB 选择
  209.                 title_=textToHtmlNullUBB(trim(title)) 
  210.                 content_=textToHtmlNullUBB(content_)
  211.         case 10                            'HTML 选择, UBB 没选择
  212.                 title=textToHtml(trim(title))
  213.                 content=textToHtml(content)
  214.     end select
  215. end sub
  216. %>
  217.  
  218. 28. select case... end select
  219.  
  220. 27. while... wend
  221. <% 
  222. while not rs.eof 
  223.     response.write rs("title")
  224. wend
  225. %>
  226. 比 do while 少了一个单词
  227.  
  228. 26.3 在现有的数据上, 追加数据
  229. <% 
  230.     dim array_()
  231.     redim array_(1)
  232.         array_(0)="array 0 value":    array_(1)="array1 value"
  233.         response.write "array_(0)="&array_(0)
  234.         response.write "<br/>array_(1)="&array_(1)
  235.     redim preserve array_(2):    array_(2)="array2 value"
  236.         response.write "<br/><br/>add array_(2)"
  237.         response.write "<br/>array_(0)="&array_(0)
  238.         response.write "<br/>array_(1)="&array_(1)
  239.         response.write "<br/>array_(2)="&array_(2)
  240. %>
  241.  
  242. 26.2 动态数组
  243. <%    '连接数据库
  244.     set rs=server.CreateObject("adodb.recordset") '创建 rs 数据查询
  245.         rs.open "SELECT  a.*, b.* FROM ctglossarysubcat AS a INNER JOIN ctglossarysupercat AS b ON a.gcid = b.gcid order by a.gcid",MM_conn_string,1
  246.         i=0
  247. do while not rs.eof 
  248.         gcid_=rs("a.gcid")
  249.         gscid_=rs("gscid")
  250.         gscat_=rs("gscat")
  251.         
  252.         cat_=array(gcid_,gscid_,gscat_)
  253.         
  254.         response.write cat_(0)&" "&cat_(1)&" "&cat_(2)&"<br/>"
  255.         
  256.         i=i+1
  257.         rs.movenext
  258. loop
  259.         rs.close '关闭 rs 连接
  260.     set rs=nothing 
  261. %>
  262.  
  263. 26.1 静态数组
  264. <% 
  265.         dim show(1,7)
  266.                 i=0
  267.         do while not rs.eof 
  268.                 i=i+1
  269.                 show(0,i)=rs("gcat")
  270.                 show(1,i)=rs("gscat")
  271.                 response.write show(0,i)&" "&show(1,i)&"<br/>"
  272.         rs.movenext
  273.         loop
  274. %>
  275.  
  276. 26.0 数组函数
  277. 26.0.1 ubound 返回数组长度: ubound(arrayname)
  278. 26.0.2 erase 删除动态数组: erase arrayname
  279. 26.0.3 isarray 判断是否为数组: isarray(varname)
  280.  
  281. 26. 数组操作
  282. 数组元素为: 索引与维
  283. 索引从 0 开始计数, 维从 1 开始.
  284.  
  285. 25. 是否以 HTML 格式显示
  286. <%
  287.     if request.Form("htmlon")="on" then
  288.         title_=request.Form("title") '同上
  289.         content_=request.Form("content")
  290.     else
  291.         title_=textToHtml(request.Form("title")) '同上
  292.         content_=textToHtml(request.Form("content"))
  293.     end if
  294. %>
  295.  
  296. 24.3 接收列表表单并更新数据——表单
  297. <% if isempty(request("id")) then %>
  298. <% 
  299.     set rs=server.CreateObject("adodb.recordset")
  300.         rs.open "select * from class order by classorder", MM_conn_String
  301.         
  302.     set rscount=server.CreateObject("adodb.recordset")
  303.         rscount.open "select count(classorder) as rsc from class",MM_Conn_String
  304. %>
  305. <form ACTION="" METHOD="post" NAME="changeCO" ID="changeCO">
  306.     <input NAME="classcount" TYPE="hidden" ID="classcount" VALUE="<%=rscount("rsc")%>">
  307.     <%     dim ir
  308.         ir=0
  309.         do while not rs.eof 
  310.         ir=ir+1
  311.         response.Write rs("class")&" "%>
  312.         
  313.         <input NAME="c<%=ir%>" TYPE="hidden" ID="classid" VALUE="<%=rs("classid")%>">
  314.           <select NAME="co<%=ir%>">
  315.                 <%     for i=1 to rscount("rsc")
  316.                         response.Write "<option"
  317.                             if i= rs("classorder") then response.Write " selected"  end if
  318.                         response.Write ">"&i&"</option>"
  319.                     next
  320.                 %>
  321.           </select>
  322.           <br>
  323.     <% rs.Movenext
  324.         loop%>
  325.     <input TYPE="submit" NAME="Submit" VALUE="Submit">
  326. </form>
  327. <%
  328.         rscount.close
  329.     set rscount=nothing
  330.         
  331.         rs.close
  332.     set rs=nothing
  333. %>
  334. <% elseif request("id")="upClassSort" then
  335.  
  336.     classcount_=request.Form("classcount")
  337.     
  338.     for i=1 to classcount_
  339.         ci_=request.Form("c"&i)
  340.         co_=request.Form("co"&i)
  341.         
  342.             'response.Write ci_&" "
  343.             'response.Write "<p/>"
  344.             'response.Write co_&" "
  345.             
  346.     '更新数据
  347.         set rsUpdate=server.CreateObject("adodb.connection")
  348.             rsUpdate.open MM_conn_string
  349.     
  350.             '数字不加单引号, 字符加, 日期加井号
  351.             sql= "update class set classorder="&co_&" where classid="&ci_
  352.             
  353.             rsUpdate.execute(sql)
  354.     
  355.             rsUpdate.close
  356.         set rsUpdate=nothing
  357.     next
  358.     response.Write classSortUpFinished_
  359.  
  360. end if %>
  361.  
  362.  
  363. 24.2 接收列表框数值——表单
  364. <form ACTION="" METHOD="post" NAME="select_" ID="select_">
  365. <% for i=1 to 10%>
  366.     <select NAME="<%=i%>" >
  367.     <% for ii=1 to 10 %>
  368.           <option VALUE="<%=ii%>"><%=ii%></option>
  369.       <% next %>
  370. </select>
  371. <% next%>
  372.     <input TYPE="submit" NAME="Submit" VALUE="Submit">
  373. </form>
  374. <%    '鎺ユ敹鍒楄〃鏁板€?
  375.     for iii=1 to 10
  376.         response.Write request.Form(iii)&"&nbsp;"
  377.     next
  378. %>
  379.  
  380. 24.1 接收复选框数值——表单
  381. <form ACTION="" METHOD="post" NAME="getcheckbox" ID="getcheckbox">
  382.     <% for i=1 to 10 %>
  383.           <%=i%><input NAME="checkvalue" TYPE="checkbox" ID="checkvalue" VALUE="<%=i%>">
  384.       <% next %>
  385.           <br>
  386.     <input TYPE="submit" NAME="Submit" VALUE="Submit">
  387. </form>
  388. <%    '接收复选框数值
  389.     if request.Form("checkvalue")<>"" then '判断表单传递复选框数据是否为空
  390.         dim checkboxvlue '定义变量, 以接收复选框数值
  391.             checkboxvalue=request.Form("checkvalue") '赋值
  392.             response.Write checkboxvalue '读出数值
  393.     end if
  394. %>
  395.  
  396. 23. 显示当前查询ID
  397. CInt(Request("classid"))
  398.  
  399. 22. 获得当前 URL 查询字段 号码
  400. <%= CInt(Request("pageview"))%>
  401. //该语句获得 URL pageview 查询当前号码
  402.  
  403. 21. 判断 URL 栏 查询 ID, 显示适当的内容
  404. <% if isempty(request("dayview")) and isempty(request("yearview")) and isempty(request("monthview")) and isempty(request("weekview"))  and isempty(request("todayview")) then
  405. response.Write(errorCidNidAid_) 
  406. '判断 ID 是否为空, 为真三秒后转回主页, 为假执行下面的条件
  407. %>
  408.  
  409. <%elseif request("dayview")=request("dayview") and isempty(request("yearview")) and isempty(request("monthview")) and isempty(request("weekview"))  and isempty(request("todayview")) then
  410. '如果查询ID = dayview, 并且 yearview, monthivew, weekview, todayview 为空, 显示下面的内容%>
  411.  
  412. 显示查询天
  413.  
  414. <%elseif request("yearview")=request("yearview") and isempty(request("dayview"))  and isempty(request("monthview")) and isempty(request("weekview"))  and isempty(request("todayview")) then 
  415. '如果查询ID = yearview, 并且 dayview, monthivew, weekview, todayview 为空, 显示下面的内容%>
  416.  
  417. 显示查询年 
  418.  
  419. <%elseif request("monthview")=request("monthview") and isempty(request("dayview"))  and isempty(request("yearview")) and isempty(request("weekview"))  and isempty(request("todayview")) then 
  420. '如果查询ID = monthview, 并且 dayview, yearview, weekview, todayview 为空, 显示下面的内容%>
  421.  
  422. 显示查询月
  423.  
  424. <%elseif request("weekvive")=request("weekvive") and isempty(request("dayview"))  and isempty(request("yearview")) and isempty(request("monthview"))  and isempty(request("todayview")) then 
  425. '如果查询ID = weekview , 并且 dayview, yearview, monthview, todayview 为空, 显示下面的内容%>
  426.  
  427. 显示查询星期
  428.  
  429. <%else '如果不符合以上条件, 显示下面的内容. "todayview=" %>
  430.  
  431. 显示当前日期
  432.  
  433. <%end if%>
  434. ---------------------------------
  435.  
  436. 19. 数据更新操作——计数器加1
  437. <%
  438.     set rsUp1 = Server.CreateObject("ADODB.Command")
  439.         rsUp1.ActiveConnection = MM_conn_STRING
  440.         rsUp1.CommandText = "UPDATE article SET hits=hits+1 WHERE articleid="&request("articleid")
  441.         rsUp1.CommandType = 1
  442.         rsUp1.CommandTimeout = 0
  443.         rsUp1.Prepared = true
  444.         rsUp1.Execute()
  445. %>
  446.  
  447. 18.3 过程的混合运用——循环
  448. <%    'ASP 标签链接——方法1: 读取字符串, 并分割, 再循环显示数组的所有元素, 并加上链接
  449.     do while not rsTag.eof '显示数据库表的所有数据
  450.  
  451.         tag_=replace(rsTag("tag"),","," ") '替换逗号为空格, 以分割词语
  452.     
  453.         for each i in SPLIT(tag_) '循环显示数组的每一个元素, 使用 split 函数时该函数自动建立数组
  454.         
  455.             response.Write "<a href="&t_&i&">"&i&"</a>"&"&nbsp;" '显示数组元素并加上链接
  456.         
  457.         next
  458.  
  459.         rsTag.MoveNext
  460.     loop
  461. %>
  462.  
  463. 18.2.3.1 显示 A - Z 的字母
  464. <%
  465. letters="A B C D E F G H I J K L M N O P Q R S T U V W X Y Z" 
  466. for  each letter in split(letters)
  467.     response.write letter&"<br/>"
  468. next
  469. %>
  470.  
  471. 18.2.3 显示数组或集合里的所有元素——循环
  472. <% for each i in myarray
  473.  
  474.     response.write i 'i 为数组元素
  475.    Next
  476. %>
  477.  
  478. 18.2.2 显示全部记录——循环
  479. <% 
  480.     do while not rs.eof 
  481.         response.write rs("title")
  482.         rs.MoveNext
  483.     loop
  484. %>
  485.  
  486. 18.2.1 显示全部记录——循环
  487.     <%
  488.     dim rpall, rpp, rpcdt 
  489.         rpall=-1
  490.         rpp=0
  491.         rpcdt=0
  492.         rpcdt=rpcdt+rpall
  493.  
  494.         while(rpall<>0) and (not rsClP.eof) 
  495.         response.Write(rsClP("class")&" ")
  496.         rpp=rpall+1
  497.         rpcdt=rpcdt-1
  498.         rsClP.MoveNext()
  499.         wend
  500. %>
  501.  
  502. 18.1.1 显示 N 条记录
  503. <%
  504.     for i=1 to rpp 
  505.         title_=rs("glossaryName")
  506.         content_=rs("glossarycontent")    %>
  507.         
  508.         <%=rs("glossaryname")%><br><br>
  509.         <%=rs("glossarycontent")%>
  510.     <% 
  511.         rs.movenext
  512.             if rs.eof or rs.bof then exit for
  513.         next %>
  514.  
  515. 18.1 向下显示十多记录——循环
  516. <%
  517.     dim rp_t, rp_p
  518.     rp_t=10 '显示记录数目
  519.     rp_p=0 '循环变量
  520.     rs_numRows=numRows+rp_t
  521.     %>
  522.     <% while (rp_t<>0) and (not rs.eof)%>
  523.     <%=rs.Fields.Item("title").Value%><br>
  524.     <%
  525.     rp_p=rp_p+1
  526.     rp_t=rp_t-1
  527.     rs.MoveNext()
  528.     wend
  529. %>
  530.  
  531. 17. 定义函数, 调用函数
  532. <%
  533. Function showF '定义函数 showF
  534.     set rs=server.CreateObject("adodb.recordset") '建立 rs 数据查询
  535.     rs.ActiveConnection=MM_conn_STRING 'rs 连接方式
  536.     rs.Open "Select * from article where articleid=2227 ",MM_conn_STRING 'rs 查询语句
  537.     response.Write(rs("articleid")) '显示查询
  538.     rs.Close '关闭数据库连接
  539.     Set rs = Nothing
  540. End Function '结束函数
  541. %>
  542. <%= showF '调用函数 %>
  543.  
  544. 16. 判断 URL 地址栏的查询, 显示查询条件的内容
  545. <%
  546. if  request("classid")=request("classid")  and isempty(request("nclassid")) and isempty(request("yvvid"))   then 
  547.     if request("classid")<>"" then 
  548.     classid = request("classid")
  549.     else 
  550.     end if
  551.     response.Write("<p/>classid")
  552. %>
  553. <% 
  554. elseif request("yvvid")=request("yvvid") and isempty(request("classid")) and isempty(request("nclassid"))   then 
  555.     response.Write("<p/>that's yvvid column")
  556. %>
  557. <% else %>
  558. ---------------------------------
  559. 1)如果查询字段 =classid 并且不包含 nclassid 和 yvvid 查询 , 执行 classid 查询.
  560. 2)如果查询字段 =yvvid 并且不包含 classid  和 nclassid 查询, 执行 yvvid 查询
  561. 3)显示 classid 和 nclassid 查询.
  562.  
  563. 15. 页面选择框跳转
  564. <script language="JavaScript" type="text/JavaScript">
  565. <!--
  566. function MM_jumpMenu(targ,selObj,restore){ //v3.0
  567.   eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  568.   if (restore) selObj.selectedIndex=0;
  569. }
  570. //-->
  571. </script>
  572. <form NAME="form1">
  573.   <select NAME="menu1" onChange="MM_jumpMenu('parent',this,0)">
  574.   <% for i=1 to rsn.PageCount %>
  575.     <option VALUE="<%="nclass.asp?classid="&rqsc_&"&nclassid="&rqsnc_&"&pageno="&i%>" <% if PageNo=i then%> selected <%end if%>>
  576.          <%=i%>
  577.     </option>
  578.     <%next%>
  579.   </select>
  580. </form>
  581. ---------------------------------
  582. i=初始值, rsn.PageCount=总页面; PageNo 为当前页
  583. <% if PageNo=i then%> selected <%end if%> 
  584. 上面语句判断如果是当前页, 调出 selected
  585.  
  586.  
  587. 14. 返回当前年月日星期
  588. <%=year(now())%> <br>
  589. <%=month(now())%><br>
  590. <%=day(now())%><br>
  591. <%=weekday(now())%><br>
  592.  
  593. 13. 数据调用
  594. <%= rs.Fields.Item("data").Value%>
  595. rs 是函数名 data 是数据定义名
  596.  
  597. 12. 用简单的 + - 实现上下页跳转
  598. ---------------------------------
  599. <% Dim subtraction1
  600. Dim plus1
  601. substraction1 = Request.QueryString("articleid")-1
  602. plus1 = Request.QueryString("articleid")+1 %>
  603. //定义变量, 然后用 Request.QueryString() 得到页面码数, 然后再加减1
  604. <a href="articles.asp?articleid=<%= substraction1 %>">Previous</a> | <a href="articles.asp?articleid=<%= plus1 %>">Next</a>
  605. //调用加减变量
  606. ---------------------------------
  607.  
  608. 11. 使用JScript 你不能建立多维数组。JScript 中的所有数组对象都是一维的,有时这是很不方便的,有时你需要创建多维数组。
  609.     在JScript中怎样实现这一点呢?
  610.     很幸运,你可以建立一个数组的数组,一个数组对象的元素值可以是另一个数组对象。
  611.  
  612. 10. JScript: 日期对象在1970年1月1日午夜之后,才开始跟踪日期,对象表示所有与这个特定历史时刻相关的日期和时间。
  613.  
  614. 9. 注意JScript是一种区分大小写的语言。
  615.  
  616. 8. 虽然数组的某一维的第一个索引值总是0,但其第一维总是用1表示,不要混淆了维数与索引。
  617.  
  618. 7. 2维数组: 第一个索引指定行,第二个索引指定列。
  619.  
  620. 6. ISEMPTY
  621. 在给一个变量分配一个值之前,该变量是空的。用函数ISEMPTY()可以检测一个变量是否为空。如下例所示:
  622. <%
  623. myvar=”Hello Magic!”
  624. %>
  625. myvar:<%=ISEMPTY(myvar)%>
  626. myvar2:<%=ISEMPTY(myvar2)%>
  627.  
  628. 5. <%myvar=”Hello Magic!”%><%=TYPENAME(myvar)%>
  629. <%myvar=3%><%=TYPENAME(myvar)%>
  630. 在这个例子中,变量myvar被分配了两个不同数据类型的值。对每种类型的值,VBScript函数TYPENAME()可以显示该变量所代表的实际数据的子类型。例如,当给变量myvar分配字符串数据“Hello Magic!”时,variant型变量的子类型是string。当给变量myvar分配整数3时,myvar的子类型是integer。
  631.  
  632. 4. 数字不用引号,字符串要用引号
  633.  
  634. 3. OPTION EXPLLICIT
  635. 强制声明变量
  636.  
  637. 2. NOW
  638. This page was created on :<%=NOW%>
  639.  
  640. 1.5 if rs.eof or rs.bof then exit for 的使用顺序
  641. <% 
  642.     for i=1 to 50 
  643.         if rs.eof or rs.bof then exit for
  644.         datevalue
  645.             rs.movenext
  646.     next
  647. %>
  648. //if rs.eof or rs.bof then exit for 应该紧接在 for 的下一行, 这样就不会出现最末一条数据显示二次的可能
  649.  
  650. 1.4 在循环中 重复显示 id1 && id2
  651. <%'设计中用得到的循环, 例如 id1 id2
  652.     for i=1 to 100
  653.         if (i mod 2)=1 then
  654.             cl_="cl1"
  655.         else cl_="cl2"
  656.         end if
  657.             response.write i
  658.             response.write " "
  659.             response.write cl_
  660.             response.write "<br/>"
  661.     next
  662. %>
  663.  
  664. 1.3 从 A 循环递减 1 至 B
  665. <%    
  666.     response.write "<select>"
  667. for i=20 to 8 step -1
  668.     response.write "<option value="""&i&"px"">"&i&" px</option>"
  669. next
  670.     response.write "</select>"
  671. %>
  672.  
  673. 1.2 
  674. <%'循环显示 1 至 50 中的 1 至 50
  675. for i=1 to 50
  676.     response.write i&" <br/>"
  677.     
  678.     for j=1 to 50
  679.     response.write j&" "
  680.     next
  681.     
  682.     response.write "<p/>"
  683. next 
  684. %>
  685.  
  686. 1.1
  687. <%'循环显示 1 至 50 的全部数字
  688. for i=1 to 50
  689.     response.write i&" "
  690. next 
  691. %><br>
  692. <%'循环显示 1 至 50 的奇数
  693. for i=1 to 50
  694.     response.write i&" "
  695.     i=i+1
  696. next 
  697. %><br>
  698. <%'循环显示 1 至 50 的偶数
  699. for i=1 to 50
  700.     i=i+1
  701.     response.write i&" "
  702. next 
  703. %><br>
  704.  
  705. 1. FOR
  706. <%FOR myvar=1 TO 500%>
  707. <%=myvar%><b>: Hello Magic!</b>
  708. <% NEXT %>
  709. 符号对<%和%>用来指明一个脚本,而符号对<%=和%>用来指明变量或函数的值。跟在表达式<%=后面的任何内容都将被打印在浏览器窗口中。
  710.  
  711. 0. 语法开关
  712.  
  713. 0.1 set xx="" | set xx=nothing
  714.  
  715. 0.2 open.xx | xx.close
  716.  
  717. 0.3 response.xx | response.end
  718.  
  719. ---/---------------------------------------------------------
  720.  
  721. Regular Expression
  722.  
  723. 2. email 替换操作, 三级域名或以内, 本正则正常工作
  724. 'email 替换操作,  email 替换为 <a href=mailto:email>email</a>
  725. Set re = New RegExp
  726. re.Pattern = "([/w-]+/.+[/w-]+/@+)([/w-]+/.+[/w-]+/.+|[/w-]+/.+)([/w{1}][/w{2}][/w{3}]|[/w{1}][/w{2}])"
  727. re.Global = true
  728. re.IgnoreCase = true
  729. result = re.Replace(result,"<a href=mailto:$1$2$3>$1$2$3</a>")
  730. ----------------------
  731. 'EMAIL 解码
  732. Set re = New RegExp
  733. re.Pattern = "(/<a href/=mailto/:)([/w-]+/.+[/w-]+/@+)([/w-]+/.+[/w-]+/.+|[/w-]+/.+)([/w{1}][/w{2}][/w{3}]|[/w{1}][/w{2}])(/>)(.*)(/<//a/>)"
  734. re.Global = true
  735. re.IgnoreCase = true
  736. Str = re.Replace(Str,"$6")
  737.  
  738. 1. 匹配 URL, www. 不超过四可正常工作, 或者说不超过三级域名, 本正则可正常工作
  739. 'url 替换操作, www 替换为 <a href http://www>www</a>
  740. Set re = New RegExp
  741. re.Pattern = "(http/:|^http/:)([/w-]+/.+[/w-]+/.+[/w-]+/.+[/w-]+|[/w-]+/.+[/w-]+/.+[/w-]+)(/[/w-./?%&=]*)?"
  742. re.Global = true
  743. re.IgnoreCase = true
  744. result = re.Replace(result,"<a href http://$2$3 target=_blank>$1$2$3</a>")
  745. ----------------------
  746. 'URL 解码
  747. Set re = New RegExp
  748. re.Pattern = "(/<a href/=/http/:)([/w-]+/.+[/w-]+/.+[/w-]+/.+[/w-]+|[/w-]+/.+[/w-]+/.+[/w-]+)(/[/w-./?%&=]*)?( target/=/_blank/>)(http/:|^http/:)([/w-]+/.+[/w-]+/.+[/w-]+/.+[/w-]+|[/w-]+/.+[/w-]+/.+[/w-]+)(/[/w-./?%&=]*)?(/[/w-./?%&=]*)(/<//a/>)"
  749. re.Global = true
  750. re.IgnoreCase = true
  751. Str = re.Replace(Str,"$5$6$7$8")
  752.  
  753. ---/---------------------------------------------------------
  754.  
  755. Importan Skill
  756.  
  757. 5. 解决 IIS6 默认 200KB 的限制
  758. cscript %systemdrive%/Inetpub/AdminScripts/adsutil.vbs set w3svc/ASPMaxRequestEntityAllowed 10,485,760
  759.  
  760. 4. Open 方法
  761. 4.1 recordset.Open Source, ActiveConnection, CursorType, LockType, Options
  762. 4.2 connection.Open ConnectionString, UserID, Password, OpenOptions
  763.  
  764. 3.2 取出所有数据
  765. <%
  766.         mr=rs.getrows()
  767. for each i in mr
  768.         response.write i&"<br/>"
  769. next
  770. %>
  771.  
  772. 3.1 计算记录总数
  773. <%=rs.recordcount%>
  774. ----------------------
  775. !注意参数设置, 例
  776. rs.open sql, MM_conn_String,1
  777.  
  778. 3. 数据操作
  779.  
  780. 2. 过滤字符
  781.  
  782. 原始
  783. <% myarray=split("articleid hits")%>
  784. <% myarray=filter(myarray,"articleid")%>
  785. <%=join(myarray)%>
  786. 该语句返回 articleid,作用是过滤掉所有不适合的字符.
  787.  
  788. 复杂
  789. <%=join(filter(split("articleid hits"),"articleid"))%>
  790. //上面的例子过滤掉所有不是 articleid 的字符, 使用参数 false 则相反
  791. //例: <%=join(filter(split("articleid hits"),"articleid",false))%>
  792. //上面的语句过滤掉所有 articleid 字符
  793. //再例: join(filter(split(replace(("articleid,hits"),","," ")),"articleid"))
  794. //上面的例子加入了字符替换函数, 把","替换为空格
  795. 2006-5-4
  796.  
  797. 1. 自动换行
  798. <%=Replace(Content,vbCrlf,"<br>")%> / <%=replace(content,chr(13),"<br/>"%>
  799.  
  800. ---/---------------------------------------------------------
  801.  
  802. 函数/Function
  803.  
  804. 2. 智能 URL
  805. '智能 URL 
  806. 'sample call: '''/// call fAiUrl("sortby","hanzifirst","by Hanzi") ///'''
  807. 'call fAiUrl("查询字符","替换值","显示文字")
  808. function fAiUrl(qtext,qvalue,qdsply)
  809.         pv_=request(qtext) 
  810.     if rqq_="" then
  811.         response.write "<a href=""?"
  812.         response.write qtext
  813.         response.write "="
  814.         response.write qvalue
  815.         response.write "#anchor"">"
  816.         response.write qdsply
  817.         response.write "</a> "
  818.     elseif instr(rqq_,qtext)=0 then
  819.         response.write "<a href=""?"
  820.         response.write qtext
  821.         response.write "="
  822.         response.write qvalue
  823.         response.write "&"
  824.         response.write rqq_
  825.         response.write "#anchor"">"
  826.         response.write qdsply
  827.         response.write "</a> "
  828.     elseif instr(rqq_,qtext)<>0 then    
  829.         response.write "<a href=""?"
  830.         response.write replace(rqq_,qtext&"="&pv_,qtext&"="&qvalue)
  831.         response.write "#anchor"">"
  832.         response.write qdsply
  833.         response.write "</a> "
  834.     else
  835.         response.write "<a href=""?"
  836.         response.write replace(rqq_,"&"&qtext&"="&pv_,"&"&qtext&"="&qvalue)
  837.         response.write "#anchor"">"
  838.         response.write qdsply
  839.         response.write "</a> "
  840.     end if
  841. end function 
  842.  
  843. 1. 文件名判断函数
  844. function getFileExtName(fName)
  845.         if instr(fname,".gif") or instr(fname,".GIF")  or instr(fname,".jpg") or instr(fname,".JPG") or instr(fname,".bmp")  or instr(fname,".BMP") or instr(fname,".png")  or instr(fname,".PNG")  then
  846.              getFileExtName=true
  847.         else
  848.           getFileExtName=false
  849.         end if
  850. end function
  851. 应用:
  852. ------------------------------
  853. if getFileExtName(sfinfo.name) then '检查是否为图片
  854.  
  855.     sql = "INSERT INTO pic (ppsyp,pvirp,pname)  VALUES ('"&sfinfo&"','"&sf.name&"/"&sfinfo.name&"','"&sfinfo.name&"') " '选择列, 并插入数据
  856.     rsInsert.Execute(sql) '执行数据库插入语句
  857.     
  858. end if  
  859. ---/---------------------------------------------------------
  860.  
  861. Gained Knowledge 
  862.  
  863. 16. 隐藏错误 
  864. on error resume next
  865.  
  866. 15. 表单传递变量时, 要判断子元素传递值为空, 应设置 value="" . 
  867.  
  868. 14. 使用函数时, 全部写上 call 关键字, 以便日后增加新功能. 
  869. call fGlSbcatOpt(rgcid_,rgscid_)
  870.  
  871. 13. 以一行写 if ... then 时, 可以嵌套使用 if ... then 
  872. if sbid<>"" then  if cstr(sbid)=cstr(rs1("gscid")) then response.write " selected=""selected"""
  873.  
  874. 12. 当以一行使用 if...then...end if 时, 不需使用 end if
  875.  
  876. 11. 开发时, 应建立一个调试站, 和一个显示站, 某阶段调试完毕再更新显示站
  877.  
  878. 10. 数据连接参数应该在 HTML 标签之前
  879.  
  880. 9. 定义页面变量不要把 URL/链接 也定义进去
  881.  
  882. 8. 如何读出 ACCESS的 OLE 对象 和 编辑 ACCESS 中的 OLE 对象.
  883. 这跟其他操作一样, 只是判断类型有一点差别. 
  884. 一般数据可以用 **="", OLE 对象 须用 isNull(**). (也可以用 len, 问题是这个判断不够通用. )
  885.  
  886. 7. 一行为多个变量赋值
  887. dim a, b
  888. a="a":b="b"
  889.  
  890. 6.1 asp 代码范围 使用 _ 连接下一行
  891.     if rcombine_="" then id_=rs("gcid"):cat_=rs("gcat"):_
  892.     rdoName_="rdoGlSpcat"
  893.  
  894. 6. SQL 操作语句使用 &_ 连接下一行
  895.  
  896. 5. ASP 尽量不要使用 & 连接符, & 连接符需要费时, 改用 response.write ""
  897.  
  898. 4. 函数文件 查询连接名 不要定义为 rs, 定义为 rs1,rs2.... 
  899.  
  900. 3. 使用函数, 应当在函数里判断条件是否满足, 不要在函数以外判断函数内的条件. 
  901.  
  902. 2. 链接到脚本页, 用 "?"; 连接到本页用 "", ASP 中用双引号为 """".
  903. 例: <a href="">管理首页</a><p/>
  904.  
  905. 1. 排序 和 页面链接 应当使用文本框, 自定义输入.
  906. ! 不要使用列表框, 数据多的时候简直是折磨人.
  907. 10:28 2006-5-17
  908.  
  909. ------------------------------
  910. 性能优化-ASP
  911.  
  912. 2. 数据库应该加入索引
  913. //作用是查询执行得高效, 更新添加数据降低性能.
  914. //但查询使用频率远远比更新添加数据使用得多
  915.  
  916. 1. 少用 & 字符, 再少用 & 字符
  917. //这个字符很浪费时间
  918.  
  919. ---/---------------------------------------------------------
  920.  
  921. Problems list | Current Item: 5
  922.  
  923. 5. ASP 生成 PDF 
  924.  
  925. 4. ASP 得到图片的宽度
  926. ------------------------------
  927.  
  928. Problems list - Finished
  929.  
  930. 2. 以星期方式跳转, 解决 31 号后的问题.  21:11 2006-6-9
  931.  
  932. 1. 页面循环显示, 判断空数据的ID并跳过 10:24 2006-5-17
  933.  
  934. 3. 多参数翻页输入框 10:23 2006-5-17
  935.  
  936. ---/---------------------------------------------------------
  937.  
  938. General Knowledge
  939.  
  940. 4. 字符函数
  941. 4.1 分割字符串函数 split
  942. //split 默认以空格分割字符串
  943. //split 可以指定分割字符识别符,如: split(string,",")
  944.  
  945. 3. 退出流程语句
  946. 3.1.1 退出 for: if condition=match then exit for
  947. 3.1.2 退出 for: if rs.eof or rs.bof then exit for
  948. 3.2 退出 do: if condition=match then exit do
  949. 3.3 判断变量是否为数字: if not IsNumeric(rspid) then exit function
  950.  
  951. 2. 函数ISEMPTY()可检测一个变量是否为空, 只有一个从未被赋过值的变量才是空变量.
  952.  
  953. 1. 显示变量属性
  954. <% 
  955.     k=request.ServerVariables("SCRIPT_NAME")
  956.     response.write k
  957.     response.write typename(k)&"<br/>"
  958. %>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值