带 ASP 的新闻系统






4.20/5 (9投票s)
2004年7月13日
2分钟阅读

101050

1822
使用 ASP 和 MS Access 的简单新闻系统。
ASP 新闻系统
这是一个简单的新闻系统,可以轻松添加到任何网站。下载完整的 asp news 源代码和说明。
此代码使用以下技术:
- ASP(Active Server Pages)。
- MS Access 数据库。
请确保您的系统或网站托管服务支持这些技术。
详细说明
首先编辑 settings.asp 文件,该文件包含新闻系统的基本设置,例如:
- 您的新闻标题
- 登录代码(密码)
- 每页显示的新闻数量。
- 数据库路径
newstitle = "News Demo"
logincode = "1234"
show_stories = "10"
database_path = Server.MapPath("news_data.mdb")
此文件还包含一些函数以及一些样式设置,可以更改这些设置来定制新闻系统的外观。
登录页面是一个简单的 HTML 表单,它会与 settings.asp 文件中设置的登录代码进行检查。如果成功,则设置会话并继续进入管理区域。
<%Option Explicit%>
<!-- #INCLUDE FILE="settings.asp" -->
<%
' Intercept all exceptions to display user-friendly error
if Request.Form("mynumber") = "" then
response.redirect("login-news.asp?l=password_blank")
End If
'set variables from form
FormPwd = Request.Form("mynumber")
FormPwd = replace(FormPwd,"'","''")
'run login or return to login page
if formpwd = logincode then
Session("LoginID") = formpwd
else
response.redirect("login-news.asp?l=incorrect_login_or_password")
End if
'final redirect
response.redirect("news-admin.asp")
%>
登录后,屏幕看起来与公共新闻屏幕非常相似,但具有更多的管理选项。
<!-- #INCLUDE FILE="login-check.asp" --> <!-- #INCLUDE FILE="settings.asp" --> <% if not IsNumeric(show_stories) then show_stories = "999" end if Set dConn = Server.CreateObject("ADODB.Connection") dConn.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=" & database_path showall = request.querystring("showall") if showall <> "" then strSQL = "SELECT TOP " & show_stories & " expire, id, newsdate, newstitle, newsbody, active from tblnews order by id desc, newsdate desc;" else strSQL = "SELECT TOP " & show_stories & " expire, id, newsdate, newstitle, newsbody, active from tblnews where active = 1 order by id desc, newsdate desc;" end if Set newsRS = Server.CreateObject("ADODB.recordset") newsRS.Open strSQL, dConn, 1, 3 recordcount = newsRS.recordcount if recordcount <> 0 then data = newsRS.GetRows() 'Data is retrieved so close all connections newsRS.Close Set newsRS = Nothing dconn.close Set dconn = nothing 'Setup for array usage iRecFirst = LBound(data, 2) iRecLast = UBound(data, 2) end if %> <!-- #INCLUDE FILE="admin-menu.asp" --> </head> <body> <table border=2 bordercolor="#CCCCFF" CELLSPACING=0 CELLPADDING=4> <% if recordcount <> 0 then ' Loop through the records (second dimension of the array) For I = iRecFirst To iRecLast news_expire = data(0,I) news_id = data(1,I) news_dat = data(2,I) news_title = data(3,I) news_body = data(4,I) active = data(5,I) if active = 1 then textcolor = "black" else textcolor = "gray" end if if DateDiff("d", todaydate, news_expire) > 0 then textcolor = "black" else textcolor = "gray" end if response.write "<tr>" & _ "<td style='color: " & textcolor & ";'><strong>" & news_title & "</strong> <small>date: " & news_dat & " expires: " & news_expire & "</small>" & _ " [<a title='edit news' href='edit-news.asp?id=" & news_id & "'>edit</a>] [<a title='delete news' href='news-cmd.asp?id=" & news_id & "&delnews=1' onclick=""return confirm('Are you sure you want to delete?')"">delete</a>]</td> " & _ "</tr>" & _ "<tr>" & _ "<td>" & news_body & "</td>" & _ "</tr>" & vbcrlf Next ' I end if %>
在这里,您可以编辑当前新闻故事、添加新的新闻故事或删除新闻故事。
编辑新闻故事时,系统会根据传递的查询字符串值从数据库中读取值,并将其放入 HTML 表单中,然后您可以更新数据库以应用您所做的更改。
<%option explicit%>
<!-- #INCLUDE FILE="login-check.asp" -->
<!-- #INCLUDE FILE="settings.asp" -->
<%
id = request("id")
if id < 1 then
response.write (errormsg)
response.end
end if
Set dConn = Server.CreateObject("ADODB.Connection")
dConn.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=" & database_path
'========================================
if request.form("ispostback") = 1 then
set updateRS = Server.CreateObject("ADODB.RecordSet")
updateSQL = "SELECT * from tblnews where ID = " & ID & ";"
updateRS.Open updateSQL,dConn, 1,3
urecordcount = updateRS.recordcount
if urecordcount <> 1 then
updateRS.Close
Set updateRS = Nothing
response.redirect("default.asp?norecord")
end if
updateRS("newsdate") = checkdate(request.form("newsdate"))
updateRS("expire") = checkdate(request.form("expire"))
updateRS("newstitle") = Presubmit2(request.form("newstitle"))
updateRS("newsbody") = Presubmit2(request.form("newsbody"))
updateRS("active") = request.form("active")
updateRS.update
updateRS.Close
set updateRS = Nothing
message = "<p><font color='#FF0000'>Update Successful</font></p>"
end if
'========================================
strSQL = "SELECT expire, id, newsdate, newstitle,
newsbody, active from tblnews where ID = " & ID & ";"
Set newsRS = Server.CreateObject("ADODB.recordset")
newsRS.Open strSQL, dConn, 1, 3
recordcount = newsrs.recordcount
if recordcount < 1 then
newsRS.close
set newsRS = nothing
dConn.close
set dConn = nothing
response.write (errormsg)
Response.end
end if
For fnum = 0 To newsRS.Fields.Count-1
execute(newsRS.Fields(fnum).Name & " =
newsRS(" & CHR(34) & newsRS.Fields(fnum).Name & CHR(34) & ")")
Next
if newsbody <> "" then
newsbody = undo(newsbody)
end if
%>
<!-- #INCLUDE FILE="admin-menu.asp" -->
<title>Edit News</title>
<h3><%=newstitle%></h3>
<%=message%>
<form action="edit-news.asp" method="post" name="frm" id="frm">
<table border=2 bordercolor="#CCCCFF" CELLSPACING=0 CELLPADDING=4>
<tr>
<td>News Title</td>
<td><input type="text" name="newstitle"
value="<%=newstitle%>" size="50" class="cssborder"></td>
</tr>
<tr>
<td>News Date</td>
<td><input type="text" name="newsdate"
value="<%=newsdate%>" size="12" class="cssborder"></td>
</tr>
<tr>
<td>News Expire Date</td>
<td><input type="text" name="expire"
value="<%=expire%>" size="12" class="cssborder"></td>
</tr>
<tr>
<td valign="top">News Text</td>
<td><textarea cols="50" rows="8"
name="newsbody" class="cssborder"><%=newsbody%></textarea></td>
</tr>
<tr>
<td valign="top">Active</td>
<td>
<% if active = "1" then%>
<input type="checkbox" name="active" value="1" checked>
<% else %>
<input type="checkbox" name="active" value="1">
<% end if %>
</td>
</tr>
<tr>
<td colspan="2">
<input type="hidden" name="id" value="<%=id%>">
<input type="hidden" name="ispostback" value="1">
<input type="submit" value="update" class="cssborder">
<input type="reset" class="cssborder">
</td>
</tr>
</table>
</form>
<p><a href="edit-news.asp?id=<%=id%>">reload</a></p>
添加新闻时,浏览器会简单地转到 news-cmd.asp 文件,该文件充当实用程序文件,具体执行哪些功能取决于传递给它的值。
在此代码中,您可以查看插入发生的位置。为了简化操作,使用了标准的 SQL INSERT 语句来将新的记录填充到新闻数据库中,然后可以轻松地编辑该记录。您还可以从该文件中看到,如果将删除命令与记录 ID 一起发送到该文件,则也可以从该页面删除新闻项目。
<!-- #INCLUDE FILE="login-check.asp" -->
<!-- #INCLUDE FILE="settings.asp" -->
<%
id = request("id")
response.write ID
if not isnumeric(id) then
response.write errmessage
response.end
end if
addnews = request("addnews")
delnews = request("delnews")
Set dConn = Server.CreateObject("ADODB.Connection")
dConn.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=" & database_path
if addnews = 1 then
insertdate = FormatDateTime(Now(), vbShortDate)
mySQL = "INSERT INTO tblnews(newstitle, newsbody, newsdate, active)
VALUES ('New News Title', 'New News Text', #" & insertdate & "#, 1);"
dConn.execute(mySQL)
redirect = "news-admin.asp"
end if
if delnews = 1 then
mySQL = "DELETE FROM tblnews where ID = " & id & ";"
dConn.execute(mySQL)
redirect = "news-admin.asp"
end if
dconn.close
%>
<script language="javascript">
<!--
location.replace("<%=redirect%>");
-->
</script>
结论
下载完整的 asp news 源代码和说明。 这就是它的全部内容,这只是一个非常简单的新闻系统,一种通过简单快速的 Web 界面保持网站更新的简便方法。希望您喜欢它!