標題:
[教學]
(實戰專題) 行政公佈欄
[打印本頁]
作者:
小誌
時間:
2010-5-26 22:16
標題:
(實戰專題) 行政公佈欄
所謂的『行政公佈欄』就類似很多網站都會有的『網站更新紀錄』一樣,一般的使用情況都是一有變動就得重新的編寫網頁,但是我們利用資料庫與ASP程式的設計,即可透過瀏覽器進行線上資料更新的動作。
程式流程
本程式範例共分為3個部分,分別是:
行政公佈欄程式網頁Index.asp,此程式網頁會將的公告事項條列出來,同時利用SQL搜尋語法將較新的公告事項條列在網頁的最上面,而且在此程式網頁的最下方就同時存在著『發佈公告』的權限認證機制,不要誤會喔!它只是以表單的形式將認證密碼送出而已(下圖紅色圈框),並沒有辨證密碼的正確與否。
[attach]1024[/attach]
填寫新公告事項內容的addnews.asp程式網頁,本程式網頁中有一個表單,提供有權發佈新公告者填寫相關公告資料,同時真正的辨證密碼動作將在此程式網頁中完成。
[attach]1025[/attach]
儲存新公告資料內容的add.asp程式,當有權發佈新公告者填寫相關公告資料者在程式網頁addnews.asp中表單內填寫好相關資料後,按下『送出公告』按鈕後,表單的資料就送將本程式寫入至資料庫檔案中,並且將網頁瀏覽連結轉向回行政公佈欄的Index.asp程式網頁。
作者:
小誌
時間:
2010-5-26 22:22
公佈欄程式網頁
在公佈欄程式網頁Index.asp中可分為兩大部分,一為現有的公告內容條列,另一為用來新增公告的身分確認密碼表單資料傳送!
條列現有公告內容
[attach]1026[/attach]
在條列公告的部分分為三大項(請比對上圖):
A:公告發佈的日期時間。
B:公告的內容。
C:公告發佈的單位(其超鏈結為該發佈單位的聯絡電子信箱)。
在條列現有的公告內容部分,我們只要開啟資料庫,然後將『公佈欄』資料表中的相關欄位資料取出來,並且加上相關的HTML表格標籤組合就可完成任務:
注意
上圖中標示為紅色的HTML網頁標籤,因為我們幫公告發佈單位加上了聯絡電子信箱的超鏈結,所以請你要特別小心<>(標籤括弧符號)的位置與數量。
密碼表單
在公佈欄程式網頁下方有一個填寫密碼的表單欄位,表單中只有一個填寫密碼的欄位與『發佈公告』的傳送按鈕,它只是以表單的形式將認證密碼送出而已:
[attach]1027[/attach]
這個傳送密碼的表單原始碼如下圖所示:
[attach]1028[/attach]
注意:
再次強調,在此表單中的認證密碼是送交addnews.asp程式網頁來做辨正(上圖藍色網頁標籤),密碼的比對並不存在於此程式網頁中。
輸入密碼的表單行文字欄位它的類型不是設定為TEXT(文字)喔!而是設定為Password(密碼),當我們將文字欄位的類型設定為TEXT(文字),則當在該欄位中填寫資料時,其填寫的內容會一五一時的顯示在欄位中(見下圖A),但若把文字欄位的類型設定為Password(密碼)則當在該欄位中填寫資料時,其填寫的內容會以星號代替(見下圖B):
[attach]1029[/attach]
本程式範例預設密碼為"test"
index.asp
<%
'建立資料庫連結物件
Set conobject = Server.CreateObject("ADODB.Connection")
DBPath = Server.MapPath("news.mdb")
'連結資料庫
conobject.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&DBPath
'建立資料庫存取物件
Set RS=Server.CreateObject("ADODB.Recordset")
'打開資料表
SQL = "Select * From 公佈欄 Order By 發言日期 Desc"
RS.Open SQL,conobject,1,3
%>
<HTML>
<BODY>
<h2 Align="Center"><img border="0" src="tit.gif"></h2>
<TABLE Border=0 Cellspacing=5 width="100%">
<TR BgColor=#00FFFF>
<TD align="center" bgcolor="#0066FF" width="100%" colspan="3"><font color="#FFFFFF"><b>行政公告</b></font></TD>
</TR>
<% While not rs.eof%>
<TR Valign=TOP>
<TD NoWrap width="20%">
<p align="center"><font size="2"><%=rs("發言日期")%></font></TD>
<TD width="60%" bgcolor="#FFFFCC"><font size="2">
<%=rs("內容")%></font></A></TD>
<TD width="10%">
<p align="center"><font size="2"><a href=mailto:<%=rs("email")%>><%=rs("單位")%></A></font></TD>
</TR>
<%
rs.MoveNext
Wend
%>
</TABLE>
<CENTER>
</CENTER>
<hr size="1" color="#0000FF">
<form method="POST" action="addnews.asp">
<p align="center"><font size="2">輸入密碼:<input type="password" name="password" size="8">
<input type="submit" value="發佈公告" style="background-color: #0000FF; color: #FFFFFF; border-style: groove"></font></p>
</form>
</BODY>
</HTML>
複製代碼
作者:
小誌
時間:
2010-5-26 22:25
新公告發佈程式網頁
要在addnews.asp程式網頁的表單中填寫新公告事項內容,首先必須先驗證填寫者是否有發佈新公告的權利,怎麼驗證?在公佈欄程式網頁下方不是有一個填寫密碼的表單嗎?當表單中所填寫密碼傳送給新公告發佈程式網頁時,我們就先驗證一下密碼,如果密碼通過我們就秀出填寫新公告的表單,反之,若密碼驗證沒通過,我們就直接將網頁瀏覽連結轉向回行政公佈欄的Index.asp程式網頁:
[attach]1030[/attach]
密碼通過則就秀出填寫新公告的表單,共有三個填寫資料的欄位,一個『送出公告』的發送按鈕,如下圖所示:
[attach]1031[/attach]
提示:
在行政公佈欄的Index.asp程式網頁中,條列現有公告時不是還有一個公告發佈的『日期時間』欄位嗎?它從哪裡來的,別擔心!公告發佈的時間在公告資料寫入資料庫的時候就會自動建立了!
addnews.asp
<%
if Request("password")="test" then
%>
<HTML>
<BODY>
<h2 Align="Center"><img border="0" src="tit.gif"></h2>
<TABLE Width="100%"><TR><TD Align=Center bgcolor=#000080>
<b><font color="#FFFFFF" size="2">發布新公告</font></b>
</TD></TR></TABLE>
<CENTER>
<FORM Action=add.asp Method=POST>
<TABLE Border="1" bgcolor="#FFCC66" bordercolor="#FF9933" cellspacing="0">
<TR><TD><font size="2">發佈單位:</font></TD>
<TD><font size="2"><INPUT Type="text" Size="30" Name="單位"></font></TD></TR>
<TR><TD><font size="2">聯絡信箱:</font></TD>
<TD><font size="2"><INPUT Type="text" Size="30" Name="Email">
</font>
</TD></TR>
<TR><TD><font size="2">內容:</font></TD>
<TD><font size="2"><TEXTAREA Name="內容" Rows="8" Cols="60">
</TEXTAREA></font></TD></TR>
</TABLE>
<INPUT Type="submit" Value="送出公告">
</FORM>
</CENTER>
</BODY>
</HTML>
<%
else
Response.Redirect "index.asp"
End if
%>
複製代碼
作者:
小誌
時間:
2010-5-26 22:26
儲存新公告資料
在新公告表單中填寫好資料後,按下『送出公告』的發送按鈕,資料將傳送給add.asp程式處理,則接下來就是要將接收自『新公告表單』中的欄位資料寫入資料庫檔案中,如下圖所示:
[attach]1032[/attach]
注意:
要在資料表中新增一筆資料請使用資料錄的AddNew方法新增資料錄。
利用rs("欄位名稱")=欄位值,將欄位資料寫入相對應的欄位,這樣的動作並沒有真正的將資料寫入資料庫中,只是將資料寫入至緩衝區,我們必須再呼叫Update方法,才能將資料真正的寫入資料庫中,切記。
完成新增資料錄並利用Update方法將資料寫入資料庫後,記得將網頁連結轉向回Index.asp程式網頁,否則瀏覽者所見到的將只是一個空白網頁。
add.asp
<%
'建立資料庫連結物件
Set conobject = Server.CreateObject("ADODB.Connection")
DBPath = Server.MapPath("news.mdb")
'連結資料庫
conobject.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&DBPath
'建立資料庫存取物件
Set RS=Server.CreateObject("ADODB.Recordset")
'打開資料表
RS.Open "公佈欄",conobject,1,3
'儲存資料
rs.AddNew
rs("單位") = Request("單位")
rs("Email") = Request("Email")
rs("內容") = Request("內容")
rs.Update
Response.Redirect "index.asp"
%>
複製代碼
作者:
小誌
時間:
2010-5-26 22:29
建立資料庫資料表
本範例將公告事項資料建立於Access資料庫中,這個資料庫我們定名為『news.mdb』,而在資料庫中用來儲存所有公告資料的資料表則定名為『公佈欄』。
在『公佈欄』資料表中,我們建立了四個欄位:Email(公告發佈單位的聯絡信箱)、單位(公告發佈單位)、內容(公告內容)、發言日期(公告發佈日期),其欄位設定說明如下:
[attach]1033[/attach]
提示:
我們的發言日期欄位其資料型態設定為New(),就是當我們新增公佈資料時,我們不需自己填入此欄位的資料,Access OLE驅動程式自然會幫我們取回在資料新增當時的系統時間,並且將此時間資料填入發言日期欄位中。
內容欄位其資料型態設定為『備忘』,是怕我們填寫的資料長度超過255個字元,也就是說,資料型態設定為『備忘』將不會像資料型態設定為『文字』時有255個字元的限制。
(實戰專題) 行政公佈欄 完整範例壓縮檔:
[attach]1034[/attach]
作者:
woody00253
時間:
2012-9-23 21:29
不好意思,小誌大大,小弟有一些問題想跟你請教一下
最近小弟有在寫一個網頁,可是在網頁首頁的公告事項的部分,
事件發布之後,最新的消息都會被放在最後面,相反的最舊的消息會放在最前面,
想請問小誌大大,我這一個事件排放的問題,要如何才能解決......
作者:
小誌
時間:
2012-9-23 21:43
回復
6#
woody00253
在SQL命令中加入倒序排序
select .... order by 欄位名 desc
複製代碼
作者:
c_c_lai
時間:
2012-9-24 08:58
回復
5#
小誌
謝謝您分享的好專題,我特意將它轉成 PDF 檔,當成備忘錄。
希望您不要介意!
[attach]12597[/attach]
作者:
小誌
時間:
2012-9-24 18:12
回復
8#
c_c_lai
當然好,而且您很細心,相關的論壇推廣連結都加上囉
非常感恩!!
作者:
小蟲弟
時間:
2013-10-15 14:02
小誌大大!!不好意思~想要請問需要下載這個檔案需要中學生的身分!請問要如何變成中學生呢?不好意思麻煩了!
作者:
lin7556
時間:
2013-11-17 12:10
請問是用MDB去改欄位嗎?
作者:
kung1598
時間:
2023-5-12 01:02
當然好,而且您很細心,相關的論壇推廣連結都加上囉非常謝謝
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)