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

Slides:



Advertisements
Similar presentations
模块五 动态网页技术 任务五 查询记录 任务一 表单设计制作 任务二 简单动态的 ASP 页面制作任务三 页面与数据库的集成任务四 添加记录 任务六 电商系统融入网站.
Advertisements

第五章 通用网关接口 CGI 简介 Htm l Html + CGI Html + asp 网页可以处理动态的信息.
第15章 教学成绩管理系统的ASP实现 教学提示:本章主要通过案例《教学成绩管理系统(ASP版)》,演示以SQL Server 2000为后台数据库,用ASP进行B/S结构的数据库应用程序的开发。本教材提供了案例全部源代码及设计文档,请同学们进行阅读、研究,重点在了解B/S结构下的数据库应用程序的总体结构。
主讲:史治平 地址:四川电大计算机教研室 电话:
十一 ASP对数据库的访问.
第八章 DataGrid 與 DataTable 瀏覽器 DataTable DataGrid 存取 顯示表格 暑資碩三 房玄博 報告.
ASP.NET 網頁製作教本 – 從基本語法學起
ADO .NET 簡介.
第8章 设计数据库应用网站 本章讲述的主要内容 8.1 数据库基础知识 8.2 使用数据库系统 8.3 SQL查询基础
Access数据库程序设计 总复习.
网页 设计与制作.
第13章 FTP檔案上傳、 自動傳送 報告人 M9153314 李育旻.
《ASP.NET数据库网站设计教程(C#版)》
Ch03 VB.NET語法建立ASP.NET 網頁程式設計.
計算機概論 請老師填入姓名主講 課本:數位傳真2012 博碩文化出版發行.
Chapter 4 基本伺服器控制項.
ASP.NET 網頁製作教本 – 從基本語法學起
Ch11 檔案上傳及電子郵件 WEB程式設計.
ASP.NET 網頁製作教本 – 從基本語法學起
課程名稱:資料庫系統 授課老師:李春雄 博士
PHP與SQL語法存取MySQL SQL
ASP.NET 網頁製作教本 – 從基本語法學起
Chapter 12 T-SQL 語法與 ASP.NET.
HTML 钟晖云 QQ:
第八章 利用SELECT查詢資料.
彰化縣政府補助辦理網頁設計資料庫應用班 ASP與資料庫介紹 建國技術學院資管系 饒瑞佶.
電子商務網站建制技術與實習(II) 助教:江宜政 吳昇洋.
ASP.NET 網頁製作教本 – 從基本語法學起
ASP.NET 網頁製作教本 – 從基本語法學起
課程名稱:資料庫系統 授課老師:李春雄 博士
主 讲 教 师:陆有军 Web技术与应用 第六章 ADO.NET 主 讲 教 师:陆有军
課程名稱:資料庫系統 授課老師:李春雄 博士
班級:博、碩子一甲 授課老師:鐘國家 助教:陳國政
第6章 ADO.NET数据访问接口 6.
上述代码规范了 INSERT 语句的编写规范,其中:
Controls.
ASP.NET 網頁製作教本 – 從基本語法學起
ASP.NET 網頁製作教本 – 從基本語法學起
讲课人:王璞 浙江工商职业技术学院.
5.1.1 使用 ExecuteReader()操作数据库
课程设计 归纳总结 4 知识目标 1 讲授新课 2 任务操作 3 布置作业 5.
第10章 網頁資料庫的顯示與維護 10-1 再談資料控制項 10-2 GridView控制項 10-3 DetailsView控制項
網頁切換移轉 JS vs. ASP.NET.
ASP.NET 網頁製作教本 – 從基本語法學起
第3 章 VBScript的控制结构.
第十二章 SQL語言簡介 講授大綱: 新增資料庫 新增資料表 新增資料 修改資料 刪除資料 查詢資料 透視ASP.NET-第12章
主 讲 教 师:陆有军 Web技术与应用 第四章 内部对象 主 讲 教 师:陆有军
第3章 ASP.NET程序设计基础 3.
網頁切換移轉 JS vs. ASP.NET.
C# 程序设计教程 同济大学计算机系基础学科组
第 8 章 VB.NET与数据库应用程序 本章主要内容: ADO.NET体系结构; VB.NET与SQL Server数据库的连接;
第10章 網頁資料庫顯示與維護控制項 10-1 資料來源控制項 10-2 Repeater控制項 10-3 DataList控制項
PHP +MySQL快速入門 Lesson 3.
第4章 ASP.NET的HTTP物件、輸出入與Cookie處理
程式語言與邏輯 高慧君 台北市立南港高中 2006年12月22日.
Pocket Access.
第18章 個人入口網站的建立 18-1入口網站的基礎 18-2 建立網站的搜尋引擎 18-3 網頁組件的個人化功能
VB2005 DataBase Manipulation Command for Access
第十讲 学生成绩管理系统(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
Ch04 VB.NET的流程控制 網頁程式設計.
3.2 Mysql 命令行 1 查看数据库 SHOW DATABASES; 2 创建一个数据库test1 CREATE DATABASE test1; 3 选择你所创建的数据库 USE test1; (按回车键出现Database changed 时说明操作成功!) 4 查看现在的数据库中存在什么表.
SQL查询语句 蔡海洋.
1 Session对象的特性 Session 状态对象 Session 对象常用的方法有: Session 对象常用的属性有:
期末考.
Controls.
GridView.
ASP.NET实用教程 清华大学出版社 第9章数据库应用 教学目标 教学重点 教学过程 2019年5月3日.
Dreamweaver 進階網頁製作 B 許天彰.
再戰DataSet.
数据库应用技术 天津电大 翟迎建.
Presentation transcript:

ASP.NET 網頁製作教本 – 從基本語法學起 第 16 章 線上投票、線上問卷調查

16-1 線上投票

範例網頁的組成

Vote.aspx 網頁

Vote.mdb 的 Vote 資料庫(表)的結構

Vote.mdb 的 Vote 資料庫(表)的內容

比例橫條圖的顯示

Bar.htm <IMG SRC="100.gif" Width=400 Height=16 Align=TextTop> 100%<P> <IMG SRC="100.gif" Width=200 Height=16 Align=TextTop> 50%<P> <IMG SRC="100.gif" Width=100 Height=16 Align=TextTop> 25%<P> <IMG SRC="100.gif" Width=50 Height=16 Align=TextTop> 12.5%<P> <IMG SRC="100.gif" Width=25 Height=16 Align=TextTop> 6.25%<P>

Result.aspx #58 ' 計算得票率,並且產生比例橫條圖 #58 ' 計算得票率,並且產生比例橫條圖 #59 For I = 0 To Table1.Rows.Count - 1 #60 Dim Rate = Table1.Rows(I).Item("得票數") / Total #61 Dim RateHTML As String #62 Dim RateValue As String #63 #64 RateHTML = "<IMG SRC=100.gif Height=16 Width=" & _ #65 Rate*400 & " Align=TextTop>" #66 RateValue = "(" & FormatNumber(Rate*100, 2) & "%)" #67 Table1.Rows(I).Item("得票率") = RateHTML & RateValue #68 Next

動態產生選項 #29 Dim Conn As OleDbConnection, Cmd As OleDbCommand #30 Dim Rd As OleDbDataReader, SQL As String #31 #32 Conn = New OleDbConnection( Provider & ";" & DataBase ) #33 Conn.Open() #34 SQL = "Select * From Vote" #35 Cmd = New OleDbCommand( SQL, Conn ) #36 Rd = Cmd.ExecuteReader() #37 #38 While Rd.Read() #39 Candidate.Items.Add( Rd.Item(“世界奇景”) ) #40 End While #41 Conn.Close()

判斷瀏覽器的 Cookie 是否開啟(1)

判斷瀏覽器的 Cookie 是否開啟(2) 第一次被瀏覽 #25 Sub Page_Load(sender As Object, e As EventArgs) #26 If Not IsPostBack Then #27 Session("IsCookieOpen") = "Set in Page_Load" #28 … #42 End If #43 End Sub 投票鈕被按下 #45 Sub Vote_Click(sender As Object, e As EventArgs) #46 Msg.Text = "" #47 #48 ' 檢查瀏覽器的 Cookie 是否開啟 #49 If Session("IsCookieOpen") <> "Set in Page_Load" Then #50 Msg.Text = "欲參與投票, 請先開啟瀏覽器的 Cookie, " & _ #51 "然後關閉瀏覽器, 再重新啟動瀏覽器!" #71 End Sub

倒票攻防戰 #56 If Session("Voted") <> "Yes" Then ' 還沒投過票 #57 Dim Conn As OleDbConnection, Cmd As OleDbCommand #58 Conn = New OleDbConnection( Provider & ";" & DataBase ) #59 Conn.Open() #60 Dim SQL = "Update Vote Set 得票數=得票數+1 " & _ #61 "Where 世界奇景='" & Sel & "'" #62 Cmd = New OleDbCommand( SQL, Conn ) #63 Cmd.ExecuteNonQuery() #64 Conn.Close() #65 Session("Voted") = "Yes" #66 Response.Redirect( "Result.aspx" ) #67 Else #68 Msg.Text = "您已經投過票了, 不能重複投票!" #69 End If

設定 Cookie 物件的期限 修改一:Vote.aspx #56 #56 If Session("Voted") <> "Yes" Then ' 還沒投過票   修改成:Vote2.aspx #57~62 #57 Dim cookie As HttpCookie, value As String #58 cookie = Request.Cookies("Voted") #59 If Not cookie Is Nothing Then #60 value = Request.Cookies("Voted").Value #61 End If #62 If value <> "Yes" Then ' 還沒投過票 修改二:Vote.aspx #65 #65 Session("Voted") = "Yes" 修改成:Vote2.aspx #71~72 #71 Response.Cookies("Voted").Value = "Yes" #72 Response.Cookies("Voted").Expires = "12/31/2999"

Vote2.aspx 的破解 選取功能表的「工具->網際網路選項」,然後按下「刪除 Cookie」鈕,如下圖,就可以將檔案中的 Cookie 全數刪除。

線上投票第三版 在 Vote.mdb 資料庫中建立 VoteRecord 資料表,記錄投票者的 IP 位址及投票時間,其內容如下:

程式的撰寫(1) #56 ' 檢查上次投票時間是否已經超過 10 分鐘 #56 ' 檢查上次投票時間是否已經超過 10 分鐘 #57 Dim IP = Request.ServerVariables("REMOTE_ADDR") #58 SQL = "Select * From VoteRecord Where IP = '" & IP & "' " #59 SQL &= "Order By VoteTime Desc" #60 Cmd = New OleDbCommand( SQL, Conn ) #61 Rd = Cmd.ExecuteReader() #62 If Rd.Read() #63 NextTime = 10 - DateDiff("n", Rd.Item("VoteTime"), Now) #64 End If #65 Rd.Close() #66 #67 ' 沒投過票或距離上次投票已經超過 10 分鐘 #68 If NextTime <= 0 Then #69 ' 將得票數加一 #70 SQL = "Update Vote Set 得票數=得票數+1 " & _ #71 "Where 世界奇景='" & Sel & "'" #72 Cmd = New OleDbCommand( SQL, Conn ) #73 Cmd.ExecuteNonQuery()

程式的撰寫(2) #74 #75 ' 記錄 IP 及 投票時間 #76 Dim Tm = Format(Now(), "MM/dd/yyyy HH:mm:ss") #77 SQL = "Insert Into VoteRecord (IP, VoteTime) " & _ #78 "Values ('" & IP & "', #" & Tm & "#)" #79 Cmd = New OleDbCommand( SQL, Conn ) #80 Cmd.ExecuteNonQuery() #81 #82 Response.Redirect( "Result3.aspx" ) #83 Else #84 Msg.Text = "您已經投過票了, 不能重複投票!" #85 End If

Proxy 的問題

16-2 線上問卷調查

範例網頁的組成

Opinion.mdb 資料庫 的 Title 資料表

Opinion.aspx 網頁

OpShow.aspx 網頁

動態產生問卷表單 – Panel.aspx(1) <HTML> <BODY> <H3>Panel.aspx -- 利用 Panel 收納其他控制元件<HR></H3> <Form runat="server"> <asp:Panel runat="server" id="MyPanel" /><p> <asp:Button runat="server" Text="輸入" OnClick="Button_Click" /> <HR> <asp:Label runat="server" id="Msg" /> </Form> </BODY> </HTML>   <script language="VB" runat=server> Sub Page_Load(sender As Object, e As EventArgs) ' 利用程式動態產生 TextBox Dim Text1 As New TextBox Text1.Columns = 10 

動態產生問卷表單 – Panel.aspx(2) ' 利用程式動態產生「文字」 Dim Literal1 As New LiteralControl Literal1.Text = "<br>(請在文字方塊中輸入資料)<p>"   ' 加入於 Panel 之中,也就是加入於網頁中 MyPanel.Controls.Add( Text1 ) MyPanel.Controls.Add( Literal1 ) End Sub Sub Button_Click(sender As Object, e As EventArgs) Dim Text1 As TextBox = MyPanel.Controls(0) Msg.Text = Text1.Text </script>

Panel.aspx 網頁

Button_Click 事件程序中的程式 Dim Text1 As TextBox = MyPanel.Controls(0) Msg.Text = Text1.Text

Opinion.aspx #36~62 (1) #36 Conn = New OleDbConnection( Provider & ";" & DataBase ) #37 Conn.Open() #38 SQL = "Select * From Title" #39 Cmd = New OleDbCommand( SQL, Conn ) #40 Rd = Cmd.ExecuteReader() #41 #42 While Rd.Read() #43 Dim Literal1 As New LiteralControl #44 Dim Rlist As New RadioButtonList #45 Dim Literal2 As New LiteralControl #46 #47 Literal1.Text = Rd.Item("Seq") & ". " #48 Literal1.Text &= Rd.Item("Title") & "<Blockquote>" #49 Literal2.Text = "</Blockquote>"

Opinion.aspx #36~62 (2) #50 #51 RList.RepeatColumns = 5 #52 For I = 1 To 5 #53 RList.Items.Add( Rd.Item("Op" & I) ) #54 RList.Items(I-1).Value = "Op" & I & "Count" #55 Next #56 RList.Items(0).Selected = True #57 #58 MyPanel.Controls.Add( Literal1 ) #59 MyPanel.Controls.Add( RList ) #60 MyPanel.Controls.Add( Literal2 ) #61 DataRows += 1 #62 End While

Title 資料表各欄位與控制元件之間的關係

4 個 RadioButtonList 請注意 #58~60 加入控制元件到 Panel 時,其順序是「Literal1, RList, Literal2, Literal1, RList, Literal2...」(編號依序是 0, 1, 2, 3, 4, 5...),所以在以上網頁中,4 個 RadioButtonList 將分別等於: 第一個 RadioButtonList = MyPanel.Controls(1) 第二個 RadioButtonList = MyPanel.Controls(4) 第三個 RadioButtonList = MyPanel.Controls(7) 第四個 RadioButtonList = MyPanel.Controls(10)

Opinion.aspx #76~91 #76 Dim Rlist(DataRows-1) As RadioButtonList #77 #78 For I = 0 To DataRows - 1 #79 RList(I) = MyPanel.Controls(1 + I*3) #80 Next #81 Conn = New OleDbConnection( Provider & ";" & DataBase ) #82 Conn.Open() #83 #84 For I = 1 To DataRows #85 Dim which As String = RList(I-1).SelectedItem.Value #86 SQL = "Update Title Set " & _ #87 which & "=" & which & "+1" & _ #88 " Where Seq=" & I #89 Cmd = New OleDbCommand( SQL, Conn ) #90 Cmd.ExecuteNonQuery() #91 Next

舉例 上網者所填寫的問卷是: #85所得到的結果將等於: SQL指令將等於: 第1題: 非常滿意 對應的欄位是 Op1Count 第2題: 不滿意 對應的欄位是 Op3Count 第3題: 滿意 對應的欄位是 Op2Count 第4題: 非常不滿意 對應的欄位是 Op4Count RList(0).SelectedItem.Value = "Op1Count" RList(1).SelectedItem.Value = "Op3Count" RList(2).SelectedItem.Value = "Op2Count" RList(3).SelectedItem.Value = "Op4Count" Update Title Set Op1Count=Op1Count+1 Where Seq = 1 Update Title Set Op3Count=Op3Count+1 Where Seq = 2 Update Title Set Op2Count=Op2Count+1 Where Seq = 3 Update Title Set Op4Count=Op4Count+1 Where Seq = 4

OpShow.aspx #10~41 (1) #10 <asp:Repeater runat="server" id="MyRepeater"> #11 <ItemTemplate> #12 <%# Container.DataItem("Seq") %>. <%# Container.DataItem("Title") %> #13 <Blockquote><Table> #14 <Tr> #15 <Td><%# Container.DataItem("Op1") %></Td> #16 <Td><%# Container.DataItem("Op1Count") %></Td> #17 <Td><%# Container.DataItem("Rate1") %></Td> #18 </Tr> #19 <Tr> #20 <Td><%# Container.DataItem("Op2") %></Td> #21 <Td><%# Container.DataItem("Op2Count") %></Td> #22 <Td><%# Container.DataItem("Rate2") %></Td> #23 </Tr> #24 <Tr> #25 <Td><%# Container.DataItem("Op3") %></Td> #26 <Td><%# Container.DataItem("Op3Count") %></Td> #27 <Td><%# Container.DataItem("Rate3") %></Td> #28 </Tr>

OpShow.aspx #10~41 (2) #29 <Tr> #30 <Td><%# Container.DataItem("Op4") %></Td> #31 <Td><%# Container.DataItem("Op4Count") %></Td> #32 <Td><%# Container.DataItem("Rate4") %></Td> #33 </Tr> #34 <Tr> #35 <Td><%# Container.DataItem("Op5") %></Td> #36 <Td><%# Container.DataItem("Op5Count") %></Td> #37 <Td><%# Container.DataItem("Rate5") %></Td> #38 </Tr> #39 </Table></Blockquote> #40 </ItemTemplate> #41 </asp:Repeater><p>

OpShow.aspx #65~88(1) #65 Dim Table1 As DataTable = Ds.Tables("Title") #66 For K = 1 To 5 #67 Table1.Columns.Add(New DataColumn("Rate" & K, GetType(String))) #68 Next #69 #70 For I = 0 To Table1.Rows.Count - 1 #71 Dim Total = 0, Value(5) #72 #73 For K = 1 To 5 #74 Value(K) = Table1.Rows(I).Item("Op" & K & "Count") #75 Total += Value(K) #76 Next #77 If Total = 0 Then Total = 1 #78

OpShow.aspx #65~88 (2) #79 For K = 1 To 5 #80 Dim Rate = Value(K) / Total #81 Dim RateHTML As String #82 Dim RateValue As String #83 RateHTML = "<IMG SRC=100.gif Height=16 Width=" & _ #84 Rate*400 & " Align=TextTop>" #85 RateValue = "(" & FormatNumber(Rate*100, 2) & "%)" #86 Table1.Rows(I).Item("Rate" & K) = RateHTML & RateValue #87 Next #88 Next