asp.net 網頁製作教本 – 從基本語法學起

28
ASP.NET ASP.NET 網網網網網網 網網網網網網 網網網網網網網 網網網網網網網 18 18 第第第 第第第第第第 第第第 第第第第第第

Upload: jabir

Post on 05-Jan-2016

89 views

Category:

Documents


6 download

DESCRIPTION

ASP.NET 網頁製作教本 – 從基本語法學起. 第 18 章 聊天室、新聞討論群組. 18-1 聊天室. 範例網頁的組成. 操作說明 – Step1-1. 聊天室要從 Enter.aspx 進入,畫面如下:. 操作說明 – Step1-2. Users 資料表的內容如下:. 操作說明 – Step1-3. 架框網頁 :. 操作說明 – Step 2. 三個網頁的用途分別是:. 資料庫的寫入(1). 把發言的內容寫到 Chatroom.mdb 資料庫的 Chatroom 資料表之中,而此一資料表的結構如下:. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: ASP.NET  網頁製作教本  – 從基本語法學起

ASP.NET ASP.NET 網頁製作教本網頁製作教本 – – 從基本語法學起從基本語法學起

第 第 18 18 章 章 聊天室、新聞討論群組聊天室、新聞討論群組

Page 2: ASP.NET  網頁製作教本  – 從基本語法學起

18-1 18-1 聊天室聊天室

Page 3: ASP.NET  網頁製作教本  – 從基本語法學起

範例網頁的組成範例網頁的組成

Chatroom.mdb

Chatroom.mdb讀取

Setup.aspx設定

Talk.aspx發言

View.aspx聊天看板

Enter.aspx進入 進入

聊天室

讀取寫入

Session

Page 4: ASP.NET  網頁製作教本  – 從基本語法學起

操作說明操作說明 – – Step1-1Step1-1

聊天室要從 聊天室要從 Enter.aspx Enter.aspx 進入,畫面如下:進入,畫面如下:

Page 5: ASP.NET  網頁製作教本  – 從基本語法學起

操作說明操作說明 – – 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]

Page 6: ASP.NET  網頁製作教本  – 從基本語法學起

操作說明操作說明 – – Step1-3Step1-3 架框網頁架框網頁 : :

Talk.aspx Setup.aspx

View.aspx

Page 7: ASP.NET  網頁製作教本  – 從基本語法學起

操作說明操作說明 – – Step 2Step 2

三個網頁的用途分別是:三個網頁的用途分別是:

網頁 網頁用途Talk.aspx 輸入聊天內容的網頁Setup.aspx 設定重讀聊天看板的時間間隔View.aspx 顯示聊天的內容

Page 8: ASP.NET  網頁製作教本  – 從基本語法學起

資料庫的寫入資料庫的寫入 (1)(1)

把發言的內容寫到 把發言的內容寫到 Chatroom.mdb Chatroom.mdb 資料資料庫的 庫的 Chatroom Chatroom 資料表之中,而此一資資料表之中,而此一資料表的結構如下:料表的結構如下:

欄位名稱 資料類型 預設值姓名 文字 ─

時間 日期/時間 Now()

內容 備忘 ─

Page 9: ASP.NET  網頁製作教本  – 從基本語法學起

