首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

5.2.3  编辑文章

编辑文章包括编辑与删除两种功能。编辑文章与添加文章的不同之处在于:编辑文章要显示所编辑的内容,显示编辑内容则必须先从数据库中提取有关的内容,通过修改再次提交,这一次的提交是对数据库的更新;而删除文章则要传递文章的ID号,这样才能只删除目标文章。另外,当网站的文章较多时,为了便于编辑,必须采用分页形式来显示文章列表。

编辑文章页面的预览效果如图5-5所示。

图5-5

在Dreamweaver中,打开admin.asp页面,代码的第97~117行如下所示。

97.<%

98.elseif jhf="edit" then

99.sql="select * from mody order by t_time desc"

100.rs.open  sql,conn,1,1

101.%>

102.<table class="cys" cellpadding="0" cellspacing="10" width="600" align=              "center">

103.<%

104.do while not rs.eof

105.%>

106.<tr>

107.<td><%=rs("t_topic")%></td>

108.<td><%=rs("t_writer")%></td>

109.<td><%=rs("t_time")%></td>

110.<td><a href="renew.asp?id=<%=rs("id")%>">编辑</a></td>

111.<td><a href="del1.asp?id=<%=rs("id")%>">删除</a></td>

112.</tr>

113.<%

114.rs.movenext

115.loop

116.%>

117.</table>

 代码释义:

第97~117行代码实现的是文章的编辑功能,既然是对文章的编辑,就要先把文章列出来,然后再进行修改或者删除。而列出文章就是从数据库中把文章提取出来,所以必然要用到SQL语句的查询功能,同时查询文章应该按降序排列,也就是越晚发表的文章,排列得越靠前,具体解释如下。

l  第99、100行,查询语句,从mody表中按t_time字段降序排列。

l  第102行,建立一个表格,把文章排列在表格中,便于控制位置。

l  第104~115行,建立一个循环,从表的开始部分查起一直到结尾,其中107~109行分别显示文章的标题、作者及发布时间;110和111行分别显示编辑及删除的链接,而且这两个链接分别进行了文章ID号的传递,这样就会有针对性地对文章进行编辑和处理。

在设计分析中已经提到过,当网站有多篇文章时,应该做成分页的形式,便于浏览,这时需要对上面的代码进行修改,修改后的代码如下。

1.elseif jhf="edit" then

2.dim pages

3.pages=request.QueryString("page")

4.if pages="" then

5.pages=1

6.end if

7.sql="select * from mody order by t_time desc"

8.rs.open  sql,conn,1,1

9.rs.pagesize=8

10.if int(pages)>rs.pagecount then

11.pages=rs.pagecount

12.end if

13.if not rs.eof then

14.rs.absolutepage=int(pages)

15.end if

16.%>

17.<table class="cys" cellpadding="0" cellspacing="10" width="600" align=                "center">

18.<%

19.for i=1 to rs.pagesize

20.%>

21.<tr>

22.<td><%=rs("t_topic")%></td>

23.<td><%=rs("t_writer")%></td>

24.<td><%=rs("t_time")%></td>

25.<td><a href="renew.asp?id=<%=rs("id")%>">编辑</a></td>

26.<td><a href="del1.asp?id=<%=rs("id")%>">删除</a></td>

27.</tr>

28.<%

29.rs.movenext

30.if rs.eof then

31.exit for

32.end if

33.next

34.%>

35.<tr><td colspan="5" align="center" >

36.<%if int(pages)>1 then%>

37.<a href="edit.asp?page=1&jhf=edit"> 第一页</a>

38.<a href="edit.asp?page=<%=pages-1%>&jhf=edit"> 上一页</a>

39.<% end if%>

40.<% if int(pages)<rs.pagecount then%>

41.<a href="edit.asp?page=<%=pages+1%>&jhf=edit">下一页</a>

42.<a href="edit.asp?page=<%=rs.pagecount%>&jhf=edit">最后一页</a>

43.<% end if%>

44.</td></tr>

 代码释义:

