




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、案例留言板設計概述現在很多網站都考慮到了與用戶之間的互動交流,于是出現了各種各樣的 留言板。在留言板中,用戶可以看到前面使用者的留言,也可以留下自己的言論。 對商務網站,用留言板可以了解用戶的需求和意見?,F在,網上也有很多免費的留言板程序,但親自動手做一個,能體會其中的奧秘,應該是一個不錯的主意。系統(tǒng)架構留言板的功能可大可小,小則簡單地讓用戶瀏覽留言和寫一個短篇留言,具有回復的功能;大則可以做到能按不同討論分門別類的WebBBS系統(tǒng),再大就是Web社區(qū)系統(tǒng)了。本案例留言板功能具有:1 瀏覽留言。以一個主頁形式,顯示留言具有分頁瀏覽功能。2回復留言。通過主頁的“回復留言”超級鏈接,進入寫留言頁面
2、。3 隱藏留言。具有管理員身份的用戶具有屏蔽不適宜公布留言的功能,也是在 通過主頁的“隱藏留言”超級鏈接,進入留言管理頁面。工作流程圖如圖1所示:圖1說明:1 用戶向服務器發(fā)出訪問請求;2 服務器根據用戶的角色顯示主頁面的功能1) 一般用戶,在留言板的主頁面中有瀏覽和回復功能;2) 管理員,在留言板的主頁面中有瀏覽、回復和屏蔽功能;3 留言信息記錄在數據庫中;4 服務器從數據庫中讀取留言信息顯示在頁面上,也把用戶的留言存儲在數據 庫中。三、系統(tǒng)設計1 邏輯結構設計根據對系統(tǒng)架構的描述,可得系統(tǒng)的邏輯結構,如圖2所示圖22 數據庫設計在MySQL數據庫服務器上建立名為guest數據庫,其中包含數
3、據表guestbook,各字段的定義和說明如表1:表1 guest數據庫中的數據表guestbook結構字段類型NULL說明備注serialint(5)否留言序列表auto in creme ntn amechar(20)否使用者姓名timetimestamp(14)是留言時間msgtext否留言內容emailchar(30)是使用者郵箱地址flagchar(1)是顯示標志Y/N缺省為Y注:通過phpMyadmin建立,在MySQL的data文件夾中會自動創(chuàng)建以此數據庫為名的 文件夾,包含相關數據。本案例用到的SQL命令如表2表2本案例用到的SQL命令命令格式含義SELECT * FROM g
4、uestbook WHERE flag=YORDER BY time DESC按子段的逆序取回數據表guestbook里的標記flag=的記錄信息INSERT INTOguestbook( name,time,msg,email)values($ name, now(),$msg,$email)向數據表guestbook的表尾追加記錄UPDATE guestbookSET flag=N WHEREserial=$serial向新數據表guestbook的子段flag信息3.界面設計主頁界面標題行說明行導航條留言信息區(qū)留言內容留言信息區(qū)留言內容寫留言頁界面 標題行昵稱文本框Email 文本框控制
5、按鈕:寫好了、重寫、放棄屏蔽留言頁信息操作成功提示行,返回主頁。四、編碼實現1. 主頁代碼文件:in dex.php?/輸出HTML頭echo 留言板 留言板 J/判斷來者是否為管理員-markl$webmastelP=array(127.0.0.1);$isMaster=false;for($i=0;$icou nt($webmastelP);$i+)if ($REMOTE_ADDR=$webmastelP$i)$isMaster=true;break;/連接數據庫服務器-mark2$connection=mysql_connect(localhost,root,) or die(無法連接數
6、據庫!);mysql_query(set names gb2312);mysql_select_db(guest) or die(無法選擇數據庫!);/向服務器發(fā)送查詢請求$query=SELECT * FROM guestbook WHERE flag=Y ORDER BY time DESC; $result=mysql_query($query,$connection) or die(瀏覽失敗);/取回留言$cou nt=O;while($row=mysql_fetch_array($result)$gb$cou ntserial=$rowserial;$gb$co un t n ame
7、=$row n ame;$gb$cou nttime=$rowtime;$gb$co un tmsg=$rowmsg;$gb$cou ntemail=$rowemail;$gb$cou ntflag=$rowfalg;$co un t+;mysql_close($connection) or die(無法斷開與數據庫的連接”);/制作導航條-mark3$indexstr= 我要留言 |;/當用戶進來時把$page設為0if (SQUERY_STRING=”)$page=0;/計算頁數$co un t=co un t($gb);$msgPerPage=10;$start=$page*$msgPe
8、rPage;$en d=$start+$msgPerPage;if($e nd$cou nt)$en d=$co unt;$totalpage=ceil($co un t/$msgPerPage);echo 目前留言板共有.$count.條留言,本頁列出了第.($start+1).至.$end.條n;/制作頁導航if($page0)$indexstr=$indexstr. 上一頁 | ;for($i=0;$i$totalpage;$i+)if($i!=$page)$indexstr=$indexstr. 第.($i+1).頁 ;else$indexstr=$indexstr. 第.($i+1)
9、.頁 ; if($i!=($totalpage-1)$i ndexstr=$i ndexstr. | ;if($page$totalpage-1)$indexstr=$indexstr. 下頁 ;/輸出導航條echo $i ndexstrn;/輸出留言-mark4for($i=$start;$i$e nd;$i+)把換行符轉換成$msg=nl2br($gb$imsg);格式化時間輸出$dbdate=$gb$itime;$year=substr($dbdate,0,4);$mo nth=substr($dbdate,5,2);$day=substr($dbdate,8,2);$hour=subs
10、tr($dbdate,11,2);$mi n=substr($dbdate,14,2);$sec=substr($dbdate,17,2);$time=$m on th.$day. .$year. .$hour.:.$mi n.:.$sec;/輸出一條留言的所有信息echo n;echo ;echo n;echo ;echo 序列號:.$gb$iserial;echo 昵 稱:;if(trim($gb$iemail)!=)echo ;echo .$gb$iname.;echo ;echo 時 間:.$time;echo 回復作者 ; if($is
11、Master)echo | 屏蔽這一篇 ;echo n;echo 正文;echo $msg;echo n;echo n;echo n;echo $in dexstr;echo ;?-in dex.php-代碼解讀1)輸出HTML頭用echo語句把HTML標記作為字符串引入。2)判斷來者是否為管理員-mark1定義了一個數組$webmastelP,記錄留言管理員的IP ;然后檢查進來的是不是管理員,記錄在$IsMaster ;使用系統(tǒng)變量$REMOTE_ADDR來獲取用戶的IP。3)連接數據庫服務器-mark2連接數據庫服務器;設置數據庫服務器處理的字符集,以處理漢字在瀏覽器上的顯示;打開數據庫
12、guest按字段time的逆序取回數據表guestbook里的標記flag=的記錄信息(即篩選可顯示的留言記錄),并把它們保存在二維數組$gb中;關閉數據庫連接。4)制作導航條-mark3程序段中實現了四個功能(1)導航條上的信息存儲在變量$indexstr中設置導航條上的第一條信息:我要留言(鏈接到寫留言頁面)設置導航條上的第二條信息:目前留言板共有條留言,本頁列出了第至條(2)設置分頁顯示的參數,算法描述如下初始化當前頁$page為0;統(tǒng)計獲取的有效記錄($gb)數,存放在變量$count中;設置每頁顯示的記錄數為10;計算當前頁開始的記錄編號,存放在變量$start中;計算當前頁結束的記
13、錄編號,存放在變量$end中;若當前頁碼結束的記錄編號 $end大于有效記錄數$count,則當前頁結束的記錄編號 $end =有效記錄數$count;計算數據表中的記錄最后一頁的頁碼,存放在變量$totalpage中(3)制作頁導航,算法描述如下若當前頁大于0,則信息后追加鏈接到“上一頁”并在鏈接信息后追加分割線I同時,依次顯示并鏈接到各頁(如第 2頁),但不鏈接本頁 若當前頁未到最后一頁,在鏈接信息后追加分割線|若當前頁小于最后一頁,則信息后追加鏈接到“下一頁”(4)顯示導航條上的信息$indexstr5)輸出留言 mark4分兩個區(qū)域輸出留言信息,一是留言者的信息和操作鏈接,二是留言內容
14、。(1)留言者的信息,包括序列號、昵稱、Email和留言時間,操作主要是寫留言和管理員屏蔽留言。使用函數nI2br()把換行符轉換成使用一組日期函數對時間進行格式化處理使用表格規(guī)劃輸出每條記錄中有關留言者的信息輸出“回復留言”和“屏蔽這一篇”的鏈接(2)留言內容,直接把留言內容字段的信息顯示在表格中。6)此程序中用到的變量祥解變量名取值含義$webmastelPIP地址,數組記錄管理員的IP地址$isMasterTRUE|FALSE記錄是否管理員$REMOTE ADDRIP地址,系統(tǒng)變量記錄登錄網頁的IP地址$connection整數,標識連接數據庫的句柄記錄鏈接數據庫是否成功$querySQ
15、L命令記錄SQL命令$result查詢數據集記錄執(zhí)行SQL命令后的返回結果$cou nt整數記錄查詢數據集中包含的記錄數$row數組記錄查詢數據集中的一條記錄$gb查詢數據集中的值,二維數組記錄查詢結果數據集的值$in dexstr字符串記錄導航條上的顯示信息$page整數記錄當前所顯示的頁碼$msgPerPage整數記錄一頁所顯示的記錄數$start整數記錄當前頁所顯示記錄的第一個$e nd整數記錄當前頁所顯示記錄的最后一個$totalpage整數記錄總頁碼$dbdate$year | $month |$day $hour | $mi n | $sec $time系統(tǒng)時間整數 整數 字符串記
16、錄記錄中時間字段 time的值 分別記錄時間字段time中的年月日 分別記錄時間字段time中的時分秒 記錄轉化后的時間$msg字符串記錄轉化后的留言內容7)此程序中用到函數祥解函數用法含義cou nt()參數取數組型統(tǒng)計數組中兀素的個數mysql_c onn ect()三個參數分別是服務器名,用戶 名,用戶密碼連接到指定的數據庫服務器上,訪問 用戶建立的數據庫die()參數取字符串型返回字符串的信息,錯誤警報mysql query()參數為SQL命令執(zhí)行SQL命令mysql select db()參數為數據庫名打開數據庫文件mysql fetch array()參數為字符串以數組返回查詢數據
17、集中的記錄mysql close()參數為標識連接數據庫的句柄關閉數據庫文件ceil()參數為數值對數值進行收尾處理nl2br()參數為字符串把字符中的回車符轉化為substr($dbdate, m,n)三個參數分別是字符串,整數, 整數從字符串$dbdate中的第m個位置起連續(xù)取n個字符作為新字符串trim()字符串取出字符串前后的空格2寫留言代碼文件:writer.php 寫留言 寫留言 FORM mothod=post actio n= 昵 稱: En ail&n bsp;: 內 容:?$text=;if($action=放棄!)mark1
18、echo ;/-mark1else if($action=寫好了 !)-mark2if ($n ame!= & $msg!=)連接數據庫服務器-$connection=mysql_connect(localhost,root,) or die(無法連接數據庫!); mysql_select_db(guest) or die(無法選擇數據庫!);向服務器發(fā)送查詢請求$query=INSERT INTO guestbook( name,time,msg,email)values($ name, no w(),$msg,$email);$result=mysql_query($query,$conn
19、ection) or die(存入數據庫失敗”); mysql_close($connection) or die(無法斷開與數據庫的連接”); echo n;echo 填寫留言成功!n;echo ;echo 五秒鐘后自動返回系統(tǒng) n;echo n;/-mark2else/-mark3echo n;echo 出錯了 n;echo 信息不全!昵稱和內容是必須填寫的!n;echo n;/mark3?-writer.php-代碼解讀主要完成了三項工作:1) 以HTML編寫了表單,用于填寫昵稱、Emial和留言內容。2) 對單擊表單中的“放棄! ”按鈕的處理:重定向回主頁。mark13)對單擊表單中的“寫好了! ”按鈕的處理,這又有兩種情況:(1)昵稱和Email不空的情況處理mark2連接數據庫服務器;存入數據;關閉數據庫服務器連接;向瀏覽器輸出成功的信息;重定向回主頁。(2)昵稱和Email為空的情況處理:向瀏覽器輸出出錯的信息。mark34)此程序中用到的變量祥解。變量名取值含義$
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人轉租店鋪合同范本
- 兼職合同范例簡易范例
- 休閑農莊出租合同范本
- 叉車維修度合同范本
- 麗水塔吊拆裝合同范本
- 個人簡單授權委托書怎么寫
- 工業(yè)鍋爐司爐考試模擬題(含答案)
- 電工技術及實訓考試題(含參考答案)
- 上半年工質量監(jiān)督工作總結
- iso認證合同范本
- 廣東義務教育標準化學校
- 煤質化驗員測試題(附參考答案)
- 全電發(fā)票樣式
- (完整版)供應商審核表
- 饅頭工藝流程圖
- (二次供水單位)生活飲用水衛(wèi)生許可證延續(xù)申請表
- 鈉電池正極材料PPT
- 體能訓練概論(NSCA)
- 青島版三年級數學下冊《美麗的街景》教學課件7
- 液壓傳動全套ppt課件(完整版)
- 內部控制五要素圖解
評論
0/150
提交評論