今天我們來寫一個有管理功能的留言板程式。所謂的管理功能,其實就是每條留言前有一個選擇框,點中要刪除的留言,或者點“刪除所有留言”,就完成了批量刪除。透過這個實例,我們可以初步了解ASP中對資料庫的基本操作。
一、建立資料庫(ACCESS2000中文版)
myid 文字型 20位元組 這是發言的唯一標誌
myname 文字型 10位元組 這是儲存留言人姓名的
nowtime 日期/時間型 這裡記錄了留言時間
mytitle 文字型 30位元組 這是留言的題目
mybody 備註 留言內容
其中的myid字段是關鍵,它是刪除的唯一標誌。
二、管理程式
manage.asp程式碼
'先定義變數
dim listrs,conn,cmd
'可依實際留言數修改i的循環次數
for i=1 至 100
if request("delit"&i)<>empty then
'上面這條語句為關鍵部分,檢查第i條留言是否被選中,若被選中,則執行下面的刪除操作
Set conn = Server.CreateObject("ADODB.Connection")
sConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("guestbook.mdb")&";"
'mappath函數要用一個參數guestbook.mdb,表示要連接的資料庫,注意路徑問題
conn.Open sConnection
'再連接資料表
set cmd=Server.Createobject("ADODB.Command")
set cmd.activeconnection=conn
cmd.commandtext="delete from guest where myid='"&request("delit"&i)&"'"
'上面的guest是資料表的表名,myid是欄位名
cmd.execute
set conn=Nothing
set cmd=Nothing
'執行SQL指令及釋放對象
end if
next
'輸出表單,注意action屬性指向manage.asp
response.write ""
'連接資料庫
set conn=Server.CreateObject("ADODB.Connection")
set listrs=server.createobject("ADODB.Recordset")
sConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("guestbook.mdb")&";"
conn.Open sConnection
listrs.open "select * from guest",conn,2,2
'上面打開了資料庫的guest表
i=1
'變數i開始記數
while not listrs.eof
response.write "來自:"&listrs("myname")&"----"&listrs("mytitle")&"時間:"&listrs("nowtime")&"
"&listrs("mybody")&"
"
i=i+1
'上面兩步是關鍵處,輸出每條留言的同時,輸出一個checkbox複選框,此框功能是選中與不選中將返回不同值
listrs.movenext
wend
set listrs=Nothing
'輸出提交按鈕和表單結束標誌
response.write
三、程式碼分析
程式碼不太好理解,且聽我說來:
1.程式首次執行時,if request("delit"&i)<>empty then總是傳回假值,因為複選框未被選中,接著輸出所有的留言。
2.在選取了要刪除的留言後,按下“刪除按鈕”,重新執行。
3.刪除全部選取的留言後,再輸出留言板。