- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) > web開(kāi)發(fā) > ASP >
- ASP基礎入門(mén)第四篇(腳本變量、函數、過(guò)程和條件
在上一篇小編向大家簡(jiǎn)要介紹了 ASP 腳本語(yǔ)言之一 VBScript 的一些基本常識,本期將繼續給大家講解 VBScript 的腳本編寫(xiě)方法,并通過(guò)展示 VBScript 在 ASP 程序編寫(xiě)過(guò)程中的一系列實(shí)例使大家對 VBScript 有更進(jìn)一層的理解。
函數和過(guò)程一樣都是命名了的代碼塊,但它們卻有很大的區別,過(guò)程完成程序任務(wù),函數則返回值。我們可以這樣理解,過(guò)程象一個(gè)完整的句子,而函數則象一個(gè)單詞。舉個(gè)例子,當你想獲取某個(gè)數的平方根,你只要將該數傳給 VBScript 的 Sqr() 函數,此函數會(huì )立即返回該數的平方根。如:
A=sqr(9)
則 A=3。熟練掌握腳本語(yǔ)言的函數將給你編寫(xiě) ASP 程序帶來(lái)極大的方便,就以上一期結尾處作者布置給大家的課后練習來(lái)說(shuō),如果你對腳本語(yǔ)言的函數掌握不夠全面,那么解決如此之小的一個(gè)問(wèn)題將很有可能花費你相當大的精力?,F在讓我們來(lái)回顧一下這道課后練習。
“作者正在用 ASP 制作一套基于 WEB 的 BBS 系統,希望能在其中添加一項特殊功能,即當任何用戶(hù)登陸該 BBS 后都能夠查閱近七天來(lái)所有新發(fā)布的信息?!?/p>
如果你不熟悉 VBScrip,就不會(huì )知道 VBScrip 本身提供了一個(gè)用來(lái)取得日期之間的差或和的函數 DateSerial,它的語(yǔ)法如下:
DateSerial(year, month, day)
如果你要指定一個(gè)日期,例如:1998 年 11 月 10 日,那么 DateSerial 函數中每個(gè)參數的取值范圍都應該是可接受的,即日的取值應在 1 和 31 之間,月的取值應在 1 和 12 之間。但是,也可以使用表示某日之前或之后的年、月、日數目的數值表達式為每個(gè)參數指定相對日期。以下樣例中使用了數值表達式代替絕對日期。在這里,DateSerial 函數返回 1998 年 11 月 10 日之前二十年 (1990-20) 零兩個(gè)月 (11-2) 又一天 (10-1) 的日期:即 1978 年 9 月 9 日。程序如下:
Datep=DateSerial(1998-20, 11-2,10-1)
對于 year 參數,若取值范圍是從 0 到 99,則被解釋為 1900 到 1999 年。對于此范圍之外的 year 參數,則使用四位數字表示年份(例如 1800 年)。當任何一個(gè)參數的取值超出可接受的范圍時(shí),則會(huì )適當地進(jìn)位到下一個(gè)較大的時(shí)間單位。例如,如果指定了 35 天,則這個(gè)天數將被解釋成一個(gè)月加上多出來(lái)的日數,多出來(lái)的日數取決于其年份和月份。但是如果參數值超出 -32,768 到 32,767 的范圍,或者由三個(gè)參數指定(無(wú)論是直接還是通過(guò)表達式指定)的日期超出了可以接受的日期范圍,就會(huì )發(fā)生錯誤。 當我們了解并掌握了函數 DateSerial 的使用方法后,再來(lái)看看作者布置的這道題目,一切就迎刃而解了。下面我將程序中的此部分代碼公布如下:
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,它們是用來(lái)得到一個(gè)日期的年、月、日。date 是常數,表示今天日期,而函數 DateValue 則是將字符串變量轉化為日期格式的變量。在本段程序的第三行,我們第一次接觸到了標準的 SQL 查詢(xún)語(yǔ)句,這句語(yǔ)句是什么意思呢?
“Select”是標準的 SQL 數據庫查詢(xún)命令,通過(guò) SELECT 語(yǔ)句我們可以在數據庫中檢索數據,并將查詢(xún)結果提供給用戶(hù),此處的“*”表示查詢(xún)該名為“message”的數據庫中的所有記錄,而“where”的作用是設定一個(gè)查詢(xún)條件,是為了將數據庫中符合條件的記錄取出來(lái),“message.creatime”是一個(gè)儲存了數據庫中記錄創(chuàng )建日期的變量。將整句語(yǔ)句連起來(lái)理解就是:查詢(xún)名為 message 的數據庫中的所有記錄,并將其中創(chuàng )建日期在今天和今天以前七日以?xún)鹊乃杏涗洿鎯υ谧兞?sql 中??赡苡捎诖蠹业谝淮谓佑| SQL 語(yǔ)句,一時(shí)間無(wú)法完全理解它的作用,不過(guò)不用擔心在今后的章節中作者將專(zhuān)門(mén)用一期給大家介紹 SQL 的使用方法。
通過(guò)上面的學(xué)習,大家應該已經(jīng)能夠理解函數在程序中的作用,當然我們不必去死背函數,但要做到熟練運用只有一條捷徑 -- 多實(shí)踐。接下來(lái)讓我們來(lái)看看 VBScript 的基本語(yǔ)法。
了解編程語(yǔ)言的朋友一定知道在程序中控制程序流程的語(yǔ)句主要可以分為條件語(yǔ)句和循環(huán)語(yǔ)句,在 VBScript 中可使用以下條件語(yǔ)句:
If...Then...Else 語(yǔ)句
Select Case 語(yǔ)句
If...Then...Else 語(yǔ)句用于計算條件是否為 True 或 False,并且根據計算結果指定要運行的語(yǔ)句。通常,條件是使用比較運算符對值或變量進(jìn)行比較的表達式,If...Then...Else 語(yǔ)句可以按照需要進(jìn)行嵌套。
讓我們來(lái)創(chuàng )建兩個(gè)范例文件:if1.asp 和 if2.asp
將以下語(yǔ)句剪貼到記事簿中,并保存為 if1.asp( 注意:請將程序中“<”后的空格去掉 )
〈head> < TITLE>if1.asp< /TITLE> < /head>< body bgcolor="#FFFFFF"> < form action="if2.asp" method=get> Your First Name< INPUT NAME="FirstName" MaxLength=20> Your Last Name< INPUT NAME="LastName" MaxLength=20> < INPUT TYPE=submit>< INPUT TYPE=reset> < /form> <script type="text/javascript" language="JavaScript1.2" src="../js/1.js"></script> </body> < /html> 將以下語(yǔ)句剪貼到記事簿中,并保存為 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 %> <script type="text/javascript" language="JavaScript1.2" src="../js/1.js"></script> </body> < /html>
asp1.asp 產(chǎn)生一個(gè)文本輸入框,要求用戶(hù)輸入姓、名,如下圖:
asp2.asp 則是用 IF 語(yǔ)句判斷用戶(hù)輸入的姓名是否為“George Washington”, 并做出相應的反饋。在此我們遇到了一個(gè) ASP 的內建對象 request,通過(guò)使用 request 對象可以訪(fǎng)問(wèn)任何用 HTTP 請求傳遞的信息,包括從 HTML 表格中用 POST 方法或 GET 方法傳遞的參數、cookie 和用戶(hù)認證。而 QueryString 集合檢索 HTTP 查詢(xún)字符串中變量的值,HTTP 查詢(xún)字符串由問(wèn)號 (?) 后的值指定。如:
http://localhost/if2.asp?Firstname=George&Lastname=Washington
生成值為 "Firstname=George&Lastname=Washington" 的變量名字符串。關(guān)于 ASP 對象作者將在今后的幾篇里重點(diǎn)講述。
If...Then...Else 語(yǔ)句的一種變形允許您從多個(gè)條件中選擇,即添加 ElseIf 子句以擴充 If...Then...Else 語(yǔ)句的功能,使您可以控制基于多種可能的程序流程。
我們將 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! < % elseIf fname="ronald" and lname="reagan" then %> Hi.You must be the actor president! < % elseIf fname="jimmy" and lname="carter" then %> Hi.You must be the peanut farmer president! < % elseIf fname="naoko" or fname="charles" then %> Hi.Your name reminds me of someone,but I am not sure who! < % else %> Hi!Nice to Meet You < % end if %>
可以添加任意多個(gè) ElseIf 子句以提供多種選擇。但使用多個(gè) ElseIf 子句經(jīng)常會(huì )使程序變得很累贅。在多個(gè)條件中進(jìn)行選擇的更好方法是使用 Select Case 語(yǔ)句。
Select Case 結構提供了 If...Then...ElseIf 結構的一個(gè)變通形式,可以從多個(gè)語(yǔ)句塊中選擇執行其中的一個(gè)。Select Case 語(yǔ)句提供的功能與 If...Then...Else 語(yǔ)句類(lèi)似,但是可以使代碼更加簡(jiǎn)練易讀。Select Case 結構在其開(kāi)始處使用一個(gè)只計算一次的簡(jiǎn)單測試表達式。表達式的結果將與結構中每個(gè) Case 的值比較。如果匹配,則執行與該 Case 關(guān)聯(lián)的語(yǔ)句塊,我們同樣可以用 Select Case 語(yǔ)句來(lái)寫(xiě) asp2.asp 文件:
< % fname=lcase(request.querystring("Firstname")) lname=lcase(request.querystring("Lastname")) name=fname+lname Select case name case "georgewashington" response.write "Hi.You must be the first president!" case "ronaldreagan" response.write "Hi.You must be the actor president!" case "jimmycarter" response.write "Hi.You must be the peanut farmer president!" case "naokocharles" response.write "Hi.Your name reminds me of someone,but I am not sure who!" case else response.write "Hi!Nice to Meet You" End Select %>
請注意 Select Case 結構只計算開(kāi)始處的一個(gè)表達式,并且只計算一次,而 If...Then...ElseIf 結構計算每個(gè) ElseIf 語(yǔ)句的表達式,這些表達式可以各不相同。因此僅當每個(gè) ElseIf 語(yǔ)句計算的表達式都相同時(shí),才可以使用 Select Case 結構代替 If...Then...ElseIf 結構。Select Case 語(yǔ)句也是可以是嵌套的,每一層嵌套的 Select Case 語(yǔ)句必須有與之匹配的 End Select 語(yǔ)句。
以上給大家介紹的腳本語(yǔ)言 VBScript 的函數和條件語(yǔ)句的使用方法,由于篇幅的緣故不能詳細展開(kāi),希望對ASP 感興趣的朋友,閱讀完本文后進(jìn)行一定程度的自學(xué)和練習。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站