-
ASP 初阶笔记 By Shawl.qiu
声明:
本文全部内容为 shawl.qiu 逐字逐句敲出来, 转载请注明出外. 谢谢!
适宜阅读人群为 ASP 初学者.
说明: 这是长时间的笔记, 不打算整理, 需要什么按 ctrl+f 查找.
附注: 期待我的中阶笔记吧, 目前内容还不多. :)
shawl.qiu
2006-8-14
http://blog.csdn.net/btbtd
- linenum
- CREATED BY STABX, AT 2006-4-7.
- DW And ASP Note
- ---/---------------------------------------------------------
- 0. 语法开关
- 1. FOR
- 2. NOW
- 3. OPTION EXPLLICIT
- 4. 数字不用引号,字符串要用引号
- 5. <%myvar=”Hello Magic!”%><%=TYPENAME(myvar)%>
- 6. ISEMPTY
- 7. 2维数组: 第一个索引指定行,第二个索引指定列。
- 8. 虽然数组的某一维的第一个索引值总是0,但其第一维总是用1表示,不要混淆了维数与索引。
- 9. 注意JScript是一种区分大小写的语言。
- 10. JScript: 日期对象在1970年1月1日午夜之后,才开始跟踪日期,对象表示所有与这个特定历史时刻相关的日期和时间。
- 11. 使用JScript 你不能建立多维数组。JScript 中的所有数组对象都是一维的,有时这是很不方便的,有时你需要创建多维数组。
- 12. 用简单的 + - 实现上下页跳转
- 13. 数据调用
- 14. 返回当前年月日星期
- 15. 页面选择框跳转
- 16. 判断 URL 地址栏的查询, 显示查询条件的内容
- 17. 定义函数, 调用函数
- 18.1 向下显示十多记录——循环
- 18.1.1 显示 N 条记录
- 18.2.1 显示全部记录——循环
- 18.2.2 显示全部记录——循环
- 18.2.3 显示数组或集合里的所有元素——循环
- 18.2.3.1 显示 A - Z 的字母
- 18.3 过程的混合运用——循环
- 19. 数据更新操作——计数器加1
- 21. 判断 URL 栏 查询 ID, 显示适当的内容
- 22. 获得当前 URL 查询字段 号码
- 23. 显示当前查询ID
- 24.1 接收复选框数值——表单
- 24.2 接收列表框数值——表单
- 24.3 接收列表表单并更新数据——表单
- 25. 是否以 HTML 格式显示
- 26. 数组操作
- 26.1 静态数组
- 26.2 动态数组
- 27. while... wend
- 28. select case... end select
- 29. 前后移动记录集的当前位置
- 30. fso
- 31. Randomize
- ---/---------------------------------------------------------
- 32. Form
- 32.1 遍历表单元素
- dim x '列出表单中所有元素
- for x=1 to request.Form.count
- response.write request.form.key(x)&" --- "
- response.write request.form(x)&"<br/>"
- next
- // request.form.key(x) 为 元素名
- // request.form(x) 为 元素值
- 32.2 遍历表单元素 - 方法2
- dim elem
- for each elem in request.form
- response.write elem
- response.write request(elem)
- response.write "<br/>"
- next
- //elem 为 元素名
- //request.form(elem) 为元素值
- 31.1 随机显示内容, 并以 "|" 作为分隔符
- if inStr(sitesubtitle,"|") then
- dim subTtNum, subTt, subTtShow(), i
- subTtNum=ubound(split(sitesubtitle,"|"))
- redim subTtShow(subTtNum)
- i=0
- for each subTt in Split(sitesubtitle,"|")
- subTtShow(i)=subTt
- i=i+1
- next
- dim rndSubTt
- randomize
- rndSubTt=int((subTtNum - 0 +1)*rnd+0)
- sitesubtitleRnd=subTtShow(rndSubTt)
- else sitesubtitleRnd=sitesubtitle
- end if
- 31. Randomize
- 30.2 递归显示所有文件夹
- <%
- private sub showFolder(byref fso)
- for each folder in fso.subfolders
- response.write folder.path&"<br/>"
- showFolder Folder
- next
- end sub
- set fso=server.CreateObject("scripting.fileSystemObject")
- set root=fso.getFolder(server.MapPath("include/system/themes/"))
- showFolder root
- %>
- 30.1 动态包含文件
- execute(CreateObject("scripting.fileSystemObject").openTextFile(server.MapPath("include/managemain/language/"&sitebglang&"/main.asp")).readall)
- 30. fso
- 29. 前后移动记录集的当前位置
- <%'ASP Access 中 前后移动记录集的当前位置
- set rs=server.CreateObject("adodb.recordset")
- rs.open "select * from ctarticle",MM_conn_String,1 '游标设置决定可否前后移动记录集
- '参数设置: recordset.Open Source, ActiveConnection, CursorType, LockType, Options
- rs.movelast '移至查询的最后一条记录
- response.Write rs("articleid")
- response.write " "
- response.write rs("title")
- response.write "<p/>"
- rs.moveprevious '移至当前记录的前一条记录
- response.Write rs("articleid")
- response.write " "
- response.write rs("title")
- response.write "<p/>"
- rs.move -10 '移至当前记录的第前十条, 当然可以用 +# 来移动记录集
- response.Write rs("articleid")
- response.write " "
- response.Write rs("title")
- response.write "<p/>"
- rs.movenext '移至当前记录的下一条
- response.Write rs("articleid")
- response.write " "
- response.Write rs("title")
- response.write "<p/>"
- rs.movefirst '移至查询的第一条记录
- response.Write rs("articleid")
- response.write " "
- response.Write rs("title")
- response.write "<p/>"
- rs.close
- set rs=nothing
- %>
- 28.3 判断字符串类型
- <%'判断查询用
- id_=request("id")
- select case id_
- case "tag"
- sql= "select * from v_page_tag_at_of_tg where b.tag like '%"&request("tag")&"%' order by a.articleid desc"
- case "bytagid"
- sql= "select * from v_page_tag_tg_only order by tagid desc"
- case "byarticleid"
- sql= "SELECT * FROM v_page_tag_at_and_tg order by articleid desc"
- case "bytagdate"
- sql= "select * from v_page_tag_tg_only order by tagdate desc"
- case "byarticledate"
- sql= "SELECT * FROM v_page_tag_at_and_tg order by dateandtime desc"
- case "bytaghits"
- sql= "select * from v_page_tag_tg_only order by tagview desc"
- case "byarticlehits"
- sql= "SELECT * FROM v_page_tag_at_and_tg order by hits desc"
- case else
- sql= "select distinct tag from cttag order by tag asc"
- end select
- %>
- 28.2 Select Case 判断真假类型
- <% '读取数据用
- 'sample call '''// call schkreadopt(htmloff_,ubboff_,tt_,ct_) //'''
- sub schkreadopt(html,ubb,title,content)
- f=html&ubb
- select case f
- case true&true 'UBB HTML 都选择
- title=title
- content=htmlToTextHTMLonUBBoff(content)
- case false&false 'UBB HTML 都没选择
- title=htmlToText(title)
- content=htmlToText(content)
- case false&true 'UBB选择, HTML 没选择
- title=htmlToText(title)
- content=htmlToText(content)
- case true&false 'UBB 没选择, HTML 选择
- title=htmlToTextNullUBB(title)
- content=htmlToTextNullUBB(content)
- end select
- end sub
- %>
- 28.1 Select Case 判断数字类型
- <% '添加更新数据用
- 'sample call '''// call schkaddorupopt(htmloff_,ubboff_,title_,content_) //'''
- sub schkaddorupopt(html,ubb,title,content)
- f=html&ubb
- select case f
- case 00 'html 和 ubb 都没选择
- title=textToHtml(trim(title))
- content=textToHtml(content)
- case 11 'html 和 ubb 都选择
- title=textToHtml1(trim(title))
- content=textToHtml1(content_)
- case 01 'HTML 没选择, UBB 选择
- title_=textToHtmlNullUBB(trim(title))
- content_=textToHtmlNullUBB(content_)
- case 10 'HTML 选择, UBB 没选择
- title=textToHtml(trim(title))
- content=textToHtml(content)
- end select
- end sub
- %>
- 28. select case... end select
- 27. while... wend
- <%
- while not rs.eof
- response.write rs("title")
- wend
- %>
- 比 do while 少了一个单词
- 26.3 在现有的数据上, 追加数据
- <%
- dim array_()
- redim array_(1)
- array_(0)="array 0 value": array_(1)="array1 value"
- response.write "array_(0)="&array_(0)
- response.write "<br/>array_(1)="&array_(1)
- redim preserve array_(2): array_(2)="array2 value"
- response.write "<br/><br/>add array_(2)"
- response.write "<br/>array_(0)="&array_(0)
- response.write "<br/>array_(1)="&array_(1)
- response.write "<br/>array_(2)="&array_(2)
- %>
- 26.2 动态数组
- <% '连接数据库
- set rs=server.CreateObject("adodb.recordset") '创建 rs 数据查询
- 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
- i=0
- do while not rs.eof
- gcid_=rs("a.gcid")
- gscid_=rs("gscid")
- gscat_=rs("gscat")
- cat_=array(gcid_,gscid_,gscat_)
- response.write cat_(0)&" "&cat_(1)&" "&cat_(2)&"<br/>"
- i=i+1
- rs.movenext
- loop
- rs.close '关闭 rs 连接
- set rs=nothing
- %>
- 26.1 静态数组
- <%
- dim show(1,7)
- i=0
- do while not rs.eof
- i=i+1
- show(0,i)=rs("gcat")
- show(1,i)=rs("gscat")
- response.write show(0,i)&" "&show(1,i)&"<br/>"
- rs.movenext
- loop
- %>
- 26.0 数组函数
- 26.0.1 ubound 返回数组长度: ubound(arrayname)
- 26.0.2 erase 删除动态数组: erase arrayname
- 26.0.3 isarray 判断是否为数组: isarray(varname)
- 26. 数组操作
- 数组元素为: 索引与维
- 索引从 0 开始计数, 维从 1 开始.
- 25. 是否以 HTML 格式显示
- <%
- if request.Form("htmlon")="on" then
- title_=request.Form("title") '同上
- content_=request.Form("content")
- else
- title_=textToHtml(request.Form("title")) '同上
- content_=textToHtml(request.Form("content"))
- end if
- %>
- 24.3 接收列表表单并更新数据——表单
- <% if isempty(request("id")) then %>
- <%
- set rs=server.CreateObject("adodb.recordset")
- rs.open "select * from class order by classorder", MM_conn_String
- set rscount=server.CreateObject("adodb.recordset")
- rscount.open "select count(classorder) as rsc from class",MM_Conn_String
- %>
- <form ACTION="" METHOD="post" NAME="changeCO" ID="changeCO">
- <input NAME="classcount" TYPE="hidden" ID="classcount" VALUE="<%=rscount("rsc")%>">
- <% dim ir
- ir=0
- do while not rs.eof
- ir=ir+1
- response.Write rs("class")&" "%>
- <input NAME="c<%=ir%>" TYPE="hidden" ID="classid" VALUE="<%=rs("classid")%>">
- <select NAME="co<%=ir%>">
- <% for i=1 to rscount("rsc")
- response.Write "<option"
- if i= rs("classorder") then response.Write " selected" end if
- response.Write ">"&i&"</option>"
- next
- %>
- </select>
- <br>
- <% rs.Movenext
- loop%>
- <input TYPE="submit" NAME="Submit" VALUE="Submit">
- </form>
- <%
- rscount.close
- set rscount=nothing
- rs.close
- set rs=nothing
- %>
- <% elseif request("id")="upClassSort" then
- classcount_=request.Form("classcount")
- for i=1 to classcount_
- ci_=request.Form("c"&i)
- co_=request.Form("co"&i)
- 'response.Write ci_&" "
- 'response.Write "<p/>"
- 'response.Write co_&" "
- '更新数据
- set rsUpdate=server.CreateObject("adodb.connection")
- rsUpdate.open MM_conn_string
- '数字不加单引号, 字符加, 日期加井号
- sql= "update class set classorder="&co_&" where classid="&ci_
- rsUpdate.execute(sql)
- rsUpdate.close
- set rsUpdate=nothing
- next
- response.Write classSortUpFinished_
- end if %>
- 24.2 接收列表框数值——表单
- <form ACTION="" METHOD="post" NAME="select_" ID="select_">
- <% for i=1 to 10%>
- <select NAME="<%=i%>" >
- <% for ii=1 to 10 %>
- <option VALUE="<%=ii%>"><%=ii%></option>
- <% next %>
- </select>
- <% next%>
- <input TYPE="submit" NAME="Submit" VALUE="Submit">
- </form>
- <% '鎺ユ敹鍒楄〃鏁板€?
- for iii=1 to 10
- response.Write request.Form(iii)&" "
- next
- %>
- 24.1 接收复选框数值——表单
- <form ACTION="" METHOD="post" NAME="getcheckbox" ID="getcheckbox">
- <% for i=1 to 10 %>
- <%=i%><input NAME="checkvalue" TYPE="checkbox" ID="checkvalue" VALUE="<%=i%>">
- <% next %>
- <br>
- <input TYPE="submit" NAME="Submit" VALUE="Submit">
- </form>
- <% '接收复选框数值
- if request.Form("checkvalue")<>"" then '判断表单传递复选框数据是否为空
- dim checkboxvlue '定义变量, 以接收复选框数值
- checkboxvalue=request.Form("checkvalue") '赋值
- response.Write checkboxvalue '读出数值
- end if
- %>
- 23. 显示当前查询ID
- CInt(Request("classid"))
- 22. 获得当前 URL 查询字段 号码
- <%= CInt(Request("pageview"))%>
- //该语句获得 URL pageview 查询当前号码
- 21. 判断 URL 栏 查询 ID, 显示适当的内容
- <% if isempty(request("dayview")) and isempty(request("yearview")) and isempty(request("monthview")) and isempty(request("weekview")) and isempty(request("todayview")) then
- response.Write(errorCidNidAid_)
- '判断 ID 是否为空, 为真三秒后转回主页, 为假执行下面的条件
- %>
- <%elseif request("dayview")=request("dayview") and isempty(request("yearview")) and isempty(request("monthview")) and isempty(request("weekview")) and isempty(request("todayview")) then
- '如果查询ID = dayview, 并且 yearview, monthivew, weekview, todayview 为空, 显示下面的内容%>
- 显示查询天
- <%elseif request("yearview")=request("yearview") and isempty(request("dayview")) and isempty(request("monthview")) and isempty(request("weekview")) and isempty(request("todayview")) then
- '如果查询ID = yearview, 并且 dayview, monthivew, weekview, todayview 为空, 显示下面的内容%>
- 显示查询年
- <%elseif request("monthview")=request("monthview") and isempty(request("dayview")) and isempty(request("yearview")) and isempty(request("weekview")) and isempty(request("todayview")) then
- '如果查询ID = monthview, 并且 dayview, yearview, weekview, todayview 为空, 显示下面的内容%>
- 显示查询月
- <%elseif request("weekvive")=request("weekvive") and isempty(request("dayview")) and isempty(request("yearview")) and isempty(request("monthview")) and isempty(request("todayview")) then
- '如果查询ID = weekview , 并且 dayview, yearview, monthview, todayview 为空, 显示下面的内容%>
- 显示查询星期
- <%else '如果不符合以上条件, 显示下面的内容. "todayview=" %>
- 显示当前日期
- <%end if%>
- ---------------------------------
- 19. 数据更新操作——计数器加1
- <%
- set rsUp1 = Server.CreateObject("ADODB.Command")
- rsUp1.ActiveConnection = MM_conn_STRING
- rsUp1.CommandText = "UPDATE article SET hits=hits+1 WHERE articleid="&request("articleid")
- rsUp1.CommandType = 1
- rsUp1.CommandTimeout = 0
- rsUp1.Prepared = true
- rsUp1.Execute()
- %>
- 18.3 过程的混合运用——循环
- <% 'ASP 标签链接——方法1: 读取字符串, 并分割, 再循环显示数组的所有元素, 并加上链接
- do while not rsTag.eof '显示数据库表的所有数据
- tag_=replace(rsTag("tag"),","," ") '替换逗号为空格, 以分割词语
- for each i in SPLIT(tag_) '循环显示数组的每一个元素, 使用 split 函数时该函数自动建立数组
- response.Write "<a href="&t_&i&">"&i&"</a>"&" " '显示数组元素并加上链接
- next
- rsTag.MoveNext
- loop
- %>
- 18.2.3.1 显示 A - Z 的字母
- <%
- 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"
- for each letter in split(letters)
- response.write letter&"<br/>"
- next
- %>
- 18.2.3 显示数组或集合里的所有元素——循环
- <% for each i in myarray
- response.write i 'i 为数组元素
- Next
- %>
- 18.2.2 显示全部记录——循环
- <%
- do while not rs.eof
- response.write rs("title")
- rs.MoveNext
- loop
- %>
- 18.2.1 显示全部记录——循环
- <%
- dim rpall, rpp, rpcdt
- rpall=-1
- rpp=0
- rpcdt=0
- rpcdt=rpcdt+rpall
- while(rpall<>0) and (not rsClP.eof)
- response.Write(rsClP("class")&" ")
- rpp=rpall+1
- rpcdt=rpcdt-1
- rsClP.MoveNext()
- wend
- %>
- 18.1.1 显示 N 条记录
- <%
- for i=1 to rpp
- title_=rs("glossaryName")
- content_=rs("glossarycontent") %>
- <%=rs("glossaryname")%><br><br>
- <%=rs("glossarycontent")%>
- <%
- rs.movenext
- if rs.eof or rs.bof then exit for
- next %>
- 18.1 向下显示十多记录——循环
- <%
- dim rp_t, rp_p
- rp_t=10 '显示记录数目
- rp_p=0 '循环变量
- rs_numRows=numRows+rp_t
- %>
- <% while (rp_t<>0) and (not rs.eof)%>
- <%=rs.Fields.Item("title").Value%><br>
- <%
- rp_p=rp_p+1
- rp_t=rp_t-1
- rs.MoveNext()
- wend
- %>
- 17. 定义函数, 调用函数
- <%
- Function showF '定义函数 showF
- set rs=server.CreateObject("adodb.recordset") '建立 rs 数据查询
- rs.ActiveConnection=MM_conn_STRING 'rs 连接方式
- rs.Open "Select * from article where articleid=2227 ",MM_conn_STRING 'rs 查询语句
- response.Write(rs("articleid")) '显示查询
- rs.Close '关闭数据库连接
- Set rs = Nothing
- End Function '结束函数
- %>
- <%= showF '调用函数 %>
- 16. 判断 URL 地址栏的查询, 显示查询条件的内容
- <%
- if request("classid")=request("classid") and isempty(request("nclassid")) and isempty(request("yvvid")) then
- if request("classid")<>"" then
- classid = request("classid")
- else
- end if
- response.Write("<p/>classid")
- %>
- <%
- elseif request("yvvid")=request("yvvid") and isempty(request("classid")) and isempty(request("nclassid")) then
- response.Write("<p/>that's yvvid column")
- %>
- <% else %>
- ---------------------------------
- 1)如果查询字段 =classid 并且不包含 nclassid 和 yvvid 查询 , 执行 classid 查询.
- 2)如果查询字段 =yvvid 并且不包含 classid 和 nclassid 查询, 执行 yvvid 查询
- 3)显示 classid 和 nclassid 查询.
- 15. 页面选择框跳转
- <script language="JavaScript" type="text/JavaScript">
- <!--
- function MM_jumpMenu(targ,selObj,restore){ //v3.0
- eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
- if (restore) selObj.selectedIndex=0;
- }
- //-->
- </script>
- <form NAME="form1">
- <select NAME="menu1" onChange="MM_jumpMenu('parent',this,0)">
- <% for i=1 to rsn.PageCount %>
- <option VALUE="<%="nclass.asp?classid="&rqsc_&"&nclassid="&rqsnc_&"&pageno="&i%>" <% if PageNo=i then%> selected <%end if%>>
- <%=i%>
- </option>
- <%next%>
- </select>
- </form>
- ---------------------------------
- i=初始值, rsn.PageCount=总页面; PageNo 为当前页
- <% if PageNo=i then%> selected <%end if%>
- 上面语句判断如果是当前页, 调出 selected
- 14. 返回当前年月日星期
- <%=year(now())%> <br>
- <%=month(now())%><br>
- <%=day(now())%><br>
- <%=weekday(now())%><br>
- 13. 数据调用
- <%= rs.Fields.Item("data").Value%>
- rs 是函数名 data 是数据定义名
- 12. 用简单的 + - 实现上下页跳转
- ---------------------------------
- <% Dim subtraction1
- Dim plus1
- substraction1 = Request.QueryString("articleid")-1
- plus1 = Request.QueryString("articleid")+1 %>
- //定义变量, 然后用 Request.QueryString() 得到页面码数, 然后再加减1
- <a href="articles.asp?articleid=<%= substraction1 %>">Previous</a> | <a href="articles.asp?articleid=<%= plus1 %>">Next</a>
- //调用加减变量
- ---------------------------------
- 11. 使用JScript 你不能建立多维数组。JScript 中的所有数组对象都是一维的,有时这是很不方便的,有时你需要创建多维数组。
- 在JScript中怎样实现这一点呢?
- 很幸运,你可以建立一个数组的数组,一个数组对象的元素值可以是另一个数组对象。
- 10. JScript: 日期对象在1970年1月1日午夜之后,才开始跟踪日期,对象表示所有与这个特定历史时刻相关的日期和时间。
- 9. 注意JScript是一种区分大小写的语言。
- 8. 虽然数组的某一维的第一个索引值总是0,但其第一维总是用1表示,不要混淆了维数与索引。
- 7. 2维数组: 第一个索引指定行,第二个索引指定列。
- 6. ISEMPTY
- 在给一个变量分配一个值之前,该变量是空的。用函数ISEMPTY()可以检测一个变量是否为空。如下例所示:
- <%
- myvar=”Hello Magic!”
- %>
- myvar:<%=ISEMPTY(myvar)%>
- myvar2:<%=ISEMPTY(myvar2)%>
- 5. <%myvar=”Hello Magic!”%><%=TYPENAME(myvar)%>
- <%myvar=3%><%=TYPENAME(myvar)%>
- 在这个例子中,变量myvar被分配了两个不同数据类型的值。对每种类型的值,VBScript函数TYPENAME()可以显示该变量所代表的实际数据的子类型。例如,当给变量myvar分配字符串数据“Hello Magic!”时,variant型变量的子类型是string。当给变量myvar分配整数3时,myvar的子类型是integer。
- 4. 数字不用引号,字符串要用引号
- 3. OPTION EXPLLICIT
- 强制声明变量
- 2. NOW
- This page was created on :<%=NOW%>
- 1.5 if rs.eof or rs.bof then exit for 的使用顺序
- <%
- for i=1 to 50
- if rs.eof or rs.bof then exit for
- datevalue
- rs.movenext
- next
- %>
- //if rs.eof or rs.bof then exit for 应该紧接在 for 的下一行, 这样就不会出现最末一条数据显示二次的可能
- 1.4 在循环中 重复显示 id1 && id2
- <%'设计中用得到的循环, 例如 id1 id2
- for i=1 to 100
- if (i mod 2)=1 then
- cl_="cl1"
- else cl_="cl2"
- end if
- response.write i
- response.write " "
- response.write cl_
- response.write "<br/>"
- next
- %>
- 1.3 从 A 循环递减 1 至 B
- <%
- response.write "<select>"
- for i=20 to 8 step -1
- response.write "<option value="""&i&"px"">"&i&" px</option>"
- next
- response.write "</select>"
- %>
- 1.2
- <%'循环显示 1 至 50 中的 1 至 50
- for i=1 to 50
- response.write i&" <br/>"
- for j=1 to 50
- response.write j&" "
- next
- response.write "<p/>"
- next
- %>
- 1.1
- <%'循环显示 1 至 50 的全部数字
- for i=1 to 50
- response.write i&" "
- next
- %><br>
- <%'循环显示 1 至 50 的奇数
- for i=1 to 50
- response.write i&" "
- i=i+1
- next
- %><br>
- <%'循环显示 1 至 50 的偶数
- for i=1 to 50
- i=i+1
- response.write i&" "
- next
- %><br>
- 1. FOR
- <%FOR myvar=1 TO 500%>
- <%=myvar%><b>: Hello Magic!</b>
- <% NEXT %>
- 符号对<%和%>用来指明一个脚本,而符号对<%=和%>用来指明变量或函数的值。跟在表达式<%=后面的任何内容都将被打印在浏览器窗口中。
- 0. 语法开关
- 0.1 set xx="" | set xx=nothing
- 0.2 open.xx | xx.close
- 0.3 response.xx | response.end
- ---/---------------------------------------------------------
- Regular Expression
- 2. email 替换操作, 三级域名或以内, 本正则正常工作
- 'email 替换操作, email 替换为 <a href=mailto:email>email</a>
- Set re = New RegExp
- re.Pattern = "([/w-]+/.+[/w-]+/@+)([/w-]+/.+[/w-]+/.+|[/w-]+/.+)([/w{1}][/w{2}][/w{3}]|[/w{1}][/w{2}])"
- re.Global = true
- re.IgnoreCase = true
- result = re.Replace(result,"<a href=mailto:$1$2$3>$1$2$3</a>")
- ----------------------
- 'EMAIL 解码
- Set re = New RegExp
- re.Pattern = "(/<a href/=mailto/:)([/w-]+/.+[/w-]+/@+)([/w-]+/.+[/w-]+/.+|[/w-]+/.+)([/w{1}][/w{2}][/w{3}]|[/w{1}][/w{2}])(/>)(.*)(/<//a/>)"
- re.Global = true
- re.IgnoreCase = true
- Str = re.Replace(Str,"$6")
- 1. 匹配 URL, www. 不超过四可正常工作, 或者说不超过三级域名, 本正则可正常工作
- 'url 替换操作, www 替换为 <a href http://www>www</a>
- Set re = New RegExp
- re.Pattern = "(http/:|^http/:)([/w-]+/.+[/w-]+/.+[/w-]+/.+[/w-]+|[/w-]+/.+[/w-]+/.+[/w-]+)(/[/w-./?%&=]*)?"
- re.Global = true
- re.IgnoreCase = true
- result = re.Replace(result,"<a href http://$2$3 target=_blank>$1$2$3</a>")
- ----------------------
- 'URL 解码
- Set re = New RegExp
- 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/>)"
- re.Global = true
- re.IgnoreCase = true
- Str = re.Replace(Str,"$5$6$7$8")
- ---/---------------------------------------------------------
- Importan Skill
- 5. 解决 IIS6 默认 200KB 的限制
- cscript %systemdrive%/Inetpub/AdminScripts/adsutil.vbs set w3svc/ASPMaxRequestEntityAllowed 10,485,760
- 4. Open 方法
- 4.1 recordset.Open Source, ActiveConnection, CursorType, LockType, Options
- 4.2 connection.Open ConnectionString, UserID, Password, OpenOptions
- 3.2 取出所有数据
- <%
- mr=rs.getrows()
- for each i in mr
- response.write i&"<br/>"
- next
- %>
- 3.1 计算记录总数
- <%=rs.recordcount%>
- ----------------------
- !注意参数设置, 例
- rs.open sql, MM_conn_String,1
- 3. 数据操作
- 2. 过滤字符
- 原始
- <% myarray=split("articleid hits")%>
- <% myarray=filter(myarray,"articleid")%>
- <%=join(myarray)%>
- 该语句返回 articleid,作用是过滤掉所有不适合的字符.
- 复杂
- <%=join(filter(split("articleid hits"),"articleid"))%>
- //上面的例子过滤掉所有不是 articleid 的字符, 使用参数 false 则相反
- //例: <%=join(filter(split("articleid hits"),"articleid",false))%>
- //上面的语句过滤掉所有 articleid 字符
- //再例: join(filter(split(replace(("articleid,hits"),","," ")),"articleid"))
- //上面的例子加入了字符替换函数, 把","替换为空格
- 2006-5-4
- 1. 自动换行
- <%=Replace(Content,vbCrlf,"<br>")%> / <%=replace(content,chr(13),"<br/>"%>
- ---/---------------------------------------------------------
- 函数/Function
- 2. 智能 URL
- '智能 URL
- 'sample call: '''/// call fAiUrl("sortby","hanzifirst","by Hanzi") ///'''
- 'call fAiUrl("查询字符","替换值","显示文字")
- function fAiUrl(qtext,qvalue,qdsply)
- pv_=request(qtext)
- if rqq_="" then
- response.write "<a href=""?"
- response.write qtext
- response.write "="
- response.write qvalue
- response.write "#anchor"">"
- response.write qdsply
- response.write "</a> "
- elseif instr(rqq_,qtext)=0 then
- response.write "<a href=""?"
- response.write qtext
- response.write "="
- response.write qvalue
- response.write "&"
- response.write rqq_
- response.write "#anchor"">"
- response.write qdsply
- response.write "</a> "
- elseif instr(rqq_,qtext)<>0 then
- response.write "<a href=""?"
- response.write replace(rqq_,qtext&"="&pv_,qtext&"="&qvalue)
- response.write "#anchor"">"
- response.write qdsply
- response.write "</a> "
- else
- response.write "<a href=""?"
- response.write replace(rqq_,"&"&qtext&"="&pv_,"&"&qtext&"="&qvalue)
- response.write "#anchor"">"
- response.write qdsply
- response.write "</a> "
- end if
- end function
- 1. 文件名判断函数
- function getFileExtName(fName)
- 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
- getFileExtName=true
- else
- getFileExtName=false
- end if
- end function
- 应用:
- ------------------------------
- if getFileExtName(sfinfo.name) then '检查是否为图片
- sql = "INSERT INTO pic (ppsyp,pvirp,pname) VALUES ('"&sfinfo&"','"&sf.name&"/"&sfinfo.name&"','"&sfinfo.name&"') " '选择列, 并插入数据
- rsInsert.Execute(sql) '执行数据库插入语句
- end if
- ---/---------------------------------------------------------
- Gained Knowledge
- 16. 隐藏错误
- on error resume next
- 15. 表单传递变量时, 要判断子元素传递值为空, 应设置 value="" .
- 14. 使用函数时, 全部写上 call 关键字, 以便日后增加新功能.
- call fGlSbcatOpt(rgcid_,rgscid_)
- 13. 以一行写 if ... then 时, 可以嵌套使用 if ... then
- if sbid<>"" then if cstr(sbid)=cstr(rs1("gscid")) then response.write " selected=""selected"""
- 12. 当以一行使用 if...then...end if 时, 不需使用 end if
- 11. 开发时, 应建立一个调试站, 和一个显示站, 某阶段调试完毕再更新显示站
- 10. 数据连接参数应该在 HTML 标签之前
- 9. 定义页面变量不要把 URL/链接 也定义进去
- 8. 如何读出 ACCESS的 OLE 对象 和 编辑 ACCESS 中的 OLE 对象.
- 这跟其他操作一样, 只是判断类型有一点差别.
- 一般数据可以用 **="", OLE 对象 须用 isNull(**). (也可以用 len, 问题是这个判断不够通用. )
- 7. 一行为多个变量赋值
- dim a, b
- a="a":b="b"
- 6.1 asp 代码范围 使用 _ 连接下一行
- if rcombine_="" then id_=rs("gcid"):cat_=rs("gcat"):_
- rdoName_="rdoGlSpcat"
- 6. SQL 操作语句使用 &_ 连接下一行
- 5. ASP 尽量不要使用 & 连接符, & 连接符需要费时, 改用 response.write ""
- 4. 函数文件 查询连接名 不要定义为 rs, 定义为 rs1,rs2....
- 3. 使用函数, 应当在函数里判断条件是否满足, 不要在函数以外判断函数内的条件.
- 2. 链接到脚本页, 用 "?"; 连接到本页用 "", ASP 中用双引号为 """".
- 例: <a href="">管理首页</a><p/>
- 1. 排序 和 页面链接 应当使用文本框, 自定义输入.
- ! 不要使用列表框, 数据多的时候简直是折磨人.
- 10:28 2006-5-17
- ------------------------------
- 性能优化-ASP
- 2. 数据库应该加入索引
- //作用是查询执行得高效, 更新添加数据降低性能.
- //但查询使用频率远远比更新添加数据使用得多
- 1. 少用 & 字符, 再少用 & 字符
- //这个字符很浪费时间
- ---/---------------------------------------------------------
- Problems list | Current Item: 5
- 5. ASP 生成 PDF
- 4. ASP 得到图片的宽度
- ------------------------------
- Problems list - Finished
- 2. 以星期方式跳转, 解决 31 号后的问题. 21:11 2006-6-9
- 1. 页面循环显示, 判断空数据的ID并跳过 10:24 2006-5-17
- 3. 多参数翻页输入框 10:23 2006-5-17
- ---/---------------------------------------------------------
- General Knowledge
- 4. 字符函数
- 4.1 分割字符串函数 split
- //split 默认以空格分割字符串
- //split 可以指定分割字符识别符,如: split(string,",")
- 3. 退出流程语句
- 3.1.1 退出 for: if condition=match then exit for
- 3.1.2 退出 for: if rs.eof or rs.bof then exit for
- 3.2 退出 do: if condition=match then exit do
- 3.3 判断变量是否为数字: if not IsNumeric(rspid) then exit function
- 2. 函数ISEMPTY()可检测一个变量是否为空, 只有一个从未被赋过值的变量才是空变量.
- 1. 显示变量属性
- <%
- k=request.ServerVariables("SCRIPT_NAME")
- response.write k
- response.write typename(k)&"<br/>"
- %>
ASP 初阶笔记 By Shawl.qiu
最新推荐文章于 2024-04-25 20:22:26 发布