ASP脚本变量、函数、过程和条件语句
ASP脚本变量、函数、过程和条件语句
通过上面的学习,大家应该已经能够理解函数在程序中的作用,当然我们不必去死背函数,但要做到熟练运用只有一条捷径 -- 多实践。接下来让我们来看看 VBScript 的基本语法。
了解编程语言的朋友一定知道在程序中控制程序流程的语句主要可以分为条件语句和循环语句,在 VBScript 中可使用以下条件语句: If...Then...Else 语句
在上一期中作者向诸位简要介绍了 ASP 脚本语言之一 VBScript 的一些基本常识,本期将继续给大家讲解 VBScript 的脚本编写方法,并通过展示 VBScript 在ASP 程序编写过程中的一系列实例使大家对 VBScript 有更进一层的理解。
大家在学习了脚本语言 VBScript 的变量、常量和过程的基本概念后,本期将继续向各位介绍 VBScript 的函数和语法。
Your First Name< INPUT NAME="FirstName" MaxLength=20>< p>
Your Last Name< INPUT NAME="LastName" MaxLength=20>< p>submit>< INPUT TYPE=reset>
Hi.Your name reminds me of someone,but I am not sure who!< p>
< % else %>
Hi!Nice to Meet You
< % end if %>
可以添加任意多个 ElseIf 子句以提供多种选择。但使用多个 ElseIf 子句经常会使程序变得很累赘。在多个条件中进行选择的更好方法是使用 Select Case 语句。
第三章 ASP脚本语言-VBScript
VBScript函数
字符串函数
与C语言系统函数类似
可以使用字符串函数对字符串进行截头去尾和大小 写转换等操作 表3-7
日期和时间函数
可以使用日期和时间函数来得到各种格式的日期 和时间。如:Now()取得系统当前的日期和时间。 Date()取得系统当前的日期。
表3-8 日期类型的数据包含了日期、时间两部分内容,日期常 量用#包含起来,如#2006-9-3 9:53:26#。
变长数组 P51
数组示例
数组.swf
源文件
显示结果
二维数组示例
A(0,0) A(1,0) A(2,0)
源文件
A(0,1) A(1,1) A(2,1)
A(0,2) A(1,2) A(2,2)
显示结果
运算符
算术运算:加、减、乘、除、求余 a+b a-b a*b a/b a mod b
字符串运算符与字符串表达式
结果 False True False True False True True
逻辑运算符与逻辑表达式
逻辑运算符:Not,And,Or Xor Eqv Imp
例:用人单位招聘秘书:年龄小于40岁,女性,学历专科或本科:
写成条件VB的表达式: 年龄<=39 And 性别=“女” And (学历=“专科” Or 学历=“本科”)
几种常用的常量 数值型常量,如281,-5.04等。 字符串常量采用双引号,如"hello,everyone!","","d"等。
日期型的常量采用##,如#2004-1-4#, #2004-12-23 13:45:12#
Boolean型的常量只有两个:True, False
ASP教程:ASP脚本循环语句
在本文上两篇中,我们学习了脚本语言 VBScript 的变量、函数、过程和条件语句,本篇将继续给大家介绍 VBScipt 的循环语句,并对脚本语言在 ASP 中的应用加以总结。
如果有人告诉你学习 ASP 不需要任何编程知识,那么他错了;如果我告诉你学习 ASP 必须掌握一门编程语言,那么我错了。
ASP 动态服务器页面环境的特点就在于它是通过一种或几种脚本语言而写成的,脚本语言可以看作是编程语言的简化版,它易于学习和掌握,这给广大动态网站的设计者们提供了相当大的便利。
可以这么说 : 脚本语言运用的得当与否直接关系到 ASP 应用程序的优与劣。
继上一篇我们学习了脚本语言 VBScript 的函数和条件语句后,今天我们继续来看看VBScript 中的循环语句。
循环语句的作用就是重复执行程序代码,循环可分为三类:一类在条件变为“假”之前重复执行语句,一类在条件变为“真”之前重复执行语句,另一类按照指定的次数重复执行语句。
在 VBScript 中可使用下列循环语句:Do...Loop: 当(或直到)条件为“真”时循环。
While...Wend: 当条件为“真”时循环。
For...Next: 指定循环次数,使用计数器重复运行语句。
For Each...Next: 对于集合中的每项或数组中的每个元素,重复执行一组语句。
我们先来看看 Do...Loop,它是可以多次(次数不定)运行语句块。
当条件为“真”时或条件变为“真”之前,重复执行语句块。
请看下例: < html>< head>< title>DoLoop.asp< /title>< body bgcolor="#FFFFFF">< /head>< p>< /p>< p>请将今年到本月为止的每个月份的销售结算记录填写在本页之上。
< P>< %counter = 1thismonth = month(now())Do while counter < thismonth + 1response.write " " & counter & " 月份 : "response.write "______________________________" & "< BR>< br>"If counter >13 thenexit doend ifcounter = counter+1Loop%>< hr>< /body>< /html>这段 ASP 程序运用循环语句制作了一张销售结算记录表,将以上代码剪贴至记事簿保存为 DoLoop.asp,并在浏览器中以 HTTP 方式进行浏览,根据当前的月份的不同,你将看到如下图的结果。
ASP VBScript过程与函数
ASP VBScript过程与函数使用过程,可以将程序列划分成一个个较小的逻辑单元。
过程中的代码能够反复被调用,这样就可以减少不必要的重复。
VBScript根据是否返回值,将过程划分为Sub过程Function过程两大类。
一般情况下将Sub称为过程,而把Function称为函数。
1.Sub过程Sub过程是包含在Sub和End Sub语句之间的一组VBScript语句,执行操作但没有返回值。
Sub过程可以使用参数(由调用过程传递的常数、变量或者表达式)。
如果Sub过程无任何参数,则Sub语句必须包含空括号()。
下面的代码示例是一个不带任何参数的Sub过程,弹出一个消息框,显示字符串"你好,我在学习ASP"。
Sub Test()Msgbox("你好,我在学习ASP ")End SubSub过程还可以使用参数,下面就是一个带两个参数的Sub过程,弹出消息框,显示两个参数的和:Sub AddNumber(i,j)Dim aa=i+jMsgBox aEnd SubSub过程的调用很简单,只需输入过程名及所有参数值,参数值之间使用逗号分隔即可。
另外一种调用方法是使用Call语句,但如果使用了Call语句,则必须将所有参数包含在括号之中。
调用过程的必须是一个独立的语句。
在过程中还可以用Exit Sub语句强制从过程中退出并且返回。
例如,下面的示例显示了调用上述带参数过程AddNumber的两种方式。
一种使用Call语句;另一种则不使用,两种方式效果相同。
Call AddNumber (1984,25)AddNumber 1984,25当不使用Call语句调用过程时,括号被省略;使用Call语句调用过程时,要用括号并且包含所有参数。
2.Function函数Function函数是包含在Function和End Function关键字之间的一组VBScript 语句。
Function函数通过函数名返回一个值,这个值在函数内赋给函数名。
ASP 条件语句
ASP 条件语句条件语句的作用是对一个或多个条件进行判断,根据判断的结果执行相关的语句。
VBScript的条件语句主要有两种,即If Then…Else语句和Select…Case语句。
1.If Then…Else语句If Then…Else语句根据表达式是否成立执行相关语句,因此又被称作单路选择的条件语句。
使用If Then…Else语句的方法如下所示。
语法格式:IF Condition Then[statements]End If或者,IF Condition Then [statements]在If...Then语句中,包含两个参数,分别为Condition和statements参数。
●Condition参数为必要参数,即表达式(数值表达式或者字符串表达式),其运算结果为True或False。
另外,当参数condition为Null,则参数condition将视为False。
●statements参数由一行或者一组代码组成,也称为语句块。
但是在单行形式中,且没有Else子句时,则statements参数为必要参数。
该语句的作用是表达式的值为True或非零时,执行Then后面的语句块(或语句),否则不作任何操作。
If...Then...Else 语句的一种变形允许从多个条件中选择,即添加ElseIf子句以扩充If...Then...Else 语句的功能,使可以控制基于多种可能的程序流程。
详细的用户可以添加任意多个ElseIf子句以提供多种选择。
使用多个ElseIf子句经常会变得很累赘。
在多个条件中进行选择的更好方法是使用Select Case语句。
例如,判断变量a 和b 的值,当a 大于b 时,输出a 的值。
否则就输出b 的值。
文件名:compare.aspDim a,ba=100'声明变量a 并赋值为100b=90'声明变量b 并赋值为90If a>b Then'当a 大于b 时a=a'a 的值不变Else'否则a=b'a 等于bEnd If'结束If Then …Else 语句response.Write("两个数比较显示最大值:"&a)'输入a 值在【Internet 信息服务】窗口中,选择该虚拟站点,并右击右侧该文件,执行【浏览】命令,将显示两个数的最大值,如图3-1所示。
asp教程
asp教程ASP(Active Server Pages)是一种由Microsoft开发的服务器端技术,用于动态生成和交互式网页。
下面是ASP的一些基本概念和用法。
1. ASP基本语法ASP使用尖括号 "<%" 和 "%>" 标记来包围服务器端代码。
例如:```asp<%Response.Write "Hello, World!"%>```2. 变量和数据类型在ASP中,可以使用 "Dim" 关键字声明变量,并指定其数据类型。
常用的数据类型包括字符串(String)、整数(Integer)、浮点数(Double)等。
3. 条件语句和循环语句ASP支持常见的条件语句和循环语句,例如if语句、for循环和while循环等。
通过这些语句,可以根据不同的条件执行不同的代码块,或者重复执行一段代码。
4. 表单处理在ASP中,可以通过表单来接收用户的输入,并进行相应的处理。
使用"Request.Form"对象可以获取表单数据的值,然后可以对其进行验证和处理。
5. 数据库访问ASP可以连接和操作各种类型的数据库,如Microsoft SQL Server、MySQL等。
可以使用ADO对象(ActiveX Data Objects)来执行SQL查询和更新操作。
6. 错误处理和调试对于可能发生的错误,ASP提供了一些处理方法,如使用Try-Catch块来捕获异常并进行相应的处理。
还可以通过日志记录或输出错误信息来帮助调试程序。
7. 会话管理ASP提供了会话管理功能,可以跟踪用户的访问,并在多个页面之间共享数据。
可以使用Session对象来存储和获取会话变量的值。
以上是ASP的一些基本概念和用法,通过学习和掌握这些内容,可以开始使用ASP开发动态网页和Web应用程序。
第三章 ASP脚本语言
引用数组变量:数组名(索引号)
注:0≤索引号≤数组长度 例:Dim a(10) ‘数组个数为11
a(0)=500
2.二维数组:Dim 数组名(行长度,列长度) 例:Dim a(3,6) 3.动态数组:变长数组
显示结果
源文件
18
动态数组实例
Web 程 序 设 计 19
<% Dim a() Redim a(3) a(3)=“上海” Redim a(5) a(5)=“深圳” %>
„定义一个变长数组 „使用时Redim该数组 „可以多次Redim该数组
3.2.5 IF条件语句
Web 程 序 设 计 20
1. If条件语句
VBScript中的数据子类型见P110。
VBScript常量
直接常量:可以从字面形式上辨别出来的常量, 即常数。
例如: 200:整数常量 ; “中国”:字符串常量 #2010-1-12# :日期常量或时间常量
Web 程 序 设 计 7
符号常量:拥有一个名字来代表一个字符串、数 字、日期等常数。符号常量一经定义,其值将不 能再更改。
ElseIf 条件表达式2 Then
程序语句块2 ……
Else
程序语句块N+1 End If
条件表达式的结果类型一定是布尔型,即不是true就为false。
IF语句实例
Web 程 序 设 计
显示结果 源文件
22
3.2.6 Select条件语句
Web 程 序 设 计 23
语句格式:
Select Case 变量或表达式 Case 结果1 程序语句块1 Case 结果2 程序语句块2 …… Case 结果n 程序语句块n Case Else 程序语句块n+1 End Select
asp 脚本语言(一)
《WEB 开发技术》实验指导书实验 01ASP 脚本语言(一) 脚本语言(一、实验目的数据类型、变量/常数 数组、运算符及流程控制 常数、 掌握 VBScript 数据类型、变量 常数、数组、运算符及流程控制二、实验内容(文件名中的 XX 实验内容(1、变量 、用学号代替)实验说明:变量的有限范围: 实验说明 : 变量的有限范围 : Page Level(全局变量 Public)和 Sub/Function Level(局部变量 Private) 实验范例[文件名 文件名: 实验范例 文件名:XX_2_01.asp]:请调试如下程序,并回答问题! : Option Explicit ‘强制一定要声明变量 强制一定要声明变量 Dim intNum ‘Public 变量IntNum=10 ‘制定初值 制定初值 MySub1 MySub2 MySub3 ‘显示 intNum 的初始值 显示 ‘intNum 将被改变成 20 ‘拥有自己的 intNum 局部变量 拥有自己的Response.write “intNum=” & intNum & “<br>”Sub MySub1() Response.write “intNum=” & intNum & “<br>” End sub Sub MySub2() IntNum=20第 1 页 共 8 页沙洲工学院电信系《WEB 开发技术》实验指导书Response.write “intNum=” & intNum & “<br>” End sub Sub MySub3() Dim intNum IntNum=30 Response.write “intNum=” & intNum & “<br>” End sub变量的值是哪一个?为什么? 问题 1:最后 intNum 变量的值是哪一个?为什么? :2、数组 、 实验说明:数组的声明、赋值与引用 实验说明:数组的声明、赋值与引用 文件名: 实验范例[文件名 : 实验范例 文件名:XX_2_02.asp]:请调试如下程序! Option Explicit Dim I Dim aryName(2) ‘共 3 个数组字符 共 AryName(0)=”Jack” AryName(1)=”John” AryName(2)=”Me” For I=0 to UBound(aryName) ‘数组字符的上限值 数组字符的上限值 Response.write “第” & I & “个数组字符:” & aryName(I) & 个数组字符: 第 个数组字符 “<br>” Next 3、常量 、 实验说明:常量的声明(用 语句)、赋值与引用 实验说明:常量的声明 用 Const 语句 、赋值与引用 的声明 实验范例[文件名 文件名: : 实验范例 文件名:XX_2_03.asp]:请调试如下程序,并回答问题! <html>沙洲工学院电信系第 2 页 共 8 页《WEB 开发技术》实验指导书<head><title>求取圆周长 求取圆周长</title> 求取圆周长 <script Language=”VBScript”> <!-Option Explicit Const cntPI=3.14159 Sub Cal_Circus() Dim sngCircus,sngR sngR=CSng(document.frm1.R.Value) sngCircus=2*cntPI*sngR MsgBox “圆周长为:” & sngCircus & “!” 圆周长为: 圆周长为 End sub --> </script> </head> <body> <h3>求取圆周长 求取圆周长</h3> 求取圆周长 <!-- 将窗体的名称取为 “frm1”--> <form method=”post” name=”frm1”> 请输入半径: 请输入半径:<input name=”R” maxlength=6 size=6><br> <hr> <!--按下计算按钮后,将执行 Cal_Circus 子程序 按下计算按钮后, 子程序--> 按下计算按钮后 <input type=button value=”计算 onclick=”Cal_Circus”> 计算” 计算 <input type=reset value=”清除 清除”> 清除 </form> </body> </html> 问题 2:如何计算圆的面积?写出代码? :如何计算圆的面积?写出代码? 问题 3:如果将文件扩展名改为 htm,是否也可以执行,为什么? : ,是否也可以执行,为什么?沙洲工学院电信系第 3 页 共 8 页《WEB 开发技术》实验指导书4、运算符 、 实验说明: 实验说明:运算符包括 、减(-) 、乘(*) 、除(/) 、负数(-) 、 (1) 算术运算符{包括:加(+) )取商数(\) 、取余数(Mod)}; 、小于(<) 、大于等于(>=) 、小 (2) 比较运算符{包括:大于(>) ) 于等于(<=) 、等于(=) 、不等于(<>)与 IS(判断两个变量 是否参照同一个对象, ”是”返回 True, ”否”返回 False。
ASP基础入门第三篇(ASP脚本基础)
ASP基础⼊门第三篇(ASP脚本基础)下⾯就先请⼤家跟我来学习⼀些ASP 中应⽤脚本语⾔(以VBScript 为主)的基础知识。
在开始学习脚本语⾔之前,你应该理解⼀些简单的概念 -- 变量、进程。
所谓变量是计算机内存中已命名的存储位置,其中包含了数字或字符串等数据,它使⽤户便于理解脚本操作的名称,为⽤户提供了⼀种存储、检索和操作数据的途径。
程序是由⼀个或多个进程组成的,在 VBScript 中,进程就是“指令块”,通常意义上的进程,如 Sub,只是为了简单的数据处理。
在 VBScript 中,严格的来讲变量是不⽤声明的, 如:< % Mystring="This is my string" % > 然⽽,即使在使⽤变量前不需要去声明变量,也应养成在编程时声明变量的良好习惯,因为这样有助于防⽌错误发⽣。
声明⼀个变量意味着告诉脚本引擎,有⼀个特定名称的变量,这样就可以在脚本中引⽤该变量。
在 VBScript 中声明⼀个变量可以使⽤“Dim”语句,如下:< script language="VBScript" > < !-- Option Explicit ' 要求在脚本中声明所有的变量 Dim Mystring Mystring="This is my string" -- > < /script> 变量的作⽤域即⽣命期,决定哪些脚本命令可访问变量。
在过程内部声明的变量具有局部作⽤域。
每执⾏⼀次过程,变量就被创建然后消亡。
⽽过程外部的任何命令都不能访问它。
在过程外部声明的变量具有全局作⽤域,其值能被 ASP 页上的任何脚本命令访问和修改。
声明变量时,局部变量和全局变量可以有相同的名称。
⽽改变其中⼀个的值并不会改变另⼀个的值。
如果没有声明变量,则可能不⼩⼼会改变⼀个全局变量的值。
例如,以下脚本命令返回值 1,虽然有两个名为 Y 变量:< % Dim YY = 1Call SetLocalVariableResponse.Write Y Sub SetLocalVariable Dim Y Y = 2End Sub % > 由于变量没有显式声明,以下的脚本命令将返回 2。
ASP脚本语言VBScript.
第三章
ASP脚本语言—VBScript
4. For Each...Next语句:是对于数组中的每个元素或对象集合中的每一项 都执行一组相同的操作。如果不知道数组元素或对象 集合中项目的具体数目时,For Each...Next尤其有用。
语句格式:
For Each 集合中元素 In 集合 [命令1]
第三章
ASP脚本语言—VBScript
【例】 格式1:先判断循环条件:
Sub add()
Dim num,sum num=1 sum=0
Do While
num<=50
sum=sum+num num=num+1 loop end sub
【例】格式2:执行一次循环后判断条件: Sub add() Dim num,sum num=1 sum=0 Do sum=sum+num num=num+1 loop While num<=50 end sub
Sub子过程的格式为: 定义过程:Sub<子过程名><([形式参数])> [命令] End Sub
调用过程:Call<子过程名>[([实际参数])]
⊙
第三章
ASP脚本语言—VBScript
【例3-5】使用不带参数和带参数两个过程编程。 <html> <head> <script language="vbscript"> sub xm() dim name name=prompt("请输入您的姓名") document.write("欢迎您,"&name&"!"&"<p>") end sub sub pf(a) '定义pf过程,参数为a dim s 在VBScript s=a*a 中使用HTML document.write("A的平方="& s) 标记,一定 end sub 要放在输出 </script> 语句中作为 </head> 字符串格式 <body> <script language="vbscript"> 输出。 call xm a1=prompt("请输入A值") call pf(a1) '调用pf过程,并将实际参数a1的值传递给形式参数a </script> </body> </html>
ASP 函数大全及使用技巧
附录一、ASP 函数大全1.函数array()功能:创建一个数组变量格式:array(list)参数:list为数组变量中的每个数值列,中间用逗号间隔例子:<%i=array("1","2","3")%>结果:i被赋予为数组2.函数Cint()功能:将一表达式/其它类型的变量转换成整数类型(int)格式:Cint(expression)参数:expression是任何有效的表达式/其它类型的变量例子:<%f="234"Response.write Cint (f)+2%>结果:236函数Cint()将字符"234"转换成整数234.如果表达式为空,或者无效时,返回值为0;3.函数:Createobject()功能:创建及返回一个ActiveX对象.格式:Createobject(obname)参数bname是对象的名称例子:<%Setcon=Server.CreateObject("ADODB.Connection")%>4.函数Cstr()功能:将一表达式/其它类型的变量转换成字符类型(string)格式:Cstr(expression)参数:expression是任何有效的表达式/其它类型的变量例子:<%s=3+2Response.write"Theresultis:"&cStr(s)%>结果:函数Cstr()将整数5转换成字符"5".5.函数Date()功能:返回当前系统(Server端)的日期格式:Date()参数:无例子<%date()%>结果:05/10/006.函数Dateadd()功能:计算某个指定的时间和格式:dateadd(timeinterval,number,date)参数:timeinterval是时间单位(月,日..);number是时间间隔值,date是时间始点.例子:<%currentDate=#8/4/99#newDate=DateAdd("m",3,currentDate)Response.write newDate%><%currentDate=#12:34:45PM#newDate=DateAdd("h",3,currentDate)Response.write newDate%>结果:11/4/993:34:45PM其中"m"="month";"d"="day";如果是Current Date格式,则,"h"="hour";"s"="second";7.函数Datediff()功能:计算某量个指定的时间差格式:datediff(timeinterval,date1,date2[,firstdayofweek[,firstdayofyear]])参数:timeinterval是时间单位;date1,date2是有效的日期表达式,firstdayofweek,firstdayofyear是任意选项.例子:<%fromDate=#12/25/2004#toDate=#7/26/2005#Response.write "从12/25/2004 到7/26/2005 共有"&_DateDiff("d",fromDate,toDate)&_" 天" %>结果: 从12/25/2004 到7/26/2005 共有213 天8.函数day()功能:返回一个整数值,对应于某月的某日格式:day(date)参数:date是一个有效的日期表达式;例子<%=date(#8/4/99#)%>结果:49.函数formatcurrency()功能:转换成货币格式格式:formatcurrency(expression[,digit[,leadingdigit[,paren[,groupdigit]]]])参数:expression是有效的数字表达式;digit表示小数点后的位数;leadingdigit,paren,groupdigit 是任意选项.例子<%=FormatCurrency(34.3456)%>结果34.3510.函数Formatdatetime()功能:格式化日期表达式/变量格式: FormatDateTime (date[,nameformat])参数:date为有效的日期表达式/变量;nameformat是指定的日期格式常量名称.例子<%= FormatDateTime ("12/23/65",vblongdate)%>结果: 1965年12月23日此表达式已被格式化为日期或时间。
2.3 ASP内建函数、过程、自定义函数
vbscript
Do循环语句: 格式: Do 语句 Loop while 条件
注:先执行后判断
vbscript
例5:返回循环次数
<script language=vbscript> Dim counter, myNum counter = 0 myNum = 9 Do myNum = myNum - 1 counter = counter + 1 Loop While myNum > 10 MsgBox "循环重复了 " & counter & " 次。" </script>
vbscript
Msgbox函数: 功能: 弹出信息框 格式: msgbox“信息框显示的内容”
vbscript
例1:单击按钮弹出信息窗口
<html> <head><title>测试按钮事件</title> <script language=vbscript> sub button1_onclick() msgbox“按钮被单击!” end sub </script></head> <body> <form name="form1"> <input type="button" name="button1" value="单击"> </form></body></html>
MyString2 = Replace("XXpXXPXXp", "p", "Y", 3, -1, 1) Document.write mystring1&"<br>" Document.write mystring2&"<br>" </script>
ASP 变量
ASP 变量变量是在计算机内存中占据一定的存储单元,并切其值可以改变。
该存储单元可以存储Script运行时的程序信息。
使用变量时并不需要知道变量在内存中的地址,而只要过变量名即可引用其中的数值或者更改变量的数值。
由于在VBScript中只有一个基本数据类型,即Variant,因此所有变量的数据类型都是Variant。
1.声明变量声明变量的方式可分为显式和隐式。
显式声明变量就是在<Script>标记中使用D如果需要还可以同时声明多个变量。
声明多个变量时,需要使用逗号分隔变量。
例如下面的语句:隐式声明变量的方法是通过省略Dim关键字,直接在脚本代码中使用变量。
这通常不是一个好习惯,因为这样有时会由于变量名被拼错而导致在运行脚本代码时出现意外的结果。
因此,最好将Option Explicit语句作为脚本的第一条语句,以便强制使用变量时必须显式声明所有变量。
声明变量时,队变量命名必须遵循VBScript的命名规则。
变量命名必须遵循:●第一个字符必须是字母。
●不能包含嵌入的句点。
●长度不能超过255个字符。
●在被声明的作用域内必须惟一。
●不能与VBScript的关键词相同。
2.变量的作用域变量的作用域由定义它的位置决定。
如果在过程中定义变量,则只有该过程中的代码可以访问或者修改变量的数值,此时变量具有局部作用域并被称为过程级变量。
如果在过程之外定义变量,则该变量可以被整个脚本代码中的所有过程访问,这种变量称为脚本级变量,具有脚本级作用域。
对于过程级变量,其有效期为过程运行的时间,该过程结束后,变量也随之消失。
对于脚本级变量的有效期是从定义变量的那一刻起,直到脚本运行结束为止。
例如,下面的代码定义了同名的两个变量:图2-1 脚本级与过程级变量比较。
asp命令
asp命令<%语句……%><2>定义变量dim语句<%dim a,ba=10b=”ok!”%>注意:定义的变量可以是数值型,也可以是字符或者其他类型的<3>简单的控制流程语句1. if 条件1 then语句1elseif 条件2 then语句2else语句3endif2.while 条件语句wend3.for count=1 to n step m语句1exit for语句2next二.asp数据库简单*作教程<1>.数据库连接(用来单独编制连接文件conn.asp)<%set conn = server.createobject("adodb.connection")conn.open "driver={microsoft access driver (*.mdb)}; dbq=" &server.mappath("\bbs\db1\user.mdb")%>(用来连接bbs\db1\目录下的user.mdb数据库)<2>显示数据库记录原理:将数据库中的记录一一显示到客户端浏览器,依次读出数据库中的每一条记录如果是从头到尾:用循环并判断指针是否到末使用: not rs.eof如果是从尾到头:用循环并判断指针是否到开始使用:not rs.bof (包含conn.asp用来打开bbs\db1\目录下的user.mdb数据库) <%set rs=server.createobject("adodb.recordset") (建立recordset 对象)要显示的数据所存放的数据表)rs.open sqlstr,conn,1,3 ---->(表示打开数据库的方式)rs.movefirst ---->(将指针移到第一条记录)while not rs.eof ---->(判断指针是否到末尾)response.write(rs("name")) ---->(显示数据表message中的name字段)rs.movenext ---->(将指针移动到下一条记录)wend ---->(循环结束)------------------------------------------------------rs.closeconn.close 这几句是用来关闭数据库set rs=nothingset conn=nothing-------------------------------------------------------%>其中response对象是服务器向客户端浏览器发送的信息<3>增加数据库记录增加数据库记录用到rs.addnew,rs.update两个函数(包含conn.asp用来打开bbs\db1\目录下的user.mdb数据库) <%set rs=server.createobject("adodb.recordset") (建立recordset 对象)sqlstr="select * from message" ---->(message为数据库中的一个数据表,即你要显示的数据所存放的数据表)rs.open sqlstr,conn,1,3 ---->(表示打开数据库的方式)rs.addnew 新增加一条记录rs("name")="xx" 将xx的值传给name字段rs.update 刷新数据库------------------------------------------------------rs.closeconn.close 这几句是用来关闭数据库set rs=nothingset conn=nothing-------------------------------------------------------%><4>删除一条记录删除数据库记录主要用到rs.delete,rs.update(包含conn.asp用来打开bbs\db1\目录下的user.mdb 数据库) <%dim namename="xx"set rs=server.createobject("adodb.recordset") (建立recordset对象)要显示的数据所存放的数据表)rs.open sqlstr,conn,1,3 ---->(表示打开数据库的方式)-------------------------------------------------------while not rs.eofif rs.("name")=name thenrs.deleters.update查询数据表中的name字段的值是否等于变量name的值"xx",如果符合就执行删除,else 否则继续查询,直到指针到末尾为止rs.movenextemd ifwend------------------------------------------------------------------------------------------------------------rs.closeconn.close 这几句是用来关闭数据库set rs=nothingset conn=nothing-------------------------------------------------------%><5>关于数据库的查询(a) 查询字段为字符型<%dim user,pass,qq,mail,messageuser=request.form("user")pass=request.form("pass")qq=request.form("qq")mail=request.form("mail")message=request.form("message")if trim(user)&"x"="x" or trim(pass)&"x"="x" then (检测user 值和pass值是否为空,可以检测到空格)response.write("注册信息不能为空")elseset rs=server.createobject("adodb.recordset")sqlstr="select * from user where user="&user&"" (查询user 数据表中的user字段其中user字段为字符型)rs.open sqlstr,conn,1,3if rs.eof thenrs.addnewrs("user")=userrs("pass")=passrs("qq")=qqrs("mail")=mailrs("message")=messagers.updaters.closeconn.closeset rs=nothingset conn=nothingresponse.write("注册成功")end ifrs.closeconn.closeset rs=nothingset conn=nothingresponse.write("注册重名")%>(b)查询字段为数字型<%dim numnum=request.form("num")set rs=server.createobject("adodb.recordset")sqlstr="select * from message where id="&num (查询message数据表中id字段的值是否与num相等,其中id为数字型)rs.open sqlstr,conn,1,3if not rs.eof thenrs.deleters.updaters.closeconn.closeset rs=nothingset conn=nothingresponse.write("删除成功")end ifrs.closeconn.closeset rs=nothingset conn=nothingresponse.write("删除失败")%><6>几个简单的asp对象的讲解response对象:服务器端向客户端发送的信息对象,包括直接发送信息给浏览器,重新定向url,或设置cookie值request对象:客户端向服务器提出的请求session对象:作为一个全局变量,在整个站点都生效server对象:提供对服务器上方法和属性的访问(a) response对象的一般使用方法比如:<%resposne.write("hello, welcome to asp!")%>在客户端浏览器就会看到hello, welcome to asp! 这一段文字<%response.redirect("/doc/8612532383.html,")%>如果执行这一段,则浏览器就会自动连接到“搜狐” 的网址关于response对象的用法还有很多,大家可以研究研究request对象的一般使用方法比如客户端向服务器提出的请求就是通过request对象来传递的列如:你在申请邮箱的所填写的个人信息就是通过该对象来将你所填写的信息传递给服务器的比如:这是一段表单的代码,这是提供给客户填写信息的,填写完了按“提交”传递给request.asp文件处理后再存入服务器数据库窗体顶端。
简单入门ASP变量
简单入门ASP变量变量用于存储信息假如在子程序之外声明变量那么这个变量可被 ASP 文件中的任何脚本改变假如在子程序中声明变量那么当子程序每次执行时它才会被创建和撤销实例声明变量以下为引用的内容<><body><%dim namename= Donald Duckresponse write( My name is: & name)%></body></>变量用于存储信息本例演示如何声明变量为变量赋值并在程序中使用这个变量声明数组以下为引用的内容<><body><%Dim fname( ) ifname( ) = Geefname( ) = Johnfname( ) = Thomasfname( ) = Jamesfname( ) = Adrewfname( ) = MartinFor i = toresponse write(fname(i) & <br /> ) Next%></body></>数组用于存储一系列相关的数据项目本例演示如何声明一个存储名字的数组循环生成 HTML 标题以下为引用的内容<><body><%dim ifor i= toresponse write( <h & i & >Header & i & </h & i & > ) next %></body></>如何循环生成个不同的 HTML 标题使用 Vbscript 制作基于时间的问候语以下为引用的内容<><body><%dim hh=hour(now())response write( <p> & now())response write( (Beijing Time) </p> )If h< thenresponse write( Good Morning! ) elseresponse write( Good day! ) end if%></body></>本例将根据服务器时间向用户显示不同的消息使用 JavaScript 制作基于时间的问候语以下为引用的内容<%@ language= javascript %><><body><%var d=new Date()var h=d getHours()Response Write( <p> )Response Write(d + (Beijing Time) )Response Write( </p> )if (h< ){ Response Write( Good Morning! ) } else{ Response Write( Good day! ) } %></body></>本例同上只是语法不同而已变量的生存期在子程序外声明的变量可被 ASP 文件中的任何脚本访问和修改在子程序中声明的变量只有当子程序每次执行时才会被创建和撤销子程序外的脚本无法访问和修改该变量如需声明供多个 ASP 文件使用的变量请将变量声明为 session 变量或者 application 变量 ( lian )Session 变量Session 变量用于存储单一用户的信息并且对一个应用程序中的所有页面均有效存储于 session 中的典型数据是姓名 id 或参数Application 变量lishixinzhi/Article/program/net/201311/14396。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ASP脚本变量、函数、过程和条件语句在上一期中作者向诸位简要介绍了ASP 脚本语言之一VBScript 的一些基本常识,本期将继续给大家讲解VBScript 的脚本编写方法,并通过展示VBScript 在ASP 程序编写过程中的一系列实例使大家对VBScript 有更进一层的理解。
大家在学习了脚本语言VBScript 的变量、常量和过程的基本概念后,本期将继续向各位介绍VBScript 的函数和语法。
函数和过程一样都是命名了的代码块,但它们却有很大的区别,过程完成程序任务,函数则返回值。
我们可以这样理解,过程象一个完整的句子,而函数则象一个单词。
举个例子,当你想获取某个数的平方根,你只要将该数传给VBScript 的Sqr() 函数,此函数会立即返回该数的平方根。
如:A=sqr(9)则A=3。
熟练掌握脚本语言的函数将给你编写ASP 程序带来极大的方便,就以上一期结尾处作者布置给大家的课后练习来说,如果你对脚本语言的函数掌握不够全面,那么解决如此之小的一个问题将很有可能花费你相当大的精力。
现在让我们来回顾一下这道课后练习。
“作者正在用ASP 制作一套基于WEB 的BBS 系统,希望能在其中添加一项特殊功能,即当任何用户登陆该BBS 后都能够查阅近七天来所有新发布的信息。
”如果你不熟悉VBScrip,就不会知道VBScrip 本身提供了一个用来取得日期之间的差或和的函数DateSerial,它的语法如下:DateSerial(year, month, day)如果你要指定一个日期,例如:1998 年11 月10 日,那么DateSerial 函数中每个参数的取值范围都应该是可接受的,即日的取值应在1和31 之间,月的取值应在1和12 之间。
但是,也可以使用表示某日之前或之后的年、月、日数目的数值表达式为每个参数指定相对日期。
以下样例中使用了数值表达式代替绝对日期。
在这里,DateSerial 函数返回1998 年11 月10 日之前二十年(1990-20) 零两个月(11-2) 又一天(10-1) 的日期:即1978 年9月9日。
程序如下:Datep=DateSerial(1998-20, 11-2,10-1)对于year 参数,若取值范围是从0到99,则被解释为1900 到1999 年。
对于此范围之外的year 参数,则使用四位数字表示年份(例如1800 年)。
当任何一个参数的取值出可接受的范围时,则会适当地进位到下一个较大的时间单位。
例如,如果指定了35 天,则这个天数将被解释成一个月加上多出来的日数,多出来的日数取决于其年份和月份。
但是如果参数值超出-32,768 到32,767 的范围,或者由三个参数指定(无论是直接还是通过表达式指定)的日期超出了可以接受的日期范围,就会发生错误。
当我们了解并掌握了函数DateSerial 的使用方法后,再来看看作者布置的这道题目,一切就迎刃而解了。
下面我将程序中的此部分代码公布如下:itemp=DateSerial(Year(date), month(date), day(date)-7)itemp=DateValue(itemp)sql="Select * from message Where message.creatime Between #"&date&"# And #"&itemp&"# "在这里我们又接触到了一组函数Year,month,day,它们是用来得到一个日期的年、月、日。
date 是常数,表示今天日期,而函数DateValue 则是将字符串变量转化为日期格式的变量。
在本段程序的第三行,我们第一次接触到了标准的SQL 查询语句,这句语句是什么意思呢?“Select”是标准的SQL 数据库查询命令,通过SELECT 语句我们可以在数据库中检索数据,并将查询结果提供给用户,此处的“*”表示查询该名为“message”的数据库中的所有记录,而“where”的作用是设定一个查询条件,是为了将数据库中符合条件的记录取出来,“message.creatime”是一个储存了数据库中记录创建日期的变量。
将整句语句连起来理解就是:查询名为message 的数据库中的所有记录,并将其中创建日期在今天和今天以前七日以内的所有记录存储在变量sql 中。
可能由于大家第一次接触SQL 语句,一时间无法完全理解它的作用,不过不用担心在今后的章节中作者将专门用一期给大家介绍SQL 的使用方法。
通过上面的学习,大家应该已经能够理解函数在程序中的作用,当然我们不必去死背函数,但要做到熟练运用只有一条捷径-- 多实践。
接下来让我们来看看VBScript 的基本语法。
了解编程语言的朋友一定知道在程序中控制程序流程的语句主要可以分为条件语句和循环语句,在VBScript 中可使用以下条件语句:If...Then...Else 语句Select Case 语句If...Then...Else 语句用于计算条件是否为True 或False,并且根据计算结果指定要运行的语句。
通常,条件是使用比较运算符对值或变量进行比较的表达式,If...Then...Else 语句可以按照需要进行嵌套。
让我们来创建两个范例文件:if1.asp 和if2.asp将以下语句剪贴到记事簿中,并保存为if1.asp( 注意:请将程序中“<”后的空格去掉) < html>< head>< TITLE>if1.asp< /TITLE>< /head>< body bgcolor="#FFFFFF">< form action="if2.asp" method=get>Your First Name< INPUT NAME="FirstName" MaxLength=20>< p>Your Last Name< INPUT NAME="LastName" MaxLength=20>< p>< INPUT TYPE=submit>< INPUT TYPE=reset>< /form>< /body>< /html>将以下语句剪贴到记事簿中,并保存为if2.asp < html>< head>< TITLE>ifrespond.asp< /TITLE>< /head>< % fname=request.querystring("Firstname")lname=request.querystring("Lastname")If fname="George" and lname="Washington" then %>Hi.You must be the first president!< % else %>Hi!Nice to Meet You< %end if %>< /body>< /html>asp1.asp 产生一个文本输入框,要求用户输入姓、名,如下图:asp2.asp 则是用IF 语句判断用户输入的姓名是否为“George Washington”,并做出相应的反馈。
在此我们遇到了一个ASP 的内建对象request,通过使用request 对象可以访问任何用HTTP 请求传递的信息,包括从HTML 表格中用POST 方法或GET 方法传递的参数、cookie 和用户认证。
而QueryString 集合检索HTTP 查询字符串中变量的值,HTTP 查询字符串由问号(?) 后的值指定。
如:http://localhost/if2.asp?Firstname=George&Lastname=Washington生成值为"Firstname=George&Lastname=Washington" 的变量名字符串。
关于ASP 对象作者将在今后的几篇里重点讲述。
If...Then...Else 语句的一种变形允许您从多个条件中选择,即添加ElseIf 子句以扩充If...Then...Else 语句的功能,使您可以控制基于多种可能的程序流程。
我们将asp2.asp 的程序部分扩充如下:< %fname=lcase(request.querystring("Firstname"))lname=lcase(request.querystring("Lastname"))If fname="george" and lname="washington" then %>Hi.You must be the first president!< p>< % elseIf fname="ronald" and lname="reagan" then %>Hi.You must be the actor president!< p>< % elseIf fname="jimmy" and lname="carter" then %>Hi.You must be the peanut farmer president!< p>< % elseIf fname="naoko" or fname="charles" then %>Hi.Your name reminds me of someone,but I am not sure who!< p>< % else %>Hi!Nice to Meet You< % end if %>可以添加任意多个ElseIf 子句以提供多种选择。
但使用多个ElseIf 子句经常会使程序变得很累赘。
在多个条件中进行选择的更好方法是使用Select Case 语句。
Select Case 结构提供了If...Then...ElseIf 结构的一个变通形式,可以从多个语句块中选择执行其中的一个。