首先給大家看看這個(gè)新聞界面:
后臺(tái)管理頁(yè)面:
為了方便在這里給大家直觀目錄:
具有的功能為:
1.帶后臺(tái)管理員功能;
2.每條新聞具有發(fā)布時(shí)間和瀏覽次數(shù);
3.能輸入HTML代碼,解決英文自動(dòng)換行功能;
4.后臺(tái)具有刪除,編輯功能;
5.盡量精簡(jiǎn)代碼,書寫規(guī)范簡(jiǎn)單明了;
不足的地方:
1.由于時(shí)間關(guān)系和對(duì)初學(xué)者的考慮我沒(méi)有做分頁(yè)功能,如果大家想學(xué)習(xí),我會(huì)在下次教程寫出來(lái)!
2.沒(méi)有寫出首頁(yè)調(diào)用代碼,也是為初學(xué)者考慮
3.對(duì)后臺(tái)添加新聞表單沒(méi)有驗(yàn)證
開(kāi)發(fā)工具:
DreamweaverMX和Access2000
好了,大家準(zhǔn)備好了吧,我相信如果大家仔細(xì)看教程大約5小時(shí)就可以明白整個(gè)開(kāi)發(fā)原理,很簡(jiǎn)單的:
先給大家說(shuō)說(shuō)開(kāi)發(fā)步驟(或許不太規(guī)范,是按照本人習(xí)慣)
1.規(guī)劃定義站點(diǎn),建立各個(gè)功能模塊文件。
好了,咱們開(kāi)始吧,一個(gè)好的站點(diǎn),應(yīng)該先規(guī)劃好站點(diǎn)文件的存放!
好了先看看文件目錄:
下面解釋一下:
目錄:admin(用于存放后臺(tái)管理程序文件)
文件:
xh_add.asp (后臺(tái)管理頁(yè)面)
xh_edit.asp (后臺(tái)編輯頁(yè)面)
xh_del.asp (后臺(tái)刪除頁(yè)面)
xh_login.asp (后臺(tái)管理登陸頁(yè)面)
xh_cklogin.asp (后臺(tái)管理驗(yàn)證頁(yè)面)
xh_loginout.asp (后臺(tái)管理退出頁(yè)面)
xh_write.asp (新聞添加頁(yè)面)
xh_save.asp (添加新聞驗(yàn)證頁(yè)面)
xh_conn.asp (數(shù)據(jù)庫(kù)連接文件)
目錄:date (存放數(shù)據(jù)庫(kù)文件)
目錄:images (存放圖片)
主目錄下文件:
index.asp (新聞首頁(yè)面)
conn.asp (數(shù)據(jù)庫(kù)連接文件)
xh_look.asp (新聞查看頁(yè)面)
xh_wei.asp (include連接結(jié)尾頁(yè)面)
好了具體的規(guī)劃就是這些,大家應(yīng)該能明白一個(gè)步驟了吧!
也是一個(gè)思考過(guò)程,建站--建立各功能目錄--建立數(shù)據(jù)庫(kù)--建立后臺(tái)文件--建立顯示記錄頁(yè)面---完善程序例如編輯刪除功能
2.用Access寫數(shù)據(jù)庫(kù)xhnew.mdb
這次咱們就來(lái)做這個(gè)新聞系統(tǒng)的數(shù)據(jù)庫(kù),放心很簡(jiǎn)單,幾分鐘就可以搞定!
首先開(kāi)發(fā)ACCESS,設(shè)計(jì)表,如下圖:
在這里,我詳細(xì)介紹一下各個(gè)數(shù)據(jù)類型的功能
name用來(lái)存放新聞發(fā)布者的姓名(文本)
content 用來(lái)存放新聞內(nèi)容(切記設(shè)置為備注,因?yàn)閮?chǔ)存量多)
title 新聞標(biāo)題(文本)
xhcount 存放每條記錄點(diǎn)擊數(shù)(數(shù)字型)
xhtime 每條新聞發(fā)布時(shí)間(時(shí)間類型)
在此在說(shuō)明一下conn.asp文件,就是數(shù)據(jù)庫(kù)連接文件
源碼:
<%
set db=server.createobject("adodb.connection")
db.open "DBQ="&server.mappath("date/xhnew.mdb")&";driver={microsoft access driver (*.mdb)}"
%>
大家能看明白嘛?第一句聲明DB為數(shù)據(jù)名。
然后打開(kāi)ADO,這個(gè)是規(guī)范寫法,對(duì)于數(shù)據(jù)庫(kù)移動(dòng)位置可以在server.mappath改。
3.寫后臺(tái)管理登陸頁(yè)面xh_login.asp和xh_cklogin.asp還有退出管理頁(yè)面xh_loginout.asp
這次,準(zhǔn)備講解這個(gè)后臺(tái)登陸的幾個(gè)頁(yè)面!
xh_login.asp這個(gè)頁(yè)面主要一個(gè)表單遞交頁(yè)面,遞交到xh_cklogin.asp
xh_cklogin.asp是個(gè)驗(yàn)證表單密碼的頁(yè)面。
好了,咱們來(lái)分析這段代碼。
name=trim(request.Form("username"))
pass=trim(request.form("password"))
主要是從login.asp提取2個(gè)表單的值
if name="" or pass="" then
response.write "<script language=javascript>alert('對(duì)不起未輸入,請(qǐng)返回');_
history.back(-1)</script>"
end if
主要就是驗(yàn)證輸入的用戶名和密碼是否是空值,這個(gè)參數(shù)是從登陸框傳遞過(guò)來(lái)的!記得我們給xh_login.asp的各個(gè)控件賦予了名稱
if name="adminxh" and pass="adminxh" then
session("xianhe")="yes"
response.redirect "xh_add.asp"
else
response.write "<script language=javascript>alert('對(duì)不起密碼輸入錯(cuò)誤');history.back_
(-1)</script>"
end if
主要就是驗(yàn)證密碼是否正確了,如果正確進(jìn)入下個(gè)頁(yè)面,不正確返回登陸頁(yè)面!在這里主要要提的是,這么一句代碼。
session("xianhe")="yes"
這句代碼非常的重要,就是這個(gè)會(huì)話可以防止別人非法登陸你的后臺(tái)頁(yè)面,在下節(jié)在著重講解,在這里你只要明白,我把這個(gè)會(huì)話賦值為"yes"
xh_loginout.asp是個(gè)退出管理的跳轉(zhuǎn)頁(yè)面,只有2行代碼
第一行是消除會(huì)話的值
第二行是跳轉(zhuǎn)頁(yè)面代碼
4.寫后臺(tái)添加新聞頁(yè)面xh_write.asp和xh_save.asp
這次我們來(lái)講解新聞添加頁(yè)面xh_write和保存新聞頁(yè)面xh_save
首先我們來(lái)看看xh_write頁(yè)面。
從上圖我想大家應(yīng)該可以看明白,就是給表單各個(gè)控件起名字,這樣可以方便傳遞值!
這個(gè)表單遞交的頁(yè)面是xh_save.asp
咱們著重的講一下的是xh_save.asp,來(lái)吧看看下圖的代碼。
<!--#include file="xh_conn.asp"-->
代碼是調(diào)用數(shù)據(jù)庫(kù)連接文件,不連接可就over了
<%
dim xianhe
xianhe=session("xianhe")
if xianhe="" then
response.redirect "xh_login.asp"
end if
%>
在這里大家還記得,在登陸后臺(tái)的時(shí)候我傳遞給session("yes")這個(gè)會(huì)話一個(gè)值嘛?
它就是此時(shí)有用了,因?yàn)槿绻愕顷懖怀晒?會(huì)話就是空值,添加頁(yè)面就不會(huì)被直接URL進(jìn)去,想必大家可以聽(tīng)明白我的講解吧!
好了講解下面的代碼,看上圖:
這段代碼主要就是聲明一個(gè)記錄集,然后起名RS,用記錄集來(lái)添加新聞!
set rs=server.createobject("adodb.recordset")
sql="select * from erennew"
rs.open sql,db,1,3
SQL語(yǔ)句對(duì)這個(gè)數(shù)據(jù)庫(kù)的erennew表,然后rs.open sql,db,1,3是用賦值的參數(shù)來(lái)打開(kāi)記錄集,附帶的1,3簡(jiǎn)單的來(lái)說(shuō)就是可以讓記錄集添加數(shù)據(jù)
rs.addnew
rs("title")=trim(request.form("title"))
rs("name")=trim(request.form("name"))
rs("content")=server.htmlencode(request.form("content"))
rs("xhcount")=0
rs("xhtime")=now()
rs.update
這段就是添加記錄的代碼
rs.addnew添加
rs.update更新
其中的數(shù)據(jù),大家可以明白就是通過(guò)遞交表單的參數(shù)傳遞給了數(shù)據(jù)庫(kù)!
rs.close
set rs=nothing
response.redirect "xh_add.asp"
關(guān)閉記錄集,然后跳轉(zhuǎn)頁(yè)面。
5.寫后臺(tái)顯示頁(yè)面,功能帶有編輯和刪除xh_add.asp
好了,這節(jié)可以講解xh_add.asp就是登陸后臺(tái)的主頁(yè)面
下圖是后臺(tái)效果。
然后咱們來(lái)看看代碼。
這段代碼看著是不是很熟悉啊,對(duì)了,在上節(jié)課我已經(jīng)詳細(xì)講解了這個(gè)會(huì)話的功能了!
大家看看這個(gè)代碼,就是用SQL搜索了,erennew所有的記錄,然后用execute執(zhí)行了這個(gè)SQL,關(guān)于輸入各個(gè)數(shù)據(jù),由于我沒(méi)有界圖,所以就用代碼說(shuō)明了啊!
<%do while not rs.eof%>
<tr>
<td align="center"><%=rs("id")%></td>
<td><a href=../xh_look.asp?id=<%=rs("id")%> target="_blank"><%=rs("title")%></a></td>
<td><%=rs("xhtime")%></td>
<td align="center"><a href="xh_edit.asp?id=<%=rs("id")%>">編輯</a></td>
<td align="center"><a href="xh_del.asp?id=<%=rs("id")%>">刪除</a></td>
</tr>
<%
rs.movenext
loop
%>
大家看這段代碼,難點(diǎn)就是編輯和刪除的連接為:
xh_edit.asp?id=<%=rs("id")%>"就拿這個(gè)講解吧!
意思就是傳遞到edit.asp這個(gè)頁(yè)面一個(gè)參數(shù),這個(gè)在edit.asp頁(yè)面用querystring來(lái)探測(cè)這個(gè)參數(shù),為什么這么說(shuō)呢,主要就是為了分別到底是那個(gè)那個(gè)新聞需要被編輯或者刪除,畢竟ID是唯一的!
6.寫后臺(tái)編輯新聞頁(yè)面xh_edit.asp和刪除新聞頁(yè)面xh_dll.asp
這節(jié)課主要講新聞的2個(gè)重要部分也是難點(diǎn)部分,刪除和編輯。
首先是xh_del.asp
大家仔細(xì)看看主要部分就是:
id=request.querystring("id")
delsql="delete * from erennew where id="&id
db.execute(delsql)
這段代碼,主要是什么呢?
ID的賦值,是從XH_ADD.ASP頁(yè)面?zhèn)鬟f過(guò)來(lái)的參數(shù),然后賦值給變量ID上,大家明白了嘛?
然后在根據(jù)這個(gè)傳遞來(lái)查詢要?jiǎng)h除的記錄!
然后執(zhí)行這個(gè)DELSQL語(yǔ)句! 編輯部分原理上和刪除是相同的。
上圖就是代碼部分:
if request.form("active")="" then
else
rs("title")=trim(request.form("title"))
rs("content")=server.htmlencode(request.form("content"))
rs("name")=trim(request.form("name"))
rs.update
response.redirect "xh_add.asp"
end if
注意這部分中的這個(gè)
if request.form("active")="" then
這個(gè)是在表單部分我賦值了一個(gè)隱藏域名為active值為yes,這個(gè)有點(diǎn)優(yōu)點(diǎn)就是打開(kāi)這個(gè)頁(yè)面不直接傳遞遞交,要點(diǎn)擊提交才能賦值,遞交后執(zhí)行。
rs("title")=trim(request.form("title"))
rs("content")=server.htmlencode(request.form("content"))
rs("name")=trim(request.form("name"))
rs.update
response.redirect "xh_add.asp"
最后一句是刷新頁(yè)面到管理頁(yè)面!
然后跟著參數(shù)rs.update直接刷新數(shù)據(jù)庫(kù),好了,大家該明白了吧! 7.完成前臺(tái)新聞頁(yè)面index.asp和查看新聞頁(yè)面xh_look.asp
好了這是最后一節(jié)來(lái)個(gè)簡(jiǎn)單的結(jié)尾。
這個(gè)在上節(jié)課已經(jīng)講解這個(gè)代碼了,就是倒敘排列表中的記錄!
在這個(gè)代碼中,我列出來(lái)
</tr>
<%do while not rs.eof%>
<tr>
<td height="28" align="left"> <img src="images/page.gif" _
width="12" height="14"> <a href=xh_look.asp?id=<%=rs("id")%> target_
="_blank"><%=rs("title")%></a> (<font color="#006699"><%=rs_
("xhtime")%>發(fā)表</font>)
<font color="#006699"> 瀏覽過(guò)<%=rs("xhcount")%>次</font></td>
</tr>
<%
rs.movenext
loop
%>
</table>
這個(gè)do while not rs.eof 主要就是循環(huán),然后和loop之間的代碼就是反復(fù)輸出記錄!
not rs.eof判斷記錄有沒(méi)有到結(jié)尾,如果沒(méi)有繼續(xù)輸入! 好了,下面是新聞頁(yè)面xh_look.asp
這句主要是判斷傳遞過(guò)來(lái)的參數(shù)是否為空,如果不是就賦值給參數(shù),如果是空就賦值1。
自寫一個(gè)參數(shù),主要用來(lái)替換換行代碼!
sql="select * from erennew where id="&id
rs.open sql,db,1,3
rs("xhcount")=rs("xhcount")+1
rs.update
上面代碼大家可以看明白嘛?和以前差不多,就是累加瀏覽數(shù),搜索到ID值,然后更新數(shù)據(jù)庫(kù)中的xhount的數(shù)值,大家明白了吧~!
演示
下載