首页 百科知识 7.4.2新闻发布系统

7.4.2新闻发布系统

时间:2022-10-15 百科知识 版权反馈
【摘要】:本系统用到的文件如下:数据库文件db2.mdb和样式表文件app2.css;index.asp:为主页面,主要用于显示信息、标题、作者、日期和时间;addNews.asp:添加新闻页;editNews.asp:编辑新闻页;lookNews.asp:新闻内容页。样式表文件app2.css用来规范网页样式,其代码如下。

7.4.2 新闻发布系统

新闻发布系统在因特网中应用比较广泛,本小节重点介绍如何使用ASP和Access数据库技术实现新闻发布系统的。

本系统用到的文件如下:

(1)数据库文件db2.mdb和样式表文件app2.css;

(2)index.asp:为主页面,主要用于显示信息、标题、作者、日期和时间;

(3)addNews.asp:添加新闻页;

(4)editNews.asp:编辑新闻页;

(5)lookNews.asp:新闻内容页。

下面依次介绍各文件。

1. 数据库文件db2.mdb和样式表文件app2.css

db2.mdb是Access数据库,其数据表news有ID(主键)、title、content、type、keys、publisher、times等字段,各字段名称、数据类型及说明如图7-29所示。

样式表文件app2.css用来规范网页样式,其代码如下。

------------------------------清单 app2.css-------------------------

body{background:#FFFFe9;font-size:9pt;font-family:宋体}

td{font-size:10.5pt;;font-family:宋体;}

p{font-size:10.5pt}

li{font-size:10.5pt;line-height:30px;}

textarea.smallarea{font-size:9pt;background-color:white;color:rgb(0, 0,128);}

input.buttonface{font-size:9pt;background-color:E8D8B0;}

A{text-decoration:none;color:navy}

A:hover{color:ff8a00;text-decoration:underline;}

--------------------------------------------------------------------

img486

图7-29 news数据表的结构

2. 主网页index.asp

----------------------------清单 index.asp--------------------------

<HTML><LINK REL="STYLESHEET" TYPE="TEXT/CSS" HREF="app2.CSS">

<Script language="JavaScript">

//打开新窗口函数NewsWindow

function NewsWindow(id)

{

window.open('LookNews.asp?id='+id,'infoWin',

'height=400,width=600,scrollbars=yes,resizable=yes');

}

</Script>

</HEAD><BODY>

<%

set conn=server.createobject("ADODB.CONNECTION")

conn.open "DBQ=" & server.mappath("db2.mdb")&";DRIVER={Microsoft

Access Driver (∗.mdb)};"

set rs = server.createobject("ADODB.RECORDSET")

sql = "SELECT ∗ FROM news ORDER BY ID DESC"

rs.open sql,conn,1,1

If rs.eof and rs.bof then

Response.write "<p>目前还没有任何新闻</p>"

Else

%>

<P><STRONG>新闻概况</STRONG><TABLE BORDER=1 BORDERCOLORDARK=#FFFFEC

BORDERCOLORLIGHT=#5E5E00 CELLPADDING=1 CELLSPACING=0 WIDTH="100%">

<TR BGCOLOR=CCCCCC ALIGN=CENTER><TD>标题</TD><TD>作者</TD><TD>日期

</TD></TR>

<%

cc = 1  '当前页

if not isempty(request("page"))then

pagecount=cint(request("page"))

else

pagecount=1

end if

rs.PageSize=10

rs.AbsolutePage=pagecount

For iPage = 1 To rs.PageSize

If rs.EOF Then Exit For

'不同行之间以不同颜色显示

if cc mod 2=1 then

Response.Write "<tr bgcolor=#E7E7E7>"

else

Response.Write "<tr BGCOLOR=#F4F4F4>"

end if

%>

<td><a

href="javascript:NewsWindow(<%=rs("ID")%>)"><u><%=rs("title")%></

u></a></td>

<td><%=rs("publisher")%> </td><td><%=rs("times")%>

<%

'如果是今天的新闻,加上new标记

if DateDiff("d",rs("times"),date())<1 then Response.Write "<font

color=ff0000>new</font>"

Response.Write "</td></tr>"

cc = cc + 1

rs.movenext

Next

Response.Write "</table><p>共"&rs.recordcount&"条新闻"

if rs.PageCount>1 Then

If pagecount<>1 Then

