网页特效代码┊JsCode.CN
网页特效代码 您的位置:首页 > 网页制作教程 > 动态网站制作
RSS订阅

[推荐]ASP初阶笔记

[ 发布者:佚名┊来源:网络整理┊时间:2006-08-16┊浏览: 人次 ]

声明:
本文全部内容为 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)&"&nbsp;"
    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>"&"&nbsp;" '显示数组元素并加上链接
        
        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漏洞集-ASP漏洞分析和解决方法
1 在ASP程序后加个特殊符号,能看到ASP源程序  受影响的版本:  win95+...
用AJAX技术来实现天气预报功能
  index.html<scripttype="text/javascript"language="java...
ASP教程:第十二篇 数据库查询语言(1...
  原定计划从本篇开始就要给大家介绍 ASP 内建的 ActiveX 组件,但是考...
CopyRight © 2005-2008 JsCode.CN All Rights Reserved
网页特效代码┊JsCode v3.0 Designed By 在远方
说明:本站提供最新精选的免费网页特效代码,包括网页背景特效,网页文字特效,网页图片特效,导航菜单特效代码等20多种常用网页特效代码下载,以及Flash特效,网页模版,字体大全,字体下载等网页制作特效素材资源。网页特效代码欢迎您的光临!