asp.net 網頁製作教本 – 從基本語法學起
DESCRIPTION
ASP.NET 網頁製作教本 – 從基本語法學起. 第 18 章 聊天室、新聞討論群組. 18-1 聊天室. 範例網頁的組成. 操作說明 – Step1-1. 聊天室要從 Enter.aspx 進入,畫面如下:. 操作說明 – Step1-2. Users 資料表的內容如下:. 操作說明 – Step1-3. 架框網頁 :. 操作說明 – Step 2. 三個網頁的用途分別是:. 資料庫的寫入(1). 把發言的內容寫到 Chatroom.mdb 資料庫的 Chatroom 資料表之中,而此一資料表的結構如下:. - PowerPoint PPT PresentationTRANSCRIPT
ASP.NET ASP.NET 網頁製作教本網頁製作教本 – – 從基本語法學起從基本語法學起
第 第 18 18 章 章 聊天室、新聞討論群組聊天室、新聞討論群組
18-1 18-1 聊天室聊天室
範例網頁的組成範例網頁的組成
Chatroom.mdb
Chatroom.mdb讀取
Setup.aspx設定
Talk.aspx發言
View.aspx聊天看板
Enter.aspx進入 進入
聊天室
讀取寫入
Session
操作說明操作說明 – – Step1-1Step1-1
聊天室要從 聊天室要從 Enter.aspx Enter.aspx 進入,畫面如下:進入,畫面如下:
操作說明操作說明 – – Step1-2Step1-2
Users Users 資料表的內容如下:資料表的內容如下: UserID Password Name Email
ada ad6633 方雅達 [email protected]
david da6666 吳大衛 [email protected]
Jackie Ja2255 陳龍 [email protected]
James Ja111010 詹明文 [email protected]
jason ja7700 謝捷森 [email protected]
jimmy ji1188 楊吉米 [email protected]
kjwang kj6688 王國榮 [email protected]
sam sa2266 馬山姆 [email protected]
sue su1155 將淑華 [email protected]
toto to6666 江咚咚 [email protected]
walter wa6677 李水特 [email protected]
操作說明操作說明 – – Step1-3Step1-3 架框網頁架框網頁 : :
Talk.aspx Setup.aspx
View.aspx
操作說明操作說明 – – Step 2Step 2
三個網頁的用途分別是:三個網頁的用途分別是:
網頁 網頁用途Talk.aspx 輸入聊天內容的網頁Setup.aspx 設定重讀聊天看板的時間間隔View.aspx 顯示聊天的內容
資料庫的寫入資料庫的寫入 (1)(1)
把發言的內容寫到 把發言的內容寫到 Chatroom.mdb Chatroom.mdb 資料資料庫的 庫的 Chatroom Chatroom 資料表之中,而此一資資料表之中,而此一資料表的結構如下:料表的結構如下:
欄位名稱 資料類型 預設值姓名 文字 ─
時間 日期/時間 Now()
內容 備忘 ─
資料庫的寫入資料庫的寫入 (2)(2) 「時間」欄位的預設值設定成 「時間」欄位的預設值設定成 Now() Now() 函函
數,當我們新增發言時,數,當我們新增發言時, Access Access 會自動會自動幫我們填入當時的系統時間,程式如下:幫我們填入當時的系統時間,程式如下:
Talk.aspx #42~ 49
#42 SQL = "Insert Into Chatroom ( 姓名 , 內容 ) Values (?, ?)"
#43 Cmd = New OleDbCommand( SQL, Conn )
#44 Cmd.Parameters.Add( New OleDbParameter("@ 姓名 ", OleDbType.Char, 50))
#45 Cmd.Parameters.Add( New OleDbParameter("@ 內容 ", OleDbType.VarChar))
#46 Cmd.Parameters("@ 姓名 ").Value = Session("Name")
#47 Cmd.Parameters("@ 內容 ").Value = Word.text
#48
#49 Cmd.ExecuteNonQuery()
如何重讀資料庫如何重讀資料庫 (1)(1)
每秒重新顯示一次
如何重讀資料庫如何重讀資料庫 (2)(2) Reload.aspx Reload.aspx 網頁每秒鐘會自我重新整理網頁每秒鐘會自我重新整理
一次,一次, HTML HTML 標示如以下粗體字的部分:標示如以下粗體字的部分:<HTML>
<HEAD>
<META HTTP-EQUIV="refresh" CONTENT="1";URL="Reload.aspx">
</HEAD>
<BODY BgColor=White>
系統時間 : <%=Now()%><HR>
</BODY>
</HTML>
如何重讀資料庫如何重讀資料庫 (3)(3)
View.aspxView.aspx ,,其關鍵性的標示及程式碼如下:其關鍵性的標示及程式碼如下:
View.aspx
#05 <Head>#06 <META HTTP-EQUIV="refresh“ CONTENT="<%=Freq%>";URL="<%=URL%>">#07 </Head>…#37 Dim Freq As Integer#38 Dim URL As String#39 Sub Page_Load(sender As Object, e As EventArgs) #40 Freq = Session( "Freq" )#41 If Freq = 0 Then Freq = 30#42 URL = Request.ServerVariables("PATH_INFO")…#62 End Sub
如何重讀資料庫如何重讀資料庫 (4)(4)
重讀的時間間隔可以由上網者自行設定,重讀的時間間隔可以由上網者自行設定,而設定的程式在 而設定的程式在 Setup.aspx Setup.aspx 之中:之中:
Setup.aspx #23~ 31
#23 Sub Set_Click(sender As Object, e As EventArgs) #24 If Val(Freq.Text) > 0 Then#25 Session("Freq") = Val(Freq.Text)#26 Else#27 Freq.Text = "30"#28 Session("Freq") = 30#29 End If#30 Msg.Text = " 重讀時間間隔已設定為 " & Freq.Text & " 秒 !"#31 End Sub
架框的設定架框的設定 顯示 架框,其所輸出的標示如下:顯示 架框,其所輸出的標示如下:
其中 其中 #69#69 的敘述把 的敘述把 Talk.aspx Talk.aspx 及 及 Setup.aspx Setup.aspx 橫向分橫向分割 成割 成 2:12:1 , 而 , 而 #68 #68 又 把 又 把 View.aspx View.aspx 及 及 ((Talk.aspx, Talk.aspx, Setup.aspx) Setup.aspx) 縱向分割成縱向分割成 2:12:1 。。
t#6 Response.Write( "" & _#67 "<HTML>" & _#68 "<FRAMESET Rows='*, 2*'>" & _#69 " <FRAMESET Cols='2*,*'>" & _#70 " <FRAME Src='Talk.aspx' Name='Talk'>" & _#71 " <FRAME Src='Setup.aspx'>" & _#72 " </FRAMESET>" & _#73 " <FRAME Src='View.aspx' Name='View'>" & _#74 "</FRAMESET>" & _#75 "</HTML>" )
18-2 18-2 新聞討論群組新聞討論群組
範例網頁的組成範例網頁的組成 (1)(1)
進入討論
News.mdb
送出討論主題
送出討論內容 返回討論群組主畫面
主題總表 主題討論
Title.aspx顯示標題
Detail.aspx討論內容
讀寫讀寫
範例網頁的組成範例網頁的組成 (2)(2)
發起新的討論主題
列出所有主題
範例網頁的組成範例網頁的組成 (3)(3)
TitlesTitles(( 主題總表主題總表 )) 資料表資料表 欄位名稱 資料類型 預設值 說明TitleID 自動編號 - 討論主題 ID
Email 文字 - Email
Name 文字 - 作者姓名Subject 備忘 - 討論主題Words 備忘 - 內容詳述CreateDate 日期/時間 Now() 討論主題發起日LastNewsDate 日期/時間 Now() 討論主題最後被討論的日期Number 數值 ─ 參與討論的則數
DetailsDetails(( 討論內容討論內容 )) 資料表資料表 欄位名稱 資料類型 預設值 說明TitleID 數值 - 討論主題 ID
DetailID 自動編號 - 討論內容 ID
Email 文字 - Email
Name 文字 - 作者姓名Subject 備忘 - 討論內容主題Words 備忘 - 討論內容詳述NewsDate 日期/時間 Now() 討論內容的建立日期
Titles Titles 及 及 Details Details 的關係的關係 /主表 Titles 資料表 /明細表 Details 資料表
TitleIDNumber …5 1…1 2…1 3…
TitleID …1 …1 …1 …1 …1 …2 …3 …
程式設計注意事項程式設計注意事項 – –Title.aspxTitle.aspx ::顯示主題總顯示主題總
表表 (1)(1)Name欄位
Number欄位
Subject欄位
組合欄位
LastNewsDate欄位CreateDate欄位
程式設計注意事項程式設計注意事項 – –Title.aspxTitle.aspx ::顯示主題總顯示主題總
表表 (2)(2) Title.aspx Title.aspx 建立「日期」欄位的程式:建立「日期」欄位的程式:
Title.aspx #105~ 112
#105 Table1.Columns.Add(New DataColumn(" 日期 ", GetType(String)))
#106 For I = 0 TO Table1.Rows.Count - 1
#107 Dim D1 As Date = Table1.Rows(I).Item("CreateDate")
#108 Dim D2 As Date = Table1.Rows(I).Item("LastNewsDate")
#109 Table1.Rows(I).Item(" 日期 ") = "" & _#110 Format( D1, "MM/dd" ) & "-" & _
#111 Format( D2, "MM/dd" )
#112 Next
程式設計注意事項程式設計注意事項 – –Title.aspxTitle.aspx ::顯示主題總顯示主題總
表表 (3)(3) 注意事項一注意事項一 ::–要按照 要按照 LastNewsDate(LastNewsDate( 討論主題最後被討論主題最後被討論的日期討論的日期 )) 欄位做遞減排序。欄位做遞減排序。
程式設計注意事項程式設計注意事項 – –Title.aspxTitle.aspx ::顯示主題總顯示主題總
表表 (4)(4) 注意事項二注意事項二 ::
–當討論主題越來越多時,所須下載的資料就當討論主題越來越多時,所須下載的資料就會越來越多,執行速度也就越來越慢。方法:會越來越多,執行速度也就越來越慢。方法:
1.1. 限定資料錄的筆數。限定資料錄的筆數。
2.2. 只選取若干天以內所發起或討論過的主題。只選取若干天以內所發起或討論過的主題。Select Top 50 * From Titles Order By LastNewsDate Desc
Select * From Titles Where LastNewsDate > DateAdd('d',-14,Now()) Order By LastNewsDate Desc
程式設計注意事項程式設計注意事項 – –Detail.aspxDetail.aspx ::儲存討論內容儲存討論內容
(1)(1) 當上網者進入某一個討論主題,並且發當上網者進入某一個討論主題,並且發表意見之後,表意見之後, Detail.aspx Detail.aspx 除了要將討論除了要將討論內容儲存於 內容儲存於 Details Details 資料表之外,也會資料表之外,也會同時更新 同時更新 Titles Titles 資料表的以下兩個欄位:資料表的以下兩個欄位: 欄位 更新後的內容LastNewsDate(最後被討論的時間) 系統時間(取Now() 函數)
Number(參與討論的則數) 原數加一
程式設計注意事項程式設計注意事項 – –Detail.aspxDetail.aspx ::儲存討論內儲存討論內
容容 (2)(2) 所撰寫的更新敘述如下:所撰寫的更新敘述如下:
Detail.aspx #160~ 163
#160 SQL = "Update Titles Set LastNewsDate=Now(), [Number]=[Number]+1" & _
#161 " Where TitleID=" & TitleID
#162 Cmd = New OleDbCommand( SQL, Conn )
#163 Cmd.ExecuteNonQuery()
程式設計注意事項程式設計注意事項 – –Detail.aspxDetail.aspx ::儲存討論內儲存討論內
容容 (3)(3) 以上程式出現了兩個特殊的敘述:以上程式出現了兩個特殊的敘述: 1.1. Update Titles Set Update Titles Set LastNewsDate=Now()LastNewsDate=Now(), ,
[Number]=[Number]+1[Number]=[Number]+1::2.2. (1) (1) Now Now 是 是 VB VB 的函數,可以使用於 的函數,可以使用於 SQL SQL 指令 。指令 。
(2) (2) Number Number 是 是 SQL SQL 的保留字,要存取名稱為 的保留字,要存取名稱為 Number Number 的欄位,須在名稱前後加上 的欄位,須在名稱前後加上 [ ][ ] ,使之成,使之成為 為 [[Number]Number]。。
3.3. “ “ Where TitleID=” & TitleIDWhere TitleID=” & TitleID ::忽略了這個條件式,忽略了這個條件式,則 則 Tiltles Tiltles 資料表的所有資料錄將會全部被更新。資料表的所有資料錄將會全部被更新。