麻辣家族討論版版's Archiver

小誌 發表於 2010-5-26 22:16

(實戰專題) 行政公佈欄

所謂的『行政公佈欄』就類似很多網站都會有的『網站更新紀錄』一樣,一般的使用情況都是一有變動就得重新的編寫網頁,但是我們利用資料庫與ASP程式的設計,即可透過瀏覽器進行線上資料更新的動作。

[color=DarkOrange][size=5][b] 程式流程[/b][/size][/color]

本程式範例共分為3個部分,分別是:
[list]
[*]行政公佈欄程式網頁Index.asp,此程式網頁會將的公告事項條列出來,同時利用SQL搜尋語法將較新的公告事項條列在網頁的最上面,而且在此程式網頁的最下方就同時存在著『發佈公告』的權限認證機制,不要誤會喔!它只是以表單的形式將認證密碼送出而已(下圖紅色圈框),並沒有辨證密碼的正確與否。

[attach]1024[/attach]

[*]填寫新公告事項內容的addnews.asp程式網頁,本程式網頁中有一個表單,提供有權發佈新公告者填寫相關公告資料,同時真正的辨證密碼動作將在此程式網頁中完成。  

[attach]1025[/attach]

[*]儲存新公告資料內容的add.asp程式,當有權發佈新公告者填寫相關公告資料者在程式網頁addnews.asp中表單內填寫好相關資料後,按下『送出公告』按鈕後,表單的資料就送將本程式寫入至資料庫檔案中,並且將網頁瀏覽連結轉向回行政公佈欄的Index.asp程式網頁。
[/list]

小誌 發表於 2010-5-26 22:22

[color=DarkOrange][size=5][b]公佈欄程式網頁[/b][/size][/color]

在公佈欄程式網頁Index.asp中可分為兩大部分,一為現有的公告內容條列,另一為用來新增公告的身分確認密碼表單資料傳送!

[color=Green][size=4][b]條列現有公告內容 [/b][/size][/color]

[attach]1026[/attach]

[list=1]
[*]在條列公告的部分分為三大項(請比對上圖):

A:公告發佈的日期時間。
B:公告的內容。
C:公告發佈的單位(其超鏈結為該發佈單位的聯絡電子信箱)。

[*]在條列現有的公告內容部分,我們只要開啟資料庫,然後將『公佈欄』資料表中的相關欄位資料取出來,並且加上相關的HTML表格標籤組合就可完成任務:
[/list]


[color=Red]注意[/color]
上圖中標示為紅色的HTML網頁標籤,因為我們幫公告發佈單位加上了聯絡電子信箱的超鏈結,所以請你要特別小心<>(標籤括弧符號)的位置與數量。



[color=Green][size=4][b]密碼表單[/b][/size][/color]

在公佈欄程式網頁下方有一個填寫密碼的表單欄位,表單中只有一個填寫密碼的欄位與『發佈公告』的傳送按鈕,它只是以表單的形式將認證密碼送出而已:

[attach]1027[/attach]

這個傳送密碼的表單原始碼如下圖所示:

[attach]1028[/attach]

[color=Red]注意:[/color]
[list=1]
[*]再次強調,在此表單中的認證密碼是送交addnews.asp程式網頁來做辨正(上圖藍色網頁標籤),密碼的比對並不存在於此程式網頁中。
[*]輸入密碼的表單行文字欄位它的類型不是設定為TEXT(文字)喔!而是設定為Password(密碼),當我們將文字欄位的類型設定為TEXT(文字),則當在該欄位中填寫資料時,其填寫的內容會一五一時的顯示在欄位中(見下圖A),但若把文字欄位的類型設定為Password(密碼)則當在該欄位中填寫資料時,其填寫的內容會以星號代替(見下圖B):

[attach]1029[/attach]
[/list]

[color=Red]本程式範例預設密碼為"test" [/color]
index.asp[code]<%
'建立資料庫連結物件
        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>[/code]

小誌 發表於 2010-5-26 22:25

[color=DarkOrange][size=5][b]新公告發佈程式網頁[/b][/size][/color]

要在addnews.asp程式網頁的表單中填寫新公告事項內容,首先必須先驗證填寫者是否有發佈新公告的權利,怎麼驗證?在公佈欄程式網頁下方不是有一個填寫密碼的表單嗎?當表單中所填寫密碼傳送給新公告發佈程式網頁時,我們就先驗證一下密碼,如果密碼通過我們就秀出填寫新公告的表單,反之,若密碼驗證沒通過,我們就直接將網頁瀏覽連結轉向回行政公佈欄的Index.asp程式網頁:

