三、查看具體內容部分
查看具體內容部分的原理跟查看主題部分的原理類似:向服務器端發(fā)送請求,根據(jù)返回情況顯示返回內容。
A、 Asp部分
新建一個空白文件,命名為show.asp,內容如下:
<%
id = request("id")
set conn=Server.CreateObject("ADODB.Connection")
conn.open "Driver={SQL Server};SERVER=192.168.1.32;DATABASE=pywz"
set rstemp=Server.CreateObject("ADODB.Recordset")
sqltemp="select * from BbsInfo where id=" & id ‘注釋1
rstemp.open sqltemp,conn, 1, 1
if not rstemp.EOF and not rstemp.BOF then ‘注釋2
response.Write("author=" & trim(rstemp("Author")) & "&id=" & trim(rstemp("ID")) & "&sub=" & rstemp("Title"))
else
response.Write("id=0") ‘注釋3
end if
rstemp.close
conn.close
%>
注釋1部分為根據(jù)id號去查詢相應的記錄內容。注釋2部分為查到相應的記錄,返回記錄內容。注釋3部分為沒有找到相應的記錄,返回id的值為0。
B、 Flash部分
1、新建一個組件,命名為“showloop”,在第一幀的Action面板上增加下面的語句:
_root.count = 0;
stop();
在第五幀上插入關鍵幀,在其Action面板上插入如下語句:
if (!(_root.id)) {
_root.count = _root.count + 1;
if (_root.count > 50)
{
_root.gotoAndPlay("netfalse");
_root.showloop.gotoAndStop(1);
}
_root.showloop.gotoAndPlay(2);
}
else if (_root.id == "0") ‘注釋1
{
_root.showtxt = "找不到符合條件的記錄";
}else
{
_root.showtxt =_root.id add _root.author add _root.sub; ‘注釋2
_root.showloop.gotoAndStop(1);
_root.gotoAndPlay("show");
}
注釋1部分為沒有找到相應的記錄,注釋2部分為顯示返回的記錄內容,并跳轉到相應的界面。
2、將組件“showloop”從圖庫中拖放到場景中,命名為“showloop”。
3、在場景中的“查看”Button的Action面板上依次增加下面的語句:
Button 0上增加:
on(release){
loadVariables("show.asp?id=" add _root.id0, this, "POST");
_root.showloop.gotoAndPlay(2);
}
Button 1上增加:
on(release){
loadVariables("show.asp?id=" add _root.id1, this, "POST");
_root.showloop.gotoAndPlay(2);
}
Button 2上增加:
on(release){
loadVariables("show.asp?id=" add _root.id2, this, "POST");
_root.showloop.gotoAndPlay(2);
}
Button 3上增加:
on(release){
loadVariables("show.asp?id=" add _root.id3, this, "POST");
_root.showloop.gotoAndPlay(2);
}
Button 4上增加:
on(release){
loadVariables("show.asp?id=" add _root.id4, this, "POST");
_root.showloop.gotoAndPlay(2);
}
Button 5上增加:
on(release){
loadVariables("show.asp?id=" add _root.id5, this, "POST");
_root.showloop.gotoAndPlay(2);
}
Button 6上增加:
on(release){
loadVariables("show.asp?id=" add _root.id6, this, "POST");
_root.showloop.gotoAndPlay(2);
}
Button 7上增加:
on(release){
loadVariables("show.asp?id=" add _root.id7, this, "POST");
_root.showloop.gotoAndPlay(2);
}
這些Action無非就是向服務器端發(fā)送請求,啟動循環(huán),只是發(fā)送的參數(shù)不同而已。
4、在主場景中的第15幀插入關鍵幀,幀標簽為“show”,在其Action面板上插入:stop();
場景中的布局如圖6所示。其中文本框的屬性設置如圖7所示。在“返回”Button的Action面板上增加下面的語句:
圖06
圖07
on(release){
_root.gotoAndPlay("main");
}
四、發(fā)表新主題部分
發(fā)表新主題的原理為:向服務端發(fā)送要發(fā)表的內容,服務器端做相應的操作之后返回操作結果。
A、 Asp部分
新建一個文件,命名為insert.asp,其內容如下:
<%
title = request("title")
content = request("content")
author = request("author")
set conn=Server.CreateObject("ADODB.Connection")
conn.open "Driver={SQL Server};SERVER=192.168.1.32;DATABASE=pywz"
sqltemp="insert bbsinfo (Author,Title,Content) values ('" & author & "','" & title & "','" & content & "')"
conn.Execute(sqltemp) ‘注釋1
response.Write("insert=1") ‘注釋2
conn.close
%>
注釋1部分為向數(shù)據(jù)庫中插入相應的值,注釋2部分為返回操作的結果。
B、 Flash部分
1、新建一個組件,命名為“insertloop”,在其第一幀的Action面板上增加下面的語句:
_root.count = 0;
stop();
在第五幀上插入關鍵幀,在其Action面板上增加下面的語句:
if (!(_root.insert)) { ‘注釋1
_root.count = _root.count + 1;
if (_root.count > 50)
{
_root.gotoAndPlay("netfalse");
_root.insertloop.gotoAndStop(1);
}
_root.insertloop.gotoAndPlay(2);
}
else ‘注釋1
{
_root.gotoAndStop("show");
_root.showtxt = "插入成功,請返回";
_root.insertloop.gotoAndStop(1);
}
注釋1部分為檢查是否已經有返回的操作結果。注釋2部分為根據(jù)返回的結果跳轉到相應的界面。
2、回到主場景第10幀,在“發(fā)表”Button的Action面板上增加下面的語句:
on (release){
_root.gotoAndPlay("insert");
}
3、在主場景的第20幀上插入關鍵幀,設幀標簽為“insert”,在幀的Action面板上增加下面的語句:stop();
場景的布局如圖8所示。其中標題所對應的文本框的設置如圖9所示,正文所對應的文本框的設置如圖10所示。
圖08
圖09
圖10
4、將組件“insertloop”從圖庫中拖到第20幀的場景中,命名為“insertloop”。
C、 小結與提高
注意在這里一定要從服務器端返回操作結果,不然Flash中不會知道操作的情況。論壇的回復功能也差不多的制作方法,在這里就不再實現(xiàn)了。
五、刪除部分
刪除部分的原理為:向服務器端發(fā)送要刪除的記錄的id號,服務器端進行相應的操作后返回操作結果。
A、 Asp部分
新建一個文件,命名為del.asp,內容如下:
<%
id = request("id")
set conn=Server.CreateObject("ADODB.Connection")
conn.open "Driver={SQL Server};SERVER=192.168.1.32;DATABASE=pywz"
sqltemp="delete from BbsInfo where id=" & id
conn.Execute(sqltemp) ‘注釋1
response.Write("del=1") ‘注釋2
conn.close
%>
注釋1部分為根據(jù)id號去刪除記錄,注釋2部分為返回操作結果。
B、 Flash部分
1、新建一個組件,新建一個組件,命名為“delloop”,在其第一幀的Action面板上增加下面的語句:
_root.count = 0;
stop();
在第五幀上插入關鍵幀,在其Action面板上增加下面的語句:
if (!(_root.del)) { ‘注釋1
_root.count = _root.count + 1;
if (_root.count > 50)
{
_root.gotoAndPlay("netfalse");
_root.delloop.gotoAndStop(1);
}
_root.delloop.gotoAndPlay(2);
}
else ‘注釋2
{
_root.gotoAndStop("show");
_root.showtxt = "刪除成功,請返回";
_root.delloop.gotoAndStop(1);
}
注釋1部分為檢查是否已經有返回的結果,如果沒有則繼續(xù)循環(huán)。注釋2部分則根據(jù)返回的結果進行相應的處理。
2、將組件“delloop”從圖庫拖到場景的第10幀上,命名為“delloop”。
3、在場景中的“刪除”Button的Action面板上依次增加下面的語句:
Button 0上增加:
on(release){
loadVariables("del.asp?id=" add _root.id0, this, "POST");
_root.delloop.gotoAndPlay(2);
}
Button 1上增加:
on(release){
loadVariables("del.asp?id=" add _root.id1, this, "POST");
_root.delloop.gotoAndPlay(2);
}
Button 2上增加:
on(release){
loadVariables("del.asp?id=" add _root.id2, this, "POST");
_root.delloop.gotoAndPlay(2);
}
Button 3上增加:
on(release){
loadVariables("del.asp?id=" add _root.id3, this, "POST");
_root.delloop.gotoAndPlay(2);
}
Button 4上增加:
on(release){
loadVariables("del.asp?id=" add _root.id4, this, "POST");
_root.delloop.gotoAndPlay(2);
}
Button 5上增加:
on(release){
loadVariables("del.asp?id=" add _root.id5, this, "POST");
_root.delloop.gotoAndPlay(2);
}
Button 6上增加:
on(release){
loadVariables("del.asp?id=" add _root.id6, this, "POST");
_root.delloop.gotoAndPlay(2);
}
Button 7上增加:
on(release){
loadVariables("del.asp?id=" add _root.id7, this, "POST");
_root.delloop.gotoAndPlay(2);
}
這些按鈕上面的Action是向服務器端發(fā)送要刪除的相應記錄的id,同時開始循環(huán),等待返回結果。
4、新場景
在第25幀上插入關鍵幀,幀實例名為“netfalse”,在幀的Action面板上增加下面的語句:
stop();
場景的布局如圖11所示。 “返回”Button的Action面板上增加下面的語句:
圖11
on (release) {
_root.gotoAndPlay("login");
}
C、 小結與提高
刪除記錄也一定要返回操作結果以方便控制流程。還要注意的是,一般論壇中的刪除記錄功能是需要一定權限的,所以在完善功能的時候要控制用戶的權限。
六、總結
至此,一個比較完善的論壇功能就算完成。在這里重點是介紹功能的實現(xiàn),至于界面就還要請大家多多包涵了。如果在制作過程中有什么不明白的地方,可以一邊參考源文件一邊制作,也可以給我寫E-mail: zengyu111@sohu.com。
本實例的開發(fā)環(huán)境和開發(fā)工具如下:WIN2000 Advanced Server、IIS5.0、SQL Server2000、Flash MX、記事本。注意論壇的效果要先將文件放在IIS里面才能看到。
附錄:數(shù)據(jù)庫字段
在本實例中用到兩個表:用戶表(UserInfo)和內容表(BbsInfo),其字段如下所示。
UserInfo表有Userid、Password兩個字段。
BbsInfo表有Id、Title、Author三個字段。
可以根據(jù)應用的需要增加相應的字段。