資料庫的寫入資料庫的寫入 (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()

Page 10: ASP.NET  網頁製作教本  – 從基本語法學起

如何重讀資料庫如何重讀資料庫 (1)(1)

每秒重新顯示一次

Page 11: ASP.NET  網頁製作教本  – 從基本語法學起

如何重讀資料庫如何重讀資料庫 (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>

Page 12: ASP.NET  網頁製作教本  – 從基本語法學起

如何重讀資料庫如何重讀資料庫 (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

Page 13: ASP.NET  網頁製作教本  – 從基本語法學起

如何重讀資料庫如何重讀資料庫 (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

Page 14: ASP.NET  網頁製作教本  – 從基本語法學起

架框的設定架框的設定 顯示 架框,其所輸出的標示如下:顯示 架框,其所輸出的標示如下:

其中 其中 #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>" )

Page 15: ASP.NET  網頁製作教本  – 從基本語法學起

18-2 18-2 新聞討論群組新聞討論群組

Page 16: ASP.NET  網頁製作教本  – 從基本語法學起

範例網頁的組成範例網頁的組成 (1)(1)

進入討論

News.mdb

送出討論主題

送出討論內容 返回討論群組主畫面

主題總表 主題討論

Title.aspx顯示標題

Detail.aspx討論內容

讀寫讀寫

Page 17: ASP.NET  網頁製作教本  – 從基本語法學起

範例網頁的組成範例網頁的組成 (2)(2)

發起新的討論主題

列出所有主題

Page 18: ASP.NET  網頁製作教本  – 從基本語法學起

範例網頁的組成範例網頁的組成 (3)(3)

Page 19: ASP.NET  網頁製作教本  – 從基本語法學起

TitlesTitles(( 主題總表主題總表 )) 資料表資料表 欄位名稱 資料類型 預設值 說明TitleID 自動編號 - 討論主題 ID

Email 文字 - Email

Name 文字 - 作者姓名Subject 備忘 - 討論主題Words 備忘 - 內容詳述CreateDate 日期/時間 Now() 討論主題發起日LastNewsDate 日期/時間 Now() 討論主題最後被討論的日期Number 數值 ─ 參與討論的則數

Page 20: ASP.NET  網頁製作教本  – 從基本語法學起

DetailsDetails(( 討論內容討論內容 )) 資料表資料表 欄位名稱 資料類型 預設值 說明TitleID 數值 - 討論主題 ID

DetailID 自動編號 - 討論內容 ID

Email 文字 - Email

Name 文字 - 作者姓名Subject 備忘 - 討論內容主題Words 備忘 - 討論內容詳述NewsDate 日期/時間 Now() 討論內容的建立日期

Page 21: ASP.NET  網頁製作教本  – 從基本語法學起

Titles Titles 及 及 Details Details 的關係的關係 /主表 Titles 資料表 /明細表 Details 資料表

TitleIDNumber …5 1…1 2…1 3…

TitleID …1 …1 …1 …1 …1 …2 …3 …

Page 22: ASP.NET  網頁製作教本  – 從基本語法學起

程式設計注意事項程式設計注意事項 – –Title.aspxTitle.aspx ::顯示主題總顯示主題總

表表 (1)(1)Name欄位

Number欄位

Subject欄位

組合欄位

LastNewsDate欄位CreateDate欄位

Page 23: ASP.NET  網頁製作教本  – 從基本語法學起

程式設計注意事項程式設計注意事項 – –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

Page 24: ASP.NET  網頁製作教本  – 從基本語法學起

程式設計注意事項程式設計注意事項 – –Title.aspxTitle.aspx ::顯示主題總顯示主題總

表表 (3)(3) 注意事項一注意事項一 ::–要按照 要按照 LastNewsDate(LastNewsDate( 討論主題最後被討論主題最後被討論的日期討論的日期 )) 欄位做遞減排序。欄位做遞減排序。

Page 25: ASP.NET  網頁製作教本  – 從基本語法學起

程式設計注意事項程式設計注意事項 – –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

Page 26: ASP.NET  網頁製作教本  – 從基本語法學起

程式設計注意事項程式設計注意事項 – –Detail.aspxDetail.aspx ::儲存討論內容儲存討論內容

(1)(1) 當上網者進入某一個討論主題,並且發當上網者進入某一個討論主題,並且發表意見之後,表意見之後, Detail.aspx Detail.aspx 除了要將討論除了要將討論內容儲存於 內容儲存於 Details Details 資料表之外,也會資料表之外,也會同時更新 同時更新 Titles Titles 資料表的以下兩個欄位:資料表的以下兩個欄位: 欄位 更新後的內容LastNewsDate(最後被討論的時間) 系統時間(取Now() 函數)

Number(參與討論的則數) 原數加一

Page 27: ASP.NET  網頁製作教本  – 從基本語法學起

程式設計注意事項程式設計注意事項 – –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()

Page 28: ASP.NET  網頁製作教本  – 從基本語法學起

程式設計注意事項程式設計注意事項 – –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 資料表的所有資料錄將會全部被更新。資料表的所有資料錄將會全部被更新。