Response.Write "<A HREF=index.asp?Page=1>[首页]</A>"

Response.Write "<A HREF=index.asp?Page="&(pagecount-1)&">[前

页]</A>"

End If

If pagecount<>rs.PageCount Then

Response.Write "<A HREF=index.asp?Page="&(pagecount+1)&">[后

页]</A>"

Response.Write "<A HREF=index.asp?Page="&rs.PageCount&">[尾

页]</A>"

End If

End If

end if

rs.close

conn.close

%>

<p align=center><a href="EditNews.asp">编辑新闻</a></p>

--------------------------------------------------------------------

调试结果如图7-30所示。

img487

图7-30 index.asp调试结果

3. 添加新闻网页addNews.asp

--------------------------清单 addNews.asp--------------------------

<link rel="stylesheet" type="text/css" href="app2.css">

<%

'id为一隐藏标记,用于判断是第一次进入页面,还是提交到该页面

id=Request("id")

'如果title不为空,则添加记录

if Request.form("title")<>"" then

set conn=server.createobject("ADODB.CONNECTION")

conn.open "DBQ="+server.mappath("db2.mdb")+";DRIVER={Microsoft

Access Driver (∗.mdb)};"

title=Trim(request.form("title"))

sql="select ∗ from news where "

if id<>"" then

sql=sql&"id="&id

else

sql=sql&"title='"&title&"'"

end if

set rs=Server.CreateObject("ADODB.recordset")

rs.Open sql,conn,1,3

if rs.eof or rs.bof then

rs.addnew

end if

rs("title")= Request.form("title")

rs("content")= Request.form("body")

rs("type")= Request.form("type")

rs("keys")= Request.form("keys")

rs("publisher")= Request.form("writer")

rs.Update

rs.close

conn.close

set rs=nothing

set conn=nothing

end if

if id <> "" then

set conn=server.createobject("ADODB.CONNECTION")

conn.open "DBQ="+server.mappath("db2.mdb")+";DRIVER={Microsoft Access

Driver (∗.mdb)};"

sql="select ∗ from news where id="&id

set rs=Server.CreateObject("ADODB.recordset")

rs.Open sql,conn,1,1

if not rs.eof then

title1=rs("title")

content=rs("content")

keys=rs("keys")

write=rs("publisher")

end if

rs.close

conn.close

end if

%>

<form name=form1 method="post" action="addnews.asp">

<input value="<%=id%>" type=hidden name=id>

<P align="center">标题:<INPUT size=85 name=title

value=<%=title1%>></P>

<P align="center">内容:<TEXTAREA cols=73 name=body

rows=15><%=content%> </TEXTAREA></P>

<P align="center">关键字:<INPUT size=25 name=keys value=<%=keys%>>

作者:

<INPUT size=25 name=writer value=<%=write%>>

类型:

<select span style="font-size:10.5pt" name="type">

<option value="0">文本</option>

<option value="1">链接</option>

</select>

<p align="center">

<INPUT class=buttonface type=submit value=" 确 定 ">

<INPUT class=buttonface type=reset value=" 清 除 "></p>

</form>

<P align="right"><a href="editnews.asp">编辑新闻</a> <a

href="index.asp">查看新闻</a>

</BODY>

</HTML>

--------------------------------------------------------------------

调试结果如图7-31所示。

img488

图7-31 Addnews.asp的调试结果

4. 编辑新闻网页editNews.asp

---------------------------清单 editNews.asp------------------------

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>新闻内容页</title>

<link rel="stylesheet" type="text/css" href="app2.css">

<script language="JavaScript">

function NewsWindow(id)

{

window.open('LookNews.asp?id='+id,'infoWin',

'height=400,width=600,scrollbars=yes,resizable=yes');

}

</script>

</head>

<body>

<%

set conn = Server.CreateObject("ADODB.CONNECTION")

conn.open "DBQ=" & Server.Mappath("db2.mdb")& ";DRIVER={Microsoft

Access Driver (∗.mdb)};"

set rs = Server.CreateObject("adodb.recordset")

if request("del")<>"" then conn.Execute("DELETE ∗ FROM news WHERE id="

& request("del"))

sql="SELECT ∗ FROM news ORDER BY ID DESC"

rs.open sql,conn,1,1

if rs.eof and rs.bof then

Response.write "<p>还 没 有 任 何 新 闻</p>"

