65.9K
CodeProject 正在变化。 阅读更多。
Home

带 ASP 的新闻系统

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.20/5 (9投票s)

2004年7月13日

2分钟阅读

viewsIcon

101050

downloadIcon

1822

使用 ASP 和 MS Access 的简单新闻系统。

Sample Image - logo.png 

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")

此文件还包含一些函数以及一些样式设置,可以更改这些设置来定制新闻系统的外观。

login

登录页面是一个简单的 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")
%>

登录后,屏幕看起来与公共新闻屏幕非常相似,但具有更多的管理选项。

asp news

<!-- #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 表单中,然后您可以更新数据库以应用您所做的更改。

asp news

<%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 界面保持网站更新的简便方法。希望您喜欢它!

© . All rights reserved.