如何給留言簿添加在線留言編輯的功能呢?綜述起來我們大致可以將其分成以下三個步驟來實現。
步驟一:首先用第八章中所介紹的給每條留言的上面添加一個“刪除留言”按鈕的方法,在每條留言的上面再加添一個“留言編輯”的按鈕。
步驟二:實現當我們單擊“留言編輯”按鈕時,從留言數據庫中選取對應的留言記錄以供“留言編輯”,見下圖:
很明顯,這裡的關鍵所在就是:如何才能從留言數據庫中選取對應的留言記錄以供我們編輯?實現該功能的程序被我存成了文件Edit.ASP,請看下面:
......
< %
Set conn = Server.CreateObject("ADODB.Connection")
DBPath = Server.MapPath("book2.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
Set cmd = Server.CreateObject("ADODB.Command")
Set CmdEdit = Server.CreateObject("ADODB.Recordset")
cmd.CommandText = "SELECT guestbook.* FROM guestbook WHERE (ID = " & Request.QueryString("id") & ")"
cmd.CommandType = 1
Set cmd.ActiveConnection = Conn
CmdEdit.Open cmd, , 3, 1
%>
'選取ID = " & Request.QueryString("id") & ")"的留言記錄,因為該程序只是打開留言,並不需要更改留言內容,所以這裡設定該留言記錄為只讀,以免破壞數據。其它參數的意義請大家參照上一章節的資料,我在這裡不再重復說明。
< % memo = CmdEdit("留言") %>
< % memo = Replace(memo,"< br>",str) %>
'將留言數據表單中“留言”字段的數據賦予留言編輯頁面的memo文本域,並將數據轉換成字符串,以便對其進行編輯。
......
< input type="TEXT" name="Name" size="20" value="< %=CmdEdit("姓名")%>">
......
< input type="TEXT" name="Tel" size="20" value="< %=CmdEdit("電話")%>">
......
< input type="TEXT" name="Subject" size="55" value="< %=CmdEdit("主題")%>">
......
< textarea name="Memo" rows="6" cols="60">< %= memo %>< /textarea>
......
< input type="hidden" name="ID" value="< %=CmdEdit("ID")%>">
< input type="submit" value="保存留言">
'分別將留言表單中的“ 姓名”、“電話”、“主題”和“留言”各字段的數據賦予各“留言編輯”頁面中對應的文本域。
......
步驟三:保存編輯後的留言(Editsave.ASP)。
< %@ LANGUAGE="VBSCRipT" %>
< % Response.Buffer = "True" %>
'設置將Web頁面輸出至緩存區。當一個Web頁面輸出至緩存區時,除非當前頁的所有服務器端文件都已被處理完畢或者是程序中調用了Flush或End方法,服務器才將響應客戶端浏覽器。因此Response.Buffer一般都是放在.ASP文件的第一行,放在其他位置可能會造成執行的錯誤。
< % ID = Request.Form("ID") %>
'獲取被編輯留言的“ID”序列號。
......
< %
Set conn = Server.CreateObject("ADODB.Connection")
DBPath = Server.MapPath("book2.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
Set cmd = Server.CreateObject("ADODB.Command")
Set CmdEdit = Server.CreateObject("ADODB.Recordset")
cmd.CommandText = "SELECT guestbook.* FROM guestbook WHERE (ID = " & ID & ")"
cmd.CommandType = 1
Set cmd.ActiveConnection = Conn
CmdEdit.Open cmd, , 1, 3
%>
< % NAME = Request.Form("NAME")
if NAME="" THEN
CmdEdit.FIElds("姓名") = NULL
Else
CmdEdit.FIElds("姓名") = NAME
END IF %>
< % EMAIL = Request.Form("EMAIL")
if EMAIL="" THEN
CmdEdit.FIElds("EMAIL") = NULL
Else
CmdEdit.FIElds("EMAIL") = EMAIL
END IF %>
< % memo = Request.Form("memo")
if memo="" THEN
CmdEdit.FIElds("留言") = NULL
Else
memo = Replace(memo,str,"< br>")
memo = Replace(memo,vbCr,"< br>")
CmdEdit.FIElds("留言") = memo
END IF %>
< % TEL = Request.Form("TEL")
if TEL="" THEN
CmdEdit.FIElds("電話") = NULL
Else
CmdEdit.FIElds("電話") = TEL
END IF %>
'將編輯留言頁面表單中對應文本域中的內容存儲到留言表單中相對應的字段下。
< % CmdEdit.Update
CmdEdit.Close %>
< % Sub delaySecond(DelaySeconds)
SecCount = 0
Sec2 = 0
While SecCount < DelaySeconds + 1
Sec1 = Second(Time())
If Sec1 <> Sec2 Then
Sec2 = Second(Time())
SecCount = SecCount + 1
End If
Wend
End Sub %>
< % delaySecond(2) %>
< % Response.Redirect "page2.ASP" %>