else

if not isempty(request("page"))then

pagecount = cint(request("page"))

else

pagecount = 1

end if

rs.PageSize = 10

rs.AbsolutePage = pagecount

%>

<p><strong>全部新闻</strong><table width=100%>

<%For iPage = 1 To rs.PageSize

If rs.EOF Then Exit For

id=rs("ID")%>

<tr><td><a

href="javascript:NewsWindow(<%=id%>)"><u><%=rs("title")%></u>

</a>--<%=rs("publisher")%>【<%=rs("times")%>】

</td><td align=right><a href=AddNews.asp?id=<%=id%>>编辑</a>

<a href=editnews.asp?del=<%=id%>>删除</a></td></tr>

<%

rs.movenext

Next

Response.Write "</table><p>共" & rs.recordcount & "条记录<br>"

if rs.PageCount>1 Then

If pagecount<>1 Then

Response.Write "〖<A

HREF=editnews.asp?Page=1&boardid="&request("boardid")&">首页</A>〗"

Response.Write "〖<A HREF=editnews.asp?Page="&(pagecount-1)&">前页

</A>〗"

End If

If pagecount<>rs.PageCount Then

Response.Write "〖<A HREF=editnews.asp?Page="&(pagecount+1)&">后页

</A>〗"

Response.Write "〖<A HREF=editnews.asp?Page="&rs.PageCount&">尾页

</A>〗"

End If

End If

end if

rs.close

conn.close

%>

<p align=right><a href=AddNews.asp>添加新闻</a> <a href="index.asp">查看新闻</a></p>

--------------------------------------------------------------------

调试结果如图7-32所示。

img489

图7-32 editNews.asp调试结果

5. 查看新闻内容的网页lookNews.asp代码

--------------------------清单 lookNews.asp-------------------------

<html>

<head>

<title>新闻</title>

<link rel="stylesheet" type="text/css" href="app2.css">

</head>

<%

id=trim(request("id"))

set conn=server.createobject("ADODB.CONNECTION")

conn.open "DBQ="+server.mappath("db2.mdb")+";DRIVER={Microsoft Access

Driver (∗.mdb)};"

set rs=server.createobject("adodb.recordset")

sql="SELECT ∗ from news where ID="&id

rs.open sql,conn,1,1

if rs.eof then

response.write "错误的ID号"

rs.close

set rs=nothing

conn.close

set conn=nothing

Response.end

else%>

<table width="100%" HEIGHT=100% border="1" cellspacing="0"

cellpadding="0" bordercolorlight="#000000"

bordercolordark="#FFFFFF">

<tr bgcolor="#FAD185">

<td height=20 align=center><b><%=rs("title")%></b></td>

</tr>

<tr>

<td valign=top>

<%'如果type=0,代表是文本类型信息,若type=1,代表是链接信息%>

<%if rs("type")=0 then%>

<p><%=replace(rs("content"),chr(13)&chr(10),"<p>")%>

<%else%>

<iframe id=BoardTitle name=newscon style="HEIGHT:100%; VISIBILITY:

inherit; WIDTH:100%; Z-INDEX: 2" scrolling=auto frameborder=0

src="<%=rs("content")%>" ></iframe></td>

<%end if%>

</tr>

</table>

<br><b>相关新闻:</b><ul>

<%

sql="SELECT ∗ from news where ID<>"&id&" and keys='"&rs("keys")&"' order

by ID desc"

rs.close

rs.open sql,conn,1,1

do while not rs.eof

%>

<li><a

href=looknews.asp?id=<%=rs("ID")%>><u><%=rs("title")%></u></a>--<

%=rs("publisher")%>

【<%=rs("times")%>】

<%

rs.movenext

loop

rs.close

conn.close

end if

%></ul>

</html>

--------------------------------------------------------------------

调试结果如图7-33所示。

img490

图7-33 lookNews.asp调试结果

本节中的两个应用实例,即用户注册、登录、注销系统和新闻发布系统是分别编写的。实际上可以将两者结合起来,做成一个先登录验证身份,再发布新闻的网站系统,这要用到Session或Cookies来暂存用户身份确认情况。请读者思考如何完成这一组合。

将本节学习过的实例和第5章学习过的JavaScript行为,嵌入第2章、第4章学过的网页布局设计时,能够制作出既有优秀外观,又有良好交互功能的动态网站。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