【文章內容簡介】
員與商品之 間的多對多的訂購關系轉換為訂單表。會員與商品之間的多對多的評論關系轉換為訂單表。 表 41 會員表 列名 類型 長度 是否為空 是否主鍵 是否外鍵 說明 id int 4 否 是 否 編號,自增 name varchar 25 否 否 否 姓名 pwd varchar 50 否 否 否 密碼 int 11 否 否 否 號 dongjie varchar 4 否 否 否 凍結狀態(tài) varchar 25 是 否 否 郵件 sfzh varchar 25 是 否 否 地址 tel varchar 25 是 否 否 手機 tishi varchar 50 是 否 否 提示問題 huida varchar 50 是 否 否 答案 dizhi varchar 100 是 否 否 地址 youbian varchar 25 是 否 否 郵編 truename varchar 25 是 否 否 真實姓名 表 42 管理員表 列名 類型 長度 是否為空 是否主鍵 是否外鍵 說明 id int 4 否 是 否 編號,自增 name varchar 25 否 否 否 姓名 pwd varchar 25 否 否 否 密碼 tel varchar 25 否 否 否 手機號 realname datetime 25 是 否 否 真實姓名 表 43 商品表 列名 類型 長度 是否為空 是否主鍵 是否外鍵 說明 id int 4 否 是 否 編號,自增 mingcheng varchar 25 否 否 否 名稱 jianjie text 否 否 否 描述 dengji varchar 5 否 否 否 等級 xinghao varchar 25 是 否 否 型號 tupian varchar 200 是 否 否 圖片 shuliang int 4 是 否 否 數(shù)量 tuijian int 4 是 否 否 是否推薦 typeid int 4 是 否 是 類型 pinpai varchar 25 是 否 否 品牌 huiyuanjia varchar 25 是 否 否 會員價 shichangjia varchar 25 是 否 否 市場價 addtime varchar 25 否 否 否 添加時間 表 44 公告 表 列名 類型 長度 是否為空 是否主鍵 是否外鍵 說明 id int 4 否 是 否 編號,自增 title varchar 20 否 否 否 標題 context text 否 否 否 內容 time varchar 50 是 否 否 添加日期 表 45 分類表 列名 類型 長度 是否為空 是否主鍵 是否外鍵 說明 id int 4 否 是 否 編號,自增 typename varchar 50 否 否 否 類型名 表 46 訂單 表 列名 類型 長度 是否為空 是否主鍵 是否外鍵 說明 id int 4 否 是 否 編號,自增 dingdanhao varchar 125 否 否 否 訂單號 spc varchar 125 否 否 是 商品編號 slc varchar 125 否 否 否 數(shù)量 shouhuoren varchar 25 否 否 否 收貨人 sex varchar 2 否 否 否 性別 dizhi varchar 125 否 否 否 地址 youbian varchar 10 否 否 否 郵編 tel varchar 25 否 否 否 聯(lián)系電話 varchar 25 是 否 否 郵件 shfs varchar 25 是 否 否 送貨方式 zfff varchar 25 否 否 否 支付方式 time varchar 25 否 否 否 時間 xiadanren varchar 25 否 否 是 下單人 total int 11 否 否 否 總價 zt varchar 25 否 否 否 狀態(tài) 表 47 評價 表 列名 類型 長度 是否為空 是否主鍵 是否外鍵 說明 id int 4 否 是 否 編號,自增 userid int 4 是 否 是 會員編號 spid int 4 是 否 是 商品編號 title varchar 200 是 否 是 標題 content text 是 否 是 內容 time varchar 否 否 是 添加日期 數(shù)據(jù)庫表之間聯(lián)系 圖 44 數(shù)據(jù)庫表關系圖 第五章 詳細設計與實現(xiàn) 前臺模塊設計與實現(xiàn) ThinkPHP 框架 基于 MVC 設計模式。 ThinkPHP 中的 MVC 分層體現(xiàn)在: 模型( M):模型的定義由 Model 類來 完成。 控制器( C):應用控制器(核心控制器 App 類)和 Action 控制器都承擔了控制器的角色, Action 控制器完成業(yè)務過程控制,而應用控制器負責調度控制。 視圖( V):由 View 類和模板文件組成,模板做到了 100%分離,可以獨立預覽和制作。 根據(jù)上文對網(wǎng)上商城的分析,前臺模塊共設計五個 Action 控制器 類: IndexAction類、 GonggaoAction 類、 ProductAction 類、 UserAction 類和 PublicAction 類。這五個控制器類都繼承 ThinkPHP 框架 Action 控制器基類 — Action 類。其中 IndexAction 類是系統(tǒng)默認的控制器類,而 PublicAction 類用于進行初始化等操作。 GonggaoAction 類負責與公告相關的某些操作, ProductAction 類負責與商品相關的一些操作, DingdanAction類負責處理與訂單相關的一些操作, UserAction 類負責與會員相關的一些操作。前臺模塊 控制器 類圖如圖 51 所示。 + _ _ c o n s t r u c t ( ) i s A j a x ( )+ d i s p l a y ( )+ a s s i g n ( ) n a m e v i e w e r r o rA c t i o n C l a s s+ _ i n i t i a l i z e ( )P u b l i c A c t i o n C l a s s+ i n d e x ( )I n d e x A c t i o n C l a s s+ l o o k i n f o ( )+ a d d g o u w u c h e ( )+ g o u w u 1 ( )+ r e m o v e g w c ( )+ s h o w n e w ( )+ s h o w t u i j i a n ( )+ s h o w h o t ( )+ s h o w f e n l e i ( )+ h i g h t f i n d ( )+ d o h i g h t f i n d ( )+ f i n d s p ( )+ s a v e p j ( )+ s h o w p j ( )+ s a v e d d ( )+ s h o w d d ( )+ f i n d d d ( )+ q r d d ( )P r o d u c t A c t i o n C l a s s+ s h o w g g ( )+ s h o w g o n g g a o ( )G o n g g a o A c t i o n C l a s s+ c h k u s e r n c ( )+ s a v e r e g ( )+ c h a n g e i n f o ( )+ c h k p a s s w o r d ( )+ c h k u s e r ( )+ l o g o u t ( )+ m y p w d ( )+ s h o w p w d ( )U s e r A c t i o n C l a s s 圖 51 前臺模塊控制器類圖 ThinkPHP 框架中, Model 模型類與數(shù)據(jù)庫中的 表或視圖一一對應。通過 Model 模型類可直接對數(shù)據(jù)庫中的表盡享增加、刪除、修改和查詢等操作。由于前臺模塊不需要與管理員員進行交互,所以前臺模塊共設計六個模型類: DingdanModel 類、GonggaoModel 類、 PingjiaModel、 ShangpinModel 類、 TypeModel 類和 UserModel 類。六個模型類都繼承 ThinkPHP 框架 模型類 — Model 類。前臺模塊模型類圖如圖 52 所示。 A d m i n M o d e l C l a s sG o n g g a o M o d e lP i n g j i a M o d e l C l a s sS h a n g p i n M o d e l C l a s s T y p e M o d e l C l a s sU s e r M o d e l+ _ _ c o n s t r u c t ( )+ a d d ( )+ s a v e ( )+ d e l e t e ( )+ s e l e c t ( ) d b n a m e d b n a m eM o d e l C l a s s 圖 52 后臺模塊模型類圖 注冊模塊設計與實現(xiàn) ThinkPHP 框架基于模塊和操作的方式進行訪問,網(wǎng)站的所有的模塊和操作都通過URL 的參數(shù)來訪問和執(zhí)行。 單擊主頁上會員注冊標簽,系統(tǒng)解析 URL 參數(shù),調用UserAction 類的 reg()方法。由于 UserAction 類未定義 reg()方法,系統(tǒng)自動調用模板文件 ,顯示會員注冊界面。在該界面輸入相關信息,點擊提交按鈕即可完成注冊。本次設計運用 JavaScrip 技術對表單輸入的內容進行了校驗。點擊提交按鈕后,系統(tǒng)調用 UserAction 類的 savereg()方法。 該方法通過 UserModel 模型類從數(shù)據(jù)庫中獲取相關信息, 判斷會員名是否已存在。若不存在則顯示注冊成功。若會員名已注冊,則返回會員注冊頁面。會員注冊頁面如圖所示 圖 53 會員注冊頁面 登錄模塊設計與實現(xiàn) 已注冊會員在首頁 的登錄框內輸入會員名、密碼和驗證碼,即完成登錄操作。 會員點擊提交按鈕后, 系統(tǒng)會調用 UserAction 類的 chkuser()方法。該方法通過接收表單信息對驗證碼進行校驗,通過 UserModel 模型類從數(shù)據(jù)庫中獲取相關信息 對 會員的狀態(tài)以及會員提交的 會員名和密碼進行校驗 。如果會員名、密碼或驗證碼輸入錯誤或者會員已經被凍結,則拒絕會員的登錄,彈出相關信息后返回首頁。若會員輸入信息正確且未被凍結,則開啟 session,將會員的相關信息存入 session 中,并顯示會員成功登錄。 會員登錄頁面如圖 54 所示。 圖 54 會員注冊頁面 查詢模塊設計與實現(xiàn) 會員可以瀏覽首頁內的相關商品,也可以網(wǎng)頁上方的搜索框中 輸入相關信息,進行 模糊搜索或精確搜索。若點擊立刻查找按鈕,則系統(tǒng)調用 ProductAction 類的 findsp 方法。該方法通過 ShangpinModel 模型類對輸入的關鍵字進行模糊查詢。然后系統(tǒng)將查詢結果注入到模板文件 中,并調用該模板文件顯示查詢結果。若點擊精確查找按鈕,系統(tǒng)將調用 ProductAction 類的 hightfind 方法,該方法通過 ShangpinModel 類和TypeModel 類從數(shù)據(jù)庫中查詢商品名稱、型號和類型等信息。系統(tǒng)將這些注入到模版文件 中,并調用該模板文件顯示精確搜索頁面。會員在該頁面內選擇詳細的商品信息,進行精確查找。系統(tǒng)會調用 ProductAction 類的 dohightfind 方法,通過ShangpinModel 類在數(shù)據(jù)庫中對輸入的信息進行精確匹配查找。系統(tǒng)將結果注入到模板文件 中,并調用該模板文件顯示查詢結果。 查詢結果頁面如圖 55 所示 。 圖 55 查詢結果頁面 在網(wǎng)頁 上點擊某一商品的圖像、名稱后,系統(tǒng)會調用 ProductAction 類的 lookinfo()方法。該方法接收超級鏈接傳來的參數(shù),通過 ShangpinModel 類根據(jù)參數(shù)從數(shù)據(jù)庫中查詢關于該商品的相關信息。系統(tǒng)將查詢結果注入到模板文件 中,并將調用該文件顯示商品的具體信息。商品具體信息頁