第一課 安裝IIS
首先,要在電腦上安裝IIS:關(guān)于安裝和調(diào)試IIS本站有很多這方面的文章,會(huì)安裝了這步省略,不會(huì)的話請(qǐng)看"網(wǎng)上安家"和"Win 2003動(dòng)態(tài)網(wǎng)站IIS(圖)"安裝成功后,到C:\Inetpub\wwwroot 用記事本編寫文件test.asp
內(nèi)容為 <%=time()%> 然后,打開(kāi)IE,在地址欄輸入http://127.0.0.1 /test.asp 如果看到時(shí)間就說(shuō)明已經(jīng)安裝成功了!恭喜調(diào)試環(huán)境已經(jīng)準(zhǔn)備OK
這次學(xué)習(xí)需要安裝2個(gè)軟件
Macromedia Dreamweaver 和 Microsoft Access
我們已經(jīng)安裝了ASP的調(diào)試環(huán)境,那么我們就要學(xué)習(xí)如何制作提交頁(yè)和接收頁(yè)了。下面要用到Macromedia Dreamweaver
第二課 提交表單example.htm的制作
在開(kāi)始ASP之前,我們必須懂得用Dreamweaver的表單排出類似這樣的效果. 如圖:
--------------------------用Dreamweaver制作----------------------------------
1.新建一個(gè)HTML空白頁(yè),然后插入->表單->表單,就會(huì)出現(xiàn)一個(gè)虛線框,將其動(dòng)作輸入為list.asp
2.接著插入->表單->文本域,標(biāo)簽為姓名。
3.插入->表單->文本域,標(biāo)簽為地址。
4.分別將兩個(gè)文本域的name值改為name和addr
5.插入->表單->按鈕
6.表單完成
制作這樣的表單是為了提交數(shù)據(jù)。example.htm文件的內(nèi)的代碼如下:
--------------------------------------------------------------------
姓名:
地址:
--------------------------------------------------------------------
接著我們來(lái)分析一下以上的代碼:
這段代碼表示將表單的數(shù)據(jù)提交到 list.asp 這個(gè)頁(yè)面進(jìn)行處理.
----------------------------------------------------------------
表示將姓名的數(shù)據(jù)通過(guò)name這個(gè)值來(lái)提交
這段是文本區(qū)域代碼, name="這里是值" ,list.asp會(huì)通過(guò)name=輸入的數(shù)據(jù),來(lái)取得數(shù)據(jù)。
第三課 - list.asp文件原理
上面我們已經(jīng)制作了一個(gè)提交數(shù)據(jù)的頁(yè)面example.htm,那么我們現(xiàn)在就要制作一個(gè)接收數(shù)據(jù)并顯示數(shù)據(jù)的頁(yè)面list.asp。
首頁(yè),我們要在list.asp頁(yè)頭放以下代碼
<%
name=request.form("name")
addr=request.form("addr")
%>
//將表單傳送過(guò)來(lái)的內(nèi)容賦給name
//將表單傳送過(guò)來(lái)的內(nèi)容賦給addr(注意上一步表單的命名)
接著我們要<%=name%>來(lái)顯示內(nèi)容
<%=name%>表示將name的值顯示在本頁(yè)
<%=addr%>跟上面同理
----------------------list.asp的完整代碼如下-----------------------
<%
name=request.form("name")
addr=request.form("addr")
%>
你填寫的信息為:
姓名:<%=name%>
地址:<%=addr%>
提交成功后,顯示。如圖:
我們先在實(shí)踐一下上面的結(jié)果,先打開(kāi)example.htm,然后提交一個(gè)數(shù)據(jù)看看。
上面已經(jīng)教會(huì)你如果提交和顯示數(shù)據(jù),下面就要來(lái)學(xué)會(huì)如何用數(shù)據(jù)庫(kù)保存數(shù)據(jù)!也就要用到Microsoft Access
第四課 - 數(shù)據(jù)庫(kù)的制作
上面我們我們已經(jīng)通過(guò)頁(yè)面把數(shù)據(jù)接收到了,但是細(xì)心的你會(huì)發(fā)現(xiàn),這個(gè)數(shù)據(jù)是只暫時(shí)的,一關(guān)閉瀏覽器就沒(méi)有了。如何能夠保存數(shù)據(jù),好在下一次能夠繼續(xù)用到呢?那么我們就要用到access數(shù)據(jù)庫(kù)拉。
我們打開(kāi)Microsoft Access新建一個(gè)空白數(shù)據(jù)庫(kù)并保存為db1.mdb。
然后點(diǎn)擊“使用設(shè)計(jì)器創(chuàng)建表” 如圖:
由于之前我們的數(shù)據(jù)只有“姓名”和“地址”
那么我們就建立三個(gè)欄 id , name , addr (id是為了給這些數(shù)據(jù)自動(dòng)編好的,方便以后刪除和修改)如圖:
然后將保存為表:info (將id設(shè)置為主鍵)
到此為止數(shù)據(jù)庫(kù)就建立好拉。
第五課- 重新設(shè)計(jì)數(shù)據(jù)的接收頁(yè) add.asp
學(xué)習(xí)到這里了 list.asp 這個(gè)文件就正式取消了。
因?yàn)橹拔覀円呀?jīng)有了提交數(shù)據(jù)的頁(yè)面 example.htm 如圖:
現(xiàn)在,我們就要將example.htm頁(yè)的數(shù)據(jù)提交到add.asp,也就是要將里面的list.asp改為add.asp拉
那么現(xiàn)在就要建立真正的數(shù)據(jù)接收頁(yè) add.asp
add.asp源代碼如下:
------------------------------完整代碼-------------------------------------
<%
set conn=server.createobject("adodb.connection")
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("db1.mdb")
name=request.form("name")
addr=request.form("addr")
exec="insert into info(name,addr)values('"+name+"','"+addr+"')"
conn.execute exec
conn.close
set conn=nothing
%>
<%="記錄添加成功!"%>-------------------------------數(shù)據(jù)庫(kù)連接代碼分析--------------------------
set conn=server.createobject("adodb.connection")
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("db1.mdb")
這兩句是永遠(yuǎn)只要抄過(guò)去就好,用來(lái)告訴電腦數(shù)據(jù)庫(kù)在那里。
-------------------------------變量分析------------------------------------
name=request.form("name")
addr=request.form("addr")
將表單提交過(guò)來(lái)的內(nèi)容賦給變量,注意上一步表單的命名不要寫錯(cuò)。
--------------------------------將內(nèi)容插入到info表-------------------------
exec="insert into info(name,addr)values('"+name+"','"+addr+"')"
conn.execute exec
執(zhí)行insert插入內(nèi)容到數(shù)據(jù)庫(kù)
-------------------------------關(guān)閉數(shù)據(jù)庫(kù)----------------------------------
conn.close
set conn=nothing
別忘記關(guān)閉數(shù)據(jù)庫(kù)
解釋更清楚一些:
1. insert into后面加的是表的名字,后面的括號(hào)里面是需要添加的字段,不用添加的或者字段的內(nèi)容可以省略。注意,這里變量一定要和ACCESS里面的字段名對(duì)應(yīng),否則就會(huì)出錯(cuò)!
2. exec是一個(gè)字符串,"insert into info(name,addr)values('"是第一段,在ASP里面不能嵌雙引號(hào),所以可以用'代替雙引號(hào),放在雙引號(hào)里面,連接兩個(gè)變量用+或者&所以"',"又是一段,中間夾了一個(gè)name就是表單傳來(lái)的變量,這樣就可以在這個(gè)變量外面加兩個(gè)'',表示是字符串了。注意,如果是數(shù)字型變量所以不需要外面包圍的單引號(hào)!
第六課-從數(shù)據(jù)庫(kù)中讀取信息
有時(shí)間就多執(zhí)行example.htm多添加幾條信息進(jìn)去吧!這樣要顯示數(shù)據(jù)時(shí)會(huì)比較好看哦!
那么下一步,就要開(kāi)始制作顯示數(shù)據(jù)的頁(yè)面
步驟一:排版出這樣的效果相信不會(huì)太為難你吧。如圖:
頁(yè)面我們已經(jīng)制作好了,但是如果才能夠讓這個(gè)頁(yè)面來(lái)顯示數(shù)據(jù)庫(kù)的數(shù)據(jù)呢
接下載就要在這個(gè)頁(yè)面內(nèi)添加代碼了。
步驟二:在<table...的上一行,寫上< p="">
<%
set conn=server.createobject("adodb.connection")
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("db1.mdb")
exec="select * from info"
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
%>說(shuō)明一下:
1.前兩行剛才用過(guò)了,從add.asp復(fù)制過(guò)來(lái)就可以了!
2.第3行,設(shè)置查詢數(shù)據(jù)庫(kù)的命令,select后是查詢的字段,如果全部用*,from數(shù)據(jù)庫(kù)中的表名
3.第4行,定義一個(gè)記錄集組件,用來(lái)放查詢的信息
4.第5行,是打開(kāi)這個(gè)記錄集,exec是前面定義的查詢命令,conn是前面定義的數(shù)據(jù)庫(kù)連接組件,后面參數(shù)“1,1”,表示讀取 [注:以后用修改記錄就把參數(shù)設(shè)置為1,3]
步驟三:設(shè)置數(shù)據(jù)顯示的開(kāi)頭
在
和的中間寫上
<%do while not rs.eof%>
在上一行,寫上
<%
rs.movenext
loop
%>
------------------------------------------------------
在表格第二行的單元格內(nèi)分別寫上要顯示的信息[這些操作都在代碼狀態(tài)下輸入,不要寫錯(cuò)了哦]
<%=rs("id")%> ------編號(hào)
<%=rs("name")%> -------姓名
<%=rs("addr")%> ------地址
-------------------------------------------------------
大功告成!
當(dāng)然,最好養(yǎng)成好習(xí)慣!在最后寫上代碼:
<%
rs.close
set rs=nothing
conn.close
set conn=nothing
%>
就是關(guān)閉rs和conn了!
下面,我們?cè)L問(wèn)一下 lang.asp ,正確的將數(shù)據(jù)庫(kù)信息顯示出來(lái)了。如圖:
根據(jù)上面說(shuō)明制作出來(lái)的lang.asp代碼如下:
數(shù)據(jù)顯示頁(yè)
<%
set conn=server.CreateObject("adodb.connection")
DBPath = Server.MapPath("db1.mdb")
conn.open "provider=microsoft.jet.oledb.4.0; data source="&DBpath
exec="select * from info"
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
%>
<%do while not rs.eof%>
<%
rs.movenext
loop
%>
編號(hào)
姓名
地址
<%=rs("id")%>
<%=rs("name")%>
<%=rs("addr")%>
<%
rs.close
set rs=nothing
conn.close
set conn=nothing
%>第七課-掌握分頁(yè)技術(shù)
數(shù)據(jù),已經(jīng)通過(guò)lang.asp顯示出來(lái)了,但是你會(huì)發(fā)現(xiàn)一個(gè)問(wèn)題,一旦數(shù)據(jù)多起來(lái)的時(shí)候,就會(huì)一直排列下去。如果數(shù)據(jù)達(dá)到幾萬(wàn)條的話,那不是把頁(yè)面都撐暴了。既然是這樣,那么我們利用分頁(yè)技術(shù)把這個(gè)問(wèn)題解決。
分頁(yè)技術(shù),是ASP程序的難點(diǎn),比較不好理解,實(shí)現(xiàn)的方法也多種多樣!所以,很多人研究了好幾天,也不理解!
這里用一種簡(jiǎn)單實(shí)用的方法:就直接修改上面的顯示頁(yè)面的asp文件吧!通過(guò)三個(gè)步驟完成吧
步驟一:
修改<%do while not rs.eof%>為下面代碼,rs.PageSize表示每頁(yè)顯示多少條信息,請(qǐng)自行修改!
<%
rs.PageSize=3
pagecount=rs.PageCount
page=int(request.QueryString ("page"))
if page<=0 then page=1
if request.QueryString("page")="" then
page=1
end if
rs.AbsolutePage=page
for i=1 to rs.PageSize
if rs.EOF then
exit for
end if
%>
步驟二:
<%
rs.movenext
loop
%>
修改為
<%
rs.movenext
next
%>
步驟三:復(fù)制下面代碼到要顯示“上頁(yè)、下頁(yè)”的地方,為美觀,將表格寬度width="320",改為跟你頁(yè)面表格一致!
<%if page=1 and not page=pagecount then%>
第<%=page%>頁(yè)
<%for i=1 to pagecount%>
<%=i%>
<%next%>
下頁(yè)
<%elseif page=pagecount and not page=1 then%>
第<%=page%>頁(yè)
<%for i=1 to pagecount%>
<%=i%>
<%next%>
上頁(yè)
<%elseif page<1 then%>沒(méi)有任何記錄!
<%elseif page>pagecount then%>沒(méi)有任何記錄!
<%elseif page=1 and page=pagecount then%>
<%else%>
第<%=page%>頁(yè)
<%for i=1 to pagecount%>
<%=i%>
<%next%>
上頁(yè)
下頁(yè)
<%end if%>
完成,我們來(lái)看看顯示結(jié)果。如圖:
根據(jù)上面說(shuō)明修改出來(lái)的lang.asp代碼如下(帶分頁(yè)功能):
數(shù)據(jù)顯示頁(yè)
<%
set conn=server.CreateObject("adodb.connection")
DBPath = Server.MapPath("db1.mdb")
conn.open "provider=microsoft.jet.oledb.4.0; data source="&DBpathexec="select * from info"
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
%>
<%
rs.PageSize=3
pagecount=rs.PageCount
page=int(request.QueryString ("page"))
if page<=0 then page=1
if request.QueryString("page")="" then
page=1
end if
rs.AbsolutePage=page
for i=1 to rs.PageSize
if rs.EOF then
exit for
end if
%>
<%
rs.movenext
next
%>
編號(hào)
姓名
地址
<%=rs("id")%>
<%=rs("name")%>
<%=rs("addr")%>
<%if page=1 and not page=pagecount then%>
第<%=page%>頁(yè)
<%for i=1 to pagecount%>
<%=i%>
<%next%>
下頁(yè)
<%elseif page=pagecount and not page=1 then%>
第<%=page%>頁(yè)
<%for i=1 to pagecount%>
<%=i%>
<%next%>
上頁(yè)
<%elseif page<1 then%>沒(méi)有任何記錄!
<%elseif page>pagecount then%>沒(méi)有任何記錄!
<%elseif page=1 and page=pagecount then%>
<%else%>
第<%=page%>頁(yè)
<%for i=1 to pagecount%>
<%=i%>
<%next%>
上頁(yè)
下頁(yè)
<%end if%>
<%
rs.close
set rs=nothing
conn.close
set conn=nothing
%>
第八課-- 刪除數(shù)據(jù)庫(kù)信息
前面,我么已經(jīng)學(xué)會(huì)了數(shù)據(jù)入庫(kù)、讀取和分頁(yè)技術(shù)。那么這一節(jié)課,就來(lái)學(xué)習(xí)刪除數(shù)據(jù)庫(kù)信息。
為了免得麻煩,我們就直接復(fù)制一份lang.asp改名為del.asp。
首先在地址后面增加一個(gè)欄,如圖:
接著在后面的空格子內(nèi)輸入以下代碼:
刪除
輸入成功后,如圖:
接著在exec="select * from info"的上一行輸入:
act=request.QueryString("act")
if act="del" then '刪除
id=request.QueryString("id")
sql="delete from info where id="&id
conn.execute(sql)
response.Redirect("del.asp")
end if
刪除數(shù)據(jù)的頁(yè)面也就在原來(lái)lang.asp的基礎(chǔ)上增加上面兩段代碼,大家可以好好分析分析。
第九課-修改數(shù)據(jù)庫(kù)信息
你提交了一個(gè)信息,但是你發(fā)現(xiàn)有錯(cuò)?該怎么辦?難道刪除掉,重新添加?
下面我們學(xué)學(xué)如何修改數(shù)據(jù)庫(kù)資料:
首先我們?cè)贒EL.asp建立一個(gè)修改鏈接
“修改”鏈接到 edit.asp?id=<%=rs("id")%> ,這其中edit.asp是我們后面需要建立的文件。
接著我們就要建立edit.asp來(lái)接受del.asp賦值過(guò)來(lái)的數(shù)據(jù)庫(kù)了。
我們要制作一個(gè)下面效果的頁(yè)面
主要的:
這段代碼放在網(wǎng)頁(yè)代碼頭部:
<%排版這樣的布局相信大家都會(huì)了,那么就說(shuō)一下
set conn=server.CreateObject("adodb.connection")
DBPath = Server.MapPath("db1.mdb")
conn.open "provider=microsoft.jet.oledb.4.0; data source="&DBpath
id=request("id")
set rs=server.CreateObject("adodb.recordset")
sql="select * from info where id="&id
rs.open sql,conn,1,1
%>
前三行代碼就不說(shuō)了
id=request("id") 表示取得賦值過(guò)來(lái)的ID
set rs=server.CreateObject("adodb.recordset")
sql="select * from info where id="&id
rs.open sql,conn,1,1
表示查詢info表id字段里面的某個(gè)ID
接著我們就要在表格對(duì)應(yīng)的里面建立文本域用來(lái)顯示信息
里面代碼如下:
數(shù)據(jù)修改
姓名
地址
要注意name值別出錯(cuò)
<%=rs("name")%> 和 <%=rs("addr")%> 是用來(lái)顯示內(nèi)容的.
表示把內(nèi)容提交到editok.asp處理,并且注明 id=多少
現(xiàn)在我們就要建立editok.asp文件用來(lái)接收修改信息。
editok.asp只是代碼,不需要建立表格之類的,代碼如下:
<%
set conn=server.CreateObject("adodb.connection")
DBPath = Server.MapPath("db1.mdb")
conn.open "provider=microsoft.jet.oledb.4.0; data source="&DBpath
id=trim(request("id"))
set rs=server.CreateObject("adodb.recordset")
sql="select * from info where id="&id
rs.open sql,conn,1,3
rs("name")=request.form("name")
rs("addr")=request.form("addr")
rs.update
rs.close
set rs=nothing
conn.close
set conn=nothing
%>
id=trim(request("id")) 取得要修改信息的ID
sql="select * from info where id="&id 取得與數(shù)據(jù)庫(kù)ID的鏈接
rs("name")=request.form("name")
rs("addr")=request.form("addr")
rs.update
rs.close
表示將數(shù)據(jù)庫(kù)現(xiàn)在的內(nèi)容換成修改的內(nèi)容
給與修改后的提示
到此為止,本教程完全結(jié)束。
看了這個(gè)教程,相信初學(xué)者能夠理解過(guò)來(lái)。關(guān)鍵是要多做,多熟悉代碼。
因?yàn)檫@個(gè)只是教初學(xué)者入門,所以有所謂的漏洞是事實(shí),請(qǐng)高手不要太介意。
聯(lián)系客服