摘要:聊天室設計的原理是把發言插入到數據庫的表里,然后再讀了取表中的記錄顯示在客戶端的瀏覽器上,如何來驅動聊天記錄的更新顯示,一個方式是只要有人發言,就更一次,另一種方式每隔一定時間,程序設定更新一次,把發言表單,顯示記錄放到一個頁里,這就形成了一個簡單聊天室。
關鍵詞:asp數據庫;跳轉
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)27-1985-02
Use the ASP Creation Simple Chat Room
ZHANG Shu-cai
(Zunyi Righteousness Occupation Technical College,Zunyi 563000,China)
Abstract: the principle of chat room design be the watch which inserts the speech to the database inside,then read to take the record in the form to show at the browser that the customer carry up,how to drive the renewal manifestation of chat record,a method is only someone speech,more once,another method separates each time certain time,the procedure enactment renews once, chase speech form and list and show that the record puts to a page inside, this became a simple chat room.
Key words: asp access;iframe jump to turn
1 引言
用戶在瀏覽網頁時,有時希望和同時瀏覽這個頁面的網友聊,但聊天信息又不占頁面的太多部分,這用到html的內嵌式框架來設計是一種較為理想的選擇。
2 設計思想
聊天室中的發言不是直接顯示在頁面上,而是先插入到數據庫的表,然后再讀取表中指定記錄集,顯示在頁面上,這里就涉及到一個表單,一個表單數據處理頁面formcn.asp,聊天信息顯示頁面chat.asp。如何把表單,聊天信息顯示放在一個頁面的一小部分,形成一個附加聊天室網頁fjcata.htm,是本文要解決的問題。主要是思想是在fjchat.htm用內嵌式框架把chat.asp放在表格的一個單元格,表單放在另外一個單元格里。下面是具體實現
過程,為便于理解,把其他一些功能全部去掉,只留下能發言,并把發言顯示出來。
3環境設置
在盤中建一個文件,命名為”myweb”,如果你的操作系統是上海政府版Windows XP,還要在菜單”工具”->”文件夾選項”->”查看”,去掉”簡單文件共享(推薦)”,然后在”myweb”文件夾的屬性中選”安全”卡,添中一個用戶”everyone”,并給予”寫入”,這樣用戶才能對數據表有插入,更新權利。設置主目錄:“控制面版”->“管理工具“->”internet信息服務”->”默認網站“->屬性->”主目錄”,把才建的”myweb”設為主目錄。最好把”寫入”選項”勾上。其他的地方暫時可不設置。
4 數據庫設計
為了簡單起見,我們用Access數據庫,在”myweb”文件夾下放一個db1.mdb數據庫,其中只有一個ly表,用來存放用戶聊天信息,如下表:

5 聊天信息處理頁面formch.asp
只設計表單傳遞過來兩個變量,用戶名(user),留言(ly),下面這段程序是把這兩個變量的值存入表ly中,完成之后,跳轉到fjchat.asp
<%
set conn=server.CreateObject(\"adodb.connection\")
conn.open \"driver={microsoft access driver (*.mdb)};dbq=\" server.mappath(\"db1.mdb\")
user=request.Form(\"user\")
ly=request.Form(\"ly\")
exec=\"insert intoLy(user,ly) values ('\"+user+\"','\"+ly+\"')\"
conn.execute exec
conn.close
set conn=nothing
‘用response對象的redirect方法跳轉到ly.html頁面,用戶可以斷續留言。
response.Redirect(\"ly.html\")
%>
6 聊天內容瀏覽的頁面chat.asp
--下一行說明每隔30秒刷新一次這個頁面
<html>
<htead>
<meta http-equiv=refresh content=\"30\">
</head>
<body>
<%
set conn=server.CreateObject(\"adodb.connection\")
conn.open \"driver={microsoft access driver (*.mdb)};dbq=\" server.MapPath(\"db1.mdb\")
sql=\"select * from ly order bysj desc\"
set rs=server.CreateObject(\"adodb.recordset\")
rs.open sql,conn,1,1
ifnot rs.eof then
%>
<div align=\"center\"><font size=\"5\"> 全部留言</font></div>
<table width=\"100%\" align=\"center\" border=\"1\" cellspacing=\"0\" cellbadding=\"0\">
<tR ><font size=5><TD width=\"10%\" >用戶名</td><td width=\"70%\">留言</td><td width=\"20%\">留言時間</td></font></tr>
‘下面6行是逐條顯示記錄,我用一個表格來顯示
<% do while not rs.eof %>
<tR><TD><% =rs(“user”)>%></td><td><%=rs(\"ly\")%></td><td><%=rs(\"sj\")%></td></tr>
<tr ><td bgcolor=\"#00CC33\" height=\"5\" colspan=\"3\" bordercolor=\"#0033FF\"></td></tr>
<%rs.movenext %>
<%loop %>
</table>
<%else %>
沒有留言
<% end if%>
<%
rs.close
set rs=nothing
conn.close
set conn=nothing
%><br />
</body>
</html>
7 附加內嵌式框架做聊天室頁面fjchat.htm
下面把聊天表單與聊天內容顯示放到一個頁面上去,為了使頁面穩定,各用戶刷新顯示頁面時不影響聊天界面,用一個內嵌框架來放聊天內容,這是一個重點,刷新頁面只刷新一個頁面的一部分#65377;
<body>
<table width="760" border="1" align="center" cellpadding="0" cellspacing="0">
<tr>
‘這一單元格里放了一個內嵌式框架,width,height是它的寬和高,scr=”lyla.asp”是把聊天內容顯示在這里,name的值一定要是"main"
<td><iframe width="760" height="400" src="lyla.asp" scrolling="yes" name="main"frameborder="2"></iframe></td></tr>
<tr>
‘這個單元格只放了一個表單,表單中只一個名稱為user的文本框和名稱為ly的文本區域,主要是為了表單處理程序formcn.asp相對應,把表單提交給formcn.asp處理#65377;
<td><form name="form1" method="post" action="formcn.asp">
<p>用戶名:
<input name="user" type="text" >
</p> <p>發言:<input name="ly" type="text" size="40" />
<input type="submit" name="Submit" value="ok" />
<input type="reset" name="Submit2" value="cancel" />
</p>
</form></td></tr>
</table>
</body>
一個簡單的聊天室的網頁基本做成,把它放到局域網上去,用幾臺機子測試一下#65377;感受下你的學習成果#65377;
參考文獻:
[1] 鄧文淵.ASP與網絡數據庫技術[M].北京:中國鐵道出版社,2004.
[2] 馮靜哲.Access數據庫應用[M].北京:清華大學出版社,2006.
[3] 姚怡.網站建設與管理[M].北京:中國鐵道出版社,2003.