Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "ASP.NET 網頁製作教本 – 從基本語法學起"— Presentation transcript:

1 ASP.NET 網頁製作教本 – 從基本語法學起
第 18 章 聊天室、新聞討論群組

2 18-1 聊天室

3 範例網頁的組成

4 操作說明 – Step1-1 聊天室要從 Enter.aspx 進入,畫面如下:

5 操作說明 – Step1-2 Users 資料表的內容如下:

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

7 操作說明 – Step 2 三個網頁的用途分別是:

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

9 資料庫的寫入(2) 「時間」欄位的預設值設定成 Now() 函數,當我們新增發言時,Access 會自動幫我們填入當時的系統時間,程式如下:
Talk.aspx #42~49 #42 SQL = "Insert Into Chatroom (姓名, 內容) Values (?, ?)" #43 Cmd = New OleDbCommand( SQL, Conn ) #44 Cmd.Parameters.Add( New OleDbType.Char, 50)) #45 Cmd.Parameters.Add( New OleDbType.VarChar)) #46 = Session("Name") #47 = Word.text #48 #49 Cmd.ExecuteNonQuery()

10 如何重讀資料庫(1)

11 如何重讀資料庫(2) Reload.aspx 網頁每秒鐘會自我重新整理一次,HTML 標示如以下粗體字的部分: <HTML>
<HEAD> <META HTTP-EQUIV="refresh" CONTENT="1";URL="Reload.aspx"> </HEAD> <BODY BgColor=White> 系統時間: <%=Now()%><HR> </BODY> </HTML>

12 如何重讀資料庫(3) View.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

13 如何重讀資料庫(4) 重讀的時間間隔可以由上網者自行設定,而設定的程式在 Setup.aspx 之中: Setup.aspx #23~31
#23 Sub Set_Click(sender As Object, e As EventArgs) #24 If Val(Freq.Text) > 0 Then # Session("Freq") = Val(Freq.Text) #26 Else # Freq.Text = "30" # Session("Freq") = 30 #29 End If #30 Msg.Text = "重讀時間間隔已設定為 " & Freq.Text & "秒!" #31 End Sub

14 架框的設定 顯示 架框,其所輸出的標示如下:
顯示 架框,其所輸出的標示如下: 其中 #69的敘述把 Talk.aspx 及 Setup.aspx 橫向 分割成2:1,而 #68 又把 View.aspx 及 (Talk.aspx, Setup.aspx) 縱向分割成2:1。 t#6 Response.Write( "" & _ # "<HTML>" & _ # "<FRAMESET Rows='*, 2*'>" & _ # " <FRAMESET Cols='2*,*'>" & _ # " <FRAME Src='Talk.aspx' Name='Talk'>" & _ # " <FRAME Src='Setup.aspx'>" & _ # " </FRAMESET>" & _ # " <FRAME Src='View.aspx' Name='View'>" & _ # "</FRAMESET>" & _ # "</HTML>" )

15 18-2 新聞討論群組

16 範例網頁的組成(1)

17 範例網頁的組成 (2)

18 範例網頁的組成 (3)

19 Titles(主題總表) 資料表

20 Details(討論內容) 資料表

21 Titles 及 Details 的關係

22 程式設計注意事項 – Title.aspx:顯示主題總表(1)

23 程式設計注意事項 – Title.aspx:顯示主題總表(2)
#105 Table1.Columns.Add(New DataColumn("日期", GetType(String))) #106 For I = 0 TO Table1.Rows.Count - 1 # Dim D1 As Date = Table1.Rows(I).Item("CreateDate") # Dim D2 As Date = Table1.Rows(I).Item("LastNewsDate") # Table1.Rows(I).Item("日期") = "" & _ # Format( D1, "MM/dd" ) & "-" & _ # Format( D2, "MM/dd" ) #112 Next

24 程式設計注意事項 – Title.aspx:顯示主題總表(3)
注意事項一 : 要按照 LastNewsDate(討論主題最後被討論的日期)欄位做遞減排序。

25 程式設計注意事項 – Title.aspx:顯示主題總表(4)
注意事項二 : 當討論主題越來越多時,所須下載的資料就會越來越多,執行速度也就越來越慢。方法: 1.限定資料錄的筆數。 2.只選取若干天以內所發起或討論過的主題。 Select Top 50 * From Titles Order By LastNewsDate Desc Select * From Titles Where LastNewsDate > DateAdd('d',-14,Now()) Order By LastNewsDate Desc

26 程式設計注意事項 – Detail.aspx:儲存討論內容(1)
當上網者進入某一個討論主題,並且發表意見之後,Detail.aspx 除了要將討論內容儲存於 Details 資料表之外,也會同時更新 Titles 資料表的以下兩個欄位:

27 程式設計注意事項 – Detail.aspx:儲存討論內容(2)
所撰寫的更新敘述如下: Detail.aspx #160~163 #160 SQL = "Update Titles Set LastNewsDate=Now(), [Number]=[Number]+1" & _ # " Where TitleID=" & TitleID #162 Cmd = New OleDbCommand( SQL, Conn ) #163 Cmd.ExecuteNonQuery()

28 程式設計注意事項 – Detail.aspx:儲存討論內容(3)
以上程式出現了兩個特殊的敘述: Update Titles Set LastNewsDate=Now(), [Number]=[Number]+1: (1) Now 是 VB 的函數,可以使用於 SQL 指令 。 (2) Number 是 SQL 的保留字,要存取名稱為 Number 的欄位,須在名稱前後加上 [ ],使之成為 [Number]。 “ Where TitleID=” & TitleID:忽略了這個條件式,則 Tiltles 資料表的所有資料錄將會全部被更新。


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

Similar presentations


Ads by Google