返回列表 上一主題 發帖

[教學] (實戰專題) 行政公佈欄

[教學] (實戰專題) 行政公佈欄

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

程式流程

本程式範例共分為3個部分,分別是:

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

    14-19.png

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

    14-20.png

  • 儲存新公告資料內容的add.asp程式,當有權發佈新公告者填寫相關公告資料者在程式網頁addnews.asp中表單內填寫好相關資料後,按下『送出公告』按鈕後,表單的資料就送將本程式寫入至資料庫檔案中,並且將網頁瀏覽連結轉向回行政公佈欄的Index.asp程式網頁。
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

公佈欄程式網頁

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

條列現有公告內容

14-21.png


  • 在條列公告的部分分為三大項(請比對上圖):

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

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



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



密碼表單

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

14-23.png

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

14-24.png

注意:

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

    14-25.png


本程式範例預設密碼為"test"
index.asp
  1. <%
  2. '建立資料庫連結物件
  3.         Set conobject = Server.CreateObject("ADODB.Connection")
  4.         DBPath = Server.MapPath("news.mdb")
  5. '連結資料庫       
  6.         conobject.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&DBPath
  7. '建立資料庫存取物件       
  8.         Set RS=Server.CreateObject("ADODB.Recordset")
  9. '打開資料表       
  10. SQL = "Select * From 公佈欄 Order By 發言日期 Desc"
  11.         RS.Open SQL,conobject,1,3
  12. %>
  13. <HTML>
  14. <BODY>
  15. <h2 Align="Center"><img border="0" src="tit.gif"></h2>
  16. <TABLE Border=0 Cellspacing=5 width="100%">     
  17. <TR BgColor=#00FFFF>     
  18. <TD align="center" bgcolor="#0066FF" width="100%" colspan="3"><font color="#FFFFFF"><b>行政公告</b></font></TD>   
  19. </TR>   
  20. <% While not rs.eof%>   
  21.    <TR Valign=TOP>   
  22.    <TD NoWrap width="20%">   
  23.     <p align="center"><font size="2"><%=rs("發言日期")%></font></TD>   
  24.    <TD width="60%" bgcolor="#FFFFCC"><font size="2">
  25. <%=rs("內容")%></font></A></TD>   
  26.    <TD width="10%">   
  27.     <p align="center"><font size="2"><a href=mailto:<%=rs("email")%>><%=rs("單位")%></A></font></TD>   
  28.    </TR>   
  29. <%   
  30.    rs.MoveNext   
  31. Wend      
  32. %>   
  33. </TABLE>   
  34. <CENTER>   
  35. </CENTER>   
  36. <hr size="1" color="#0000FF">
  37. <form method="POST" action="addnews.asp">
  38.   <p align="center"><font size="2">輸入密碼:<input type="password" name="password" size="8">
  39.   <input type="submit" value="發佈公告" style="background-color: #0000FF; color: #FFFFFF; border-style: groove"></font></p>
  40. </form>
  41. </BODY>   
  42. </HTML>
複製代碼
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

TOP

新公告發佈程式網頁

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

14-26.png

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

14-27.png

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


addnews.asp
  1. <%
  2. if Request("password")="test" then
  3. %>

  4. <HTML>
  5. <BODY>
  6. <h2 Align="Center"><img border="0" src="tit.gif"></h2>
  7. <TABLE Width="100%"><TR><TD Align=Center bgcolor=#000080>   
  8. <b><font color="#FFFFFF" size="2">發布新公告</font></b>   
  9. </TD></TR></TABLE>   
  10. <CENTER>   
  11. <FORM Action=add.asp Method=POST>   
  12. <TABLE Border="1" bgcolor="#FFCC66" bordercolor="#FF9933" cellspacing="0">   
  13. <TR><TD><font size="2">發佈單位:</font></TD>   
  14. <TD><font size="2"><INPUT Type="text" Size="30" Name="單位"></font></TD></TR>   
  15. <TR><TD><font size="2">聯絡信箱:</font></TD>   
  16. <TD><font size="2"><INPUT Type="text" Size="30" Name="Email">   
  17.   </font>   
  18. </TD></TR>   
  19. <TR><TD><font size="2">內容:</font></TD>   
  20. <TD><font size="2"><TEXTAREA Name="內容" Rows="8" Cols="60">
  21. </TEXTAREA></font></TD></TR>   
  22. </TABLE>   
  23. <INPUT Type="submit" Value="送出公告">   
  24. </FORM>   
  25. </CENTER>   
  26. </BODY>   
  27. </HTML>   
  28. <%
  29. else
  30. Response.Redirect "index.asp"
  31. End if
  32. %>  
複製代碼
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

TOP

儲存新公告資料

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

14-28.png

注意:

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



add.asp
  1. <%
  2. '建立資料庫連結物件
  3.         Set conobject = Server.CreateObject("ADODB.Connection")
  4.         DBPath = Server.MapPath("news.mdb")
  5. '連結資料庫       
  6.         conobject.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&DBPath
  7. '建立資料庫存取物件       
  8.         Set RS=Server.CreateObject("ADODB.Recordset")
  9. '打開資料表       
  10.         RS.Open "公佈欄",conobject,1,3
  11. '儲存資料        
  12.    rs.AddNew
  13.    rs("單位") = Request("單位")
  14.    rs("Email") = Request("Email")
  15.    rs("內容") = Request("內容")
  16.    rs.Update
  17. Response.Redirect "index.asp"
  18. %>  
複製代碼
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

TOP

建立資料庫資料表

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

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

14-29.png

提示:

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



(實戰專題) 行政公佈欄 完整範例壓縮檔: news.zip (19.89 KB)
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

TOP

回復 6# woody00253


    在SQL命令中加入倒序排序
  1. select ....  order by 欄位名 desc
複製代碼
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

TOP

回復 8# c_c_lai


    當然好,而且您很細心,相關的論壇推廣連結都加上囉
非常感恩!!
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

TOP

        靜思自在 : 君子為目標,小人為目的。
返回列表 上一主題