制作分页网页时,要了解分页的3个属性,即pagesize、pagecount、absolutepage,它们分别代表每页显示的数量、总的页数、当前页。因为分页效果是在查询语句里显示的,所以都应以rs.pagesize、rs.pagecount、rs.absolutepage形式来表示。其实分页就是对一个变量的判断,根据变量值的不同,分别显示第几页,而这个变量是从网页本身所传递的变量值获得的,每页显示的文章数则由pagesize来决定。

第2行,先定义一个变量,这个变量就是用来判断显示第几页的。

第3行,为变量赋值,这里的request.QueryString("page")是获取链接第几页时传递的变量值,比如第一页,则page=1。

第4、5行,当变量为空时,即刚进入页面时,还没有进行翻页,这时的页面定义为第一页。

第9行,定义每页显示的文章数,这里定义为8,即列出8行。

第10、11行,当页数大于总的页数时,让它等于总的页数。当页数大于1时,就会出现分页的效果,但如果单击下一页时,可以一直单击下去,当达到总页数时还可继续单击,很显然这是不对的,为此加上这一句进行判断处理,使页面更加准确。在书写程序代码时,要切记注意语句的严密性,否则就会出现意想不到的错误。

第13、14行,如果循环还没有到达尾部,则当前页即是现在获取的页。

第30~32行,如果遍历到末尾,则直接退出for循环。这条语句是很重要的,如果不加,就会出现错误。

第37~42行,显示分页页码,在什么情况下显示第一页、下一页、上一页及最后一页等。在此要特别注意的是,一定要加上jhf=edit变量,因为这是当jhf=edit的情况下显示的页面,所以必须传递这个变量,否则一经分页,这个变量就会失效,也就不能显示编辑页面了。

从上面的页面中可见,第25和26行又链接了两个页面,要对文章进行下一步的编辑处理,必须单击链接文字所链接的页面才能完成。编辑文章所链接的网页名称是renew.asp。在这个链接页面传递了一个变量id=<%=rs("id")%,这个变量很重要,只有确定了具体的文章ID号,才能对所选择的文章进行编辑,因为每个文章的ID是唯一的,所以获得了变量的值,也就获得了所编辑的文章。

当单击“编辑文章”超链接时出现的界面如图5-6所示。

图5-6

图5-6是没加分页前的预览效果,加了分页后就会在文章显示列表下出现页码,如图5-7所示。

图5-7

当单击“编辑”超链接时,则出现编辑文章页面,如图5-5所示。

在图5-5中显示了文章的标题、作者、类别及文章内容,对其修改后单击【提交】按钮,可以更新数据表中的信息,这样就可更新文章。其renew.asp页面的代码如下。

1.<style>

2.Body{

3.SCROLLBAR-FACE-COLOR:red;

4.SCROLLBAR-HIGHLIGHT-COLOR:blue;

5.SCROLLBAR-SHADOW-COLOR: green;

6.SCROLLBAR-ARROW-COLOR:yellow;

7.SCROLLBAR-BASE-COLOR:black;

8.SCROLLBAR-DARK-SHADOW-COLOR: white;

9.margin-left: 0px;

10.margin-top: 0px;

11. background-color:  #003300;

12.}

13.textarea {

14.background-color: #006633;

15.}

16..jt2 {

17.background-color: #9999FF;

18.color: #006633;

19.font-weight: bold;

20.}

21.option {

22.background-color: #9999FF;

23.border:#006699;

24.border-style:double;

25.}

26.td {

27.font-size: 12px;

28.font-weight: bold;

29.color: #FF3300;

30.}

31.a:link {

32.color: #0033FF;

33.text-decoration: none;

34.}

35.a:visited {

36.text-decoration: none;

37. color: #66FFFF;

38.}

39.a:hover {

40.text-decoration: none;

41.}

42.a:active {

43.text-decoration: none;

44.}

45.-->

46.</style>

47.<!--#include file="include/conn.asp"-->

48.<%

49.dim id

50.id=request.QueryString("id")

51.sql="select * from mody where id="&id

52.s.open sql,conn,1,1

53.%>

54.table align="center" cellpadding="0"  bgcolor="#003300" cellspacing="0"

