山西机电职业技术学院教案.doc
山西机电职业技术学院教案首页 序号章 节任务27:讨论区目的及要求1掌握讨论区的结构设计。2掌握分页浏览数据的技巧,sql语法的top来限制最多传回笔数及定期清除留言方法。重点与难点重点:sql语法的top来限制最多传回笔数及定期清除留言方法。难点:访客留言簿需要的各种模块的设计思路。 教学方法1.项目教学法 2.任务驱动法3.总结归纳法4.合作学习法教学用具多媒体计算机授课课型理论+实践授课地点机房时间分配100min课后记 任务27讨论区任务描述:Ø 讨论区(NewsGroup)基本上,讨论区和访客留言簿是很类似的服务,比较不同的是讨论区允许浏览者针对特定主题另辟版面进行讨论。组成网页的文件清单现在,我们来制作一个讨论区,这个讨论区的所有数据存放在SampleCh12News文件夹中,它总共有如下表所示的文件。见教材。网页的执行流程您必须具备的背景知识ü 首先,您必须悉HTML或其他网页编辑软件,因为我们将用到许多表格及超级链接。ü 其次,您必须了解表格的制作方法信如何读取表单文件,包括隐藏字段的应用。ü 其三,您必须懂得分页浏览数据库的技巧。ü 最后,您当然得熟悉SQL语法及访问数据库的方法。完整程序代码列表Newsgroup.asp<!- #include file="ADOFunctions.asp" -> <% 'ShowPage子程序负责设置表格颜色及插图,然后显示PageNo参数所指定的页次的所有记录 Sub ShowPage(objRS, PageNo) '设置表格背景颜色及插图文件,同时加上Randomize使每次产生不同顺序的图形文件 ReDim Fig(objRS.PageSize - 1 ), BG(objRS.PageSize - 1 ) Randomize For I = 0 to objRS.PageSize - 1 Fig(I) = INT(RND * 9) + 1 & ".gif" Next BG(0) = "#D9D9FF" BG(1) = "#FFCAEE" BG(2) = "#FFFFCC" BG(3) = "#B9EEB9" BG(4) = "#B9E9FF" '显示留言并加以格式化 Response.Write "<TABLE ALIGN='CENTER' WIDTH='90%'>" objRS.AbsolutePage = PageNo For I = 1 To objRS.PageSize Response.Write "<TR BGCOLOR=" & BG(I - 1) & ">" Response.Write "<TD WIDTH='15%'><IMG SRC=" & Fig(I - 1) & "></TD>" '显示留言的作者、主题及时间,至于内容则设计为连接至ShowNews.asp的超链接 Response.Write "<TD WIDTH='85%'>作者:" & objRS("作者") & "<BR>主题:" & objRS("主题") & "<BR>时间:" & objRS("时间") & _ "<BR><A HREF='ShowNews.asp?Title=" & objRS("主题") & "'>阅读留言与加入讨论</A></TD></TR>" objRS.MoveNext If objRS.EOF Then Exit For Next Response.Write "</TABLE>" End Sub%><HTML> <BODY> <CENTER><IMG SRC="fig.jpg"></CENTER> <% '读取数据表的所有记录并依照时间递减顺序排列 strSQL = "SELECT * FROM 留言板 ORDER BY 时间 DESC" Set objRS = GetSQLRecordset(strSQL, "Books.mdb", "留言板") '设置分页大小,您可视实际情况设置其他数值 objRS.PageSize = 5 '显示页次超链接 PageNo = Request("PageNo") '读取浏览者所点取的页次超链接 Response.Write "" For I = 1 To objRS.PageCount If I = CInt(PageNo) Then '若到浏览者所点取的页次超链接,便不再当成超链接 Response.Write I & " | " Else Response.Write "<A HREF='NewsGroup.asp?PageNo=" & I & "'>" & _ I & "</A>" & " | " '超链接到NewsGroup.asp并将页次当成参数传送 End If Next Response.Write "<HR>" %> <% '根据页次调用ShowPage子程序来显示留言,若没有指定页次,就显示第1页 If PageNo <> "" Then ShowPage objRS, PageNo Else ShowPage objRS, 1 End If '关闭数据库连接并释放对象 objRS.Close Set objRS = Nothing objConn.Close Set objConn = Nothing %> <HR> <! 显示输入新留言表单 -> <FORM METHOD="POST" ACTION="Post.asp"> <TABLE BORDER="0" WIDTH="90%" ALIGN="CENTER" CELLSPACING="0"> <TR HEIGHT="40" BGCOLOR="#0084CA" ALIGN="CENTER" VALIGN="MIDDLE"> <TD COLSPAN="2"><FONT COLOR="#FFFFFF">请在此输入新的留言</FONT></TD> </TR> <TR HEIGHT="40" BGCOLOR="#D9F2FF" ALIGN="CENTER" VALIGN="MIDDLE"> <TD WIDTH="15%">作者</TD> <TD WIDTH="85%"><INPUT TYPE="TEXT" NAME="UserName" SIZE="50"></TD> </TR> <TR HEIGHT="40" BGCOLOR="#84D7FF" ALIGN="CENTER" VALIGN="MIDDLE"> <TD WIDTH="15%">主题</TD> <TD WIDTH="85%"><INPUT TYPE="TEXT" NAME="Title" SIZE="50"></TD> </TR> <TR HEIGHT="250" BGCOLOR="#D9F2FF" ALIGN="CENTER" VALIGN="MIDDLE"> <TD WIDTH="15%">内容</TD> <TD WIDTH="85%"><TEXTAREA NAME="Content" COLS="50" ROWS="10"></TEXTAREA></TD> </TR> <TR> <TD COLSPAN="2" HEIGHT="40" BGCOLOR="#FFFFFF" ALIGN="CENTER" VALIGN="MIDDLE"> <INPUT TYPE="SUBMIT" VALUE="张贴留言"> <INPUT TYPE="RESET" VALUE="重新输入"></TD> </TR> </TABLE> </FORM> </BODY> </HTML>Post.asp<!- #include file="ADOFunctions.asp" -><% '读取用来输入新留言的表单字段数据 UserName = Request("UserName") Title = Request("Title") Content = Request("Content") CurrentTime = Now() '打开数据库连接并读取记录 Set objRS = GetRecordset("Books.mdb", "留言板") '新增记录 objRS.AddNew Array("作者" ,"主题", "内容", "时间"), _ Array(UserName, Title, Content, CurrentTime) objRS.Update '关闭数据库连接并释放对象 objRS.Close Set objRS = Nothing objConn.Close Set objConn = Nothing '将网页重新导入 Response.Redirect "NewsGroup.asp"%><!- #include file="ADOFunctions.asp" -> <HTML> <BODY> <CENTER><IMG SRC="fig1.jpg"></CENTER> <! 读取留言主题,然后从数据库读取主题符合的记录的所有字段 -> <% Title = Request("Title") strSQL = "SELECT * FROM 留言板 WHERE 主题='" & Title & "' ORDER BY 时间 DESC" Set objRS = GetSQLRecordset(strSQL, "Books.mdb", "留言板") %> <!- 显示留言并加以格式化 -> <TABLE BORDER="0" WIDTH="90%" ALIGN="CENTER"> <TR HEIGHT="40" BGCOLOR="#DD006F" ALIGN="CENTER" VALIGN="MIDDLE"> <TD><FONT COLOR="#FFFFFF">留言主题</FONT></TD></TR> <TR HEIGHT="40" BGCOLOR="#FF99CC"><TD>主题:<%= objRS("主题") %> 作者:<%= objRS("作者") %> 时间:<%= objRS("时间") %></TD></TR> <TR BGCOLOR="#FFE3F1"><TD>内容:<%= objRS("内容") %></TD></TR> </TABLE><HR> <!- 根据原来留言的主题去搜索是否有回复留言,有的话就显示出来 -> <TABLE BORDER="0" WIDTH="90%" ALIGN="CENTER"> <% strSQL2 = "SELECT * FROM 回复留言 WHERE 回复主题='" & objRS("主题") & "'" Set objRS2 = objConn.Execute(strSQL2) If Not objRS2.EOF Then Response.Write "<TR HEIGHT='40' BGCOLOR='#B05800' ALIGN='CENTER' VALIGN='MIDDLE'>" & _ "<TD><FONT COLOR='#FFFFFF'>回复留言</FONT></TD></TR>" End If Do While Not objRS2.EOF Response.Write "<TR HEIGHT='40' BGCOLOR='#FFC082'><TD>主题:" & objRS2("主题") & _ " 作者:" & objRS2("作者") & " 时间:" & objRS2("时间") & "</TD></TR>" Response.Write "<TR BGCOLOR='#FFE7CE'><TD>内容:" & objRS2("内容") objRS2.MoveNext Loop %> </TABLE><HR> <!- 显示回复留言表单 -> <FORM METHOD="POST" ACTION="PostReply.asp"> <INPUT TYPE="HIDDEN" NAME="ReplyTitle" VALUE="<%= objRS("主题") %>"> <TABLE BORDER="0" WIDTH="90%" ALIGN="CENTER" CELLSPACING="0"> <TR HEIGHT="40" BGCOLOR="#0084CA" ALIGN="CENTER" VALIGN="MIDDLE"> <TD COLSPAN="2"><FONT COLOR="#FFFFFF">请在此输入您的回复</FONT></TD> </TR> <TR HEIGHT="40" BGCOLOR="#D9F2FF" ALIGN="CENTER" VALIGN="MIDDLE"> <TD WIDTH="15%">作者</TD> <TD WIDTH="85%"><INPUT TYPE="TEXT" NAME="UserName" SIZE="50"></TD> </TR> <TR HEIGHT="40" BGCOLOR="#84D7FF" ALIGN="CENTER" VALIGN="MIDDLE"> <TD WIDTH="15%">主题</TD> <TD WIDTH="85%"><INPUT TYPE="TEXT" NAME="Title" SIZE="50"></TD> </TR> <TR HEIGHT="250" BGCOLOR="#D9F2FF" ALIGN="CENTER" VALIGN="MIDDLE"> <TD WIDTH="15%">内容</TD> <TD WIDTH="85%"><TEXTAREA NAME="Content" COLS="50" ROWS="10"></TEXTAREA></TD> </TR> <TR> <TD COLSPAN="2" HEIGHT="40" BGCOLOR="#FFFFFF" ALIGN="CENTER" VALIGN="MIDDLE"> <INPUT TYPE="SUBMIT" VALUE="回复留言"> <INPUT TYPE="RESET" VALUE="重新输入"></TD> </TR> </TABLE> </FORM> <% '关闭数据库连接并释放对象 objRS.Close Set objRS = Nothing objRS2.Close Set objRS2 = Nothing objConn.Close Set objConn = Nothing %> </BODY> </HTML>Postreply.asp<!- #include file="ADOFunctions.asp" -><% '读取用来输入回复留言的表单字段数据 UserName = Request("UserName") Title = Request("Title") Content = Request("Content") CurrentTime = Now() ReplyTitle = Request("ReplyTitle") '回复留言表单比新留言表单多了此字段 '打开数据库连接并读取记录 Set objRS = GetRecordset("Books.mdb", "回复留言") '新增记录 objRS.AddNew Array("作者" ,"主题", "内容", "时间", "回复主题"), _ Array(UserName, Title, Content, CurrentTime, ReplyTitle) objRS.Update '关闭数据库连接并读取记录 objRS.Close Set objRS = Nothing objConn.Close Set objConn = Nothing '将网页重新导入 Response.Redirect "NewsGroup.asp"%>