[attach]1030[/attach]

密碼通過則就秀出填寫新公告的表單,共有三個填寫資料的欄位,一個『送出公告』的發送按鈕,如下圖所示:

[attach]1031[/attach]

[color=Red]提示:[/color]
在行政公佈欄的Index.asp程式網頁中,條列現有公告時不是還有一個公告發佈的『日期時間』欄位嗎?它從哪裡來的,別擔心!公告發佈的時間在公告資料寫入資料庫的時候就會自動建立了!


addnews.asp[code]<%
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
%>  [/code]

小誌 發表於 2010-5-26 22:26

[color=DarkOrange][size=5][b]儲存新公告資料[/b][/size][/color]

在新公告表單中填寫好資料後,按下『送出公告』的發送按鈕,資料將傳送給add.asp程式處理,則接下來就是要將接收自『新公告表單』中的欄位資料寫入資料庫檔案中,如下圖所示:

[attach]1032[/attach]

[color=Red]注意:[/color]
[list=1]
[*]要在資料表中新增一筆資料請使用資料錄的AddNew方法新增資料錄。
[*]利用rs("欄位名稱")=欄位值,將欄位資料寫入相對應的欄位,這樣的動作並沒有真正的將資料寫入資料庫中,只是將資料寫入至緩衝區,我們必須再呼叫Update方法,才能將資料真正的寫入資料庫中,切記。
[*]完成新增資料錄並利用Update方法將資料寫入資料庫後,記得將網頁連結轉向回Index.asp程式網頁,否則瀏覽者所見到的將只是一個空白網頁。
[/list]


add.asp[code]<%
'建立資料庫連結物件
        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"
%>  [/code]

小誌 發表於 2010-5-26 22:29

[color=DarkOrange][size=5][b]建立資料庫資料表[/b][/size][/color]

本範例將公告事項資料建立於Access資料庫中,這個資料庫我們定名為『news.mdb』,而在資料庫中用來儲存所有公告資料的資料表則定名為『公佈欄』。

在『公佈欄』資料表中,我們建立了四個欄位:Email(公告發佈單位的聯絡信箱)、單位(公告發佈單位)、內容(公告內容)、發言日期(公告發佈日期),其欄位設定說明如下:

[attach]1033[/attach]

[color=Red]提示:[/color]
[list=1]
[*]我們的發言日期欄位其資料型態設定為New(),就是當我們新增公佈資料時,我們不需自己填入此欄位的資料,Access OLE驅動程式自然會幫我們取回在資料新增當時的系統時間,並且將此時間資料填入發言日期欄位中。
[*]內容欄位其資料型態設定為『備忘』,是怕我們填寫的資料長度超過255個字元,也就是說,資料型態設定為『備忘』將不會像資料型態設定為『文字』時有255個字元的限制。
[/list]


[color=RoyalBlue][size=5][b](實戰專題) 行政公佈欄 完整範例壓縮檔:[/b][/size][/color][attach]1034[/attach]

woody00253 發表於 2012-9-23 21:29

不好意思,小誌大大,小弟有一些問題想跟你請教一下
最近小弟有在寫一個網頁,可是在網頁首頁的公告事項的部分,
事件發布之後,最新的消息都會被放在最後面,相反的最舊的消息會放在最前面,
想請問小誌大大,我這一個事件排放的問題,要如何才能解決......

小誌 發表於 2012-9-23 21:43

[b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=44198&ptid=417]6#[/url] [i]woody00253[/i] [/b]


    在SQL命令中加入倒序排序[code]select ....  order by 欄位名 desc[/code]

c_c_lai 發表於 2012-9-24 08:58

[b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=1326&ptid=417]5#[/url] [i]小誌[/i] [/b]
謝謝您分享的好專題,我特意將它轉成 PDF 檔,當成備忘錄。
希望您不要介意!
[attach]12597[/attach]

小誌 發表於 2012-9-24 18:12

[b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=44205&ptid=417]8#[/url] [i]c_c_lai[/i] [/b]


    當然好,而且您很細心,相關的論壇推廣連結都加上囉
非常感恩!!

小蟲弟 發表於 2013-10-15 14:02

小誌大大!!不好意思~想要請問需要下載這個檔案需要中學生的身分!請問要如何變成中學生呢?不好意思麻煩了!

lin7556 發表於 2013-11-17 12:10

請問是用MDB去改欄位嗎?

頁: [1]

麻辣家族討論版版為 麻辣學園 網站成員  由 昱得資訊工作室 © Since 1993 所提供