55.height="300" width="500">

56.<form action="gengxin.asp?id=<%=id%>" method="post" name="aticle">

57.<tr>

58.<td >文章标题:</td>

59.<td><input type="text" class="jt2" name="t_topic" value="<%=rs("t_topic")%>"

60.size=20 /></td>

61.</tr>

62.<tr>

63.<td>文章作者:</td>

64.<td><input type="text" class="jt2" name="t_writer" value="<%=rs
            ("t_writer")%>"

65.size=20/></td>

66.</tr>

67.<tr>

68.<td>文章类别:</td>

69.<td><select name="t_leibie">

70.<option value="青春诗行" <%if rs("t_leibie")="青春诗行" then

71.response.write "selected" end if%>>青春诗行</option>

72.<option value="星光灿烂" <%if rs("t_leibie")="星光灿烂" then

73.response.write "selected" end if%>>星光灿烂</option>

74.<option value="事事关心" <%if rs("t_leibie")="事事关心" then

75.response.write "selected" end if%>>事事关心</option>

76.</select></td>

77.</tr>

78.<tr>

79.<td >文章内容:</td>

80.<td><textarea  name="t_content" class="jt2"  rows="10"

81.cols="35"><%=rs("t_content")%></textarea></td>

82.</tr>

83.<tr>

84.<td colspan=2  align="center" ><input type="submit" class="jt2" value               ="提交">

85.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

86.<input type="reset" class="jt2" value="重置"></td>

87.</tr>

88.</form>

89.</table>

 代码释义:

第1~46行,定义样式,主要是表格、文本框及链接的内容,与前面的一样。不过这里的滚动条是多行文本框的滚动条。

第50行,获得文章的ID号。

第51、52行,建立SQL语句并打开该查询。

第54~89行,是用一个表格制作的表单。在这个表单中分别写入了文章的标题、作者、类别及文章内容。

第59行,显示文章的标题<%=rs("t_topic")%>。

第64行,显示文章的作者<%=rs("t_writer")%>。

第69~76行,显示文章的类别,对文章类别进行判断,即当选择某一类别时,就使这个类别处于当前选择状态。即response.write "selected",因为这里的选项较少,所以用了if语句来判断,如果选项较多,用这种方法就稍显复杂些。这时,可以对原代码进行改动,使用另外一种方法实现这种功能,即数组的方法,其代码构成如下。

1.<%

2.Dim jhf

3.jhf=array("A1","A2","A3","A4","An")

4.for i=0 to int(ubound(jhf))

5.response.Write "<option value="&jhf(i)

6.if rs("t_leibie")=jhfr(i) then

7.response.write " selected"

8.end if

9.response.write ">"&jhf(i)&"</option>"

10.next%>

 代码释义:

第2、3行,定义一个数组,并把各类别写入数组中。

第3~10行,用一个for语句,形成一个循环,定义数组的索引,ubound(jhf)函数返回一个数组的最大上限。如果查询的类别与数组中的值相等,就把这个类别作为当前类别加以选择,并显示出来。这种写法,对于类别较多时相对要简单些,而第一种使用if语句,则较容易理解。

第81行,显示文章的内容。

文章修改完成后,就要进行提交处理,提交的表单是action="gengxin.asp?id=<%=id%"。这个提交中参数的目的是保证修改的文章对号入座。

接下来分析gengxin.asp页面。在解读这个网页代码前,提醒读者注意,在制作网页、编写网页代码时,其关键在于自己的思路要清晰。如果思维不集中,则很难完成制作过程。这是因为网页之间的链接一环套一环。如果制作时,不能保证思路一致,或者认识模糊,那么在几个网页之间游走时,稍不注意就会混乱。一旦代码有误,再检查起来就颇费周折。因此,建议大家在写代码时要养成写制作手记的习惯,这样即使停下来,也会在下次制作中很快找到接入点。同时也希望大家每写一段代码就在浏览器中预览一次,否则一旦代码过多,再一起预览时,出错点就不易确定。随时检测,每当实现预期效果时,会有一种成就感,使制作网页成为一种乐趣。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论