第一題是四個題目中,題目設計比較完整,而且附的版型檔案及CSS也是最不需要去改動的,甚至一些前端的動態效果的Javascript都先寫好了,所以在解題上,就只要專注在後端的管理功能及前端的資料顯示即可。

第一題也幾乎是唯一可以單純使用傳統PHP+MySQL就可以一路順順的解完的題目,因此老師當時還有建議直接安裝舊版的PHP,然後用DreamWeaver拉一拉就可以了,聽說之前的幾次檢定,大多也都是抽中第一題的考生可以做完題目,並且也是透過DreamWeaver來完成的;不過我個人是覺得,為了考證照去使用市場上已經不太使用的解題方式,那麼這張證照考到了又能代表什麼?所以很慶幸的是,這次參加考試的十五位同學,最終大家都還是使用Notepad++或PsPad之類的純文字軟體來進行解題。

第一題主要測試的重點是資料庫的新增/修改/刪除的功能,以及圖片上傳和分頁的功能,雖然要求的動作項目很多,但都是基於CRUD(Create,Read,Update,Delete)而來,因此,九個後台的功能項目中,有五個功能項目是可以用同一套語法來處理的,而真正會花到時間去單獨處理的,只有選單管理的功能而已,因為選單管理還有次選單的部份,而題目中的次選單功能設計的不是很好,只是為了符合題目要求,要另外花時間去處理。

在檔案結構上,除了素材附的四個檔案外,我只另外新增了三個檔案來處理所有的功能;

api.php-所有實際對資料庫進行請求的程式碼都在這個檔案中處理,以switch case的方式來整合多個功能項目。

內容幾乎都是PHP和SQL語法 ,只負責接收和回傳資料,很少處理顯示的部份

view.php-所有利用原本附的彈出視窗進行的新增功能的畫面元件都放在這個檔案中,包括圖片更換的功能也是集中在這個檔案,一樣是以switch case的方式來整合。

main.php-和view.php很類似,只是這個檔案是用來顯示後台管理頁面中的各個功能項目的畫面,只有包含讀取資料的Sql語法,大多數內容還是以HTML為主。

所有的顯示語法都集中在一個檔案中,利用switch case來做切換顯示

另外,由於素材提供的版型檔案都各自有一個目錄,第一題雖然沒影響,但後面幾題會去動到CSS時就很麻煩,所以我會在考試一開始時,花個幾分鐘把CSS和JS另外拉出來放在對應的目錄,然後再去修改版型檔案及CSS檔中的相關路徑,這樣如果有需要改css時就不需要每個目錄都開起來改了。

我的解法讓我在檔案管理上會比較輕鬆,就算是同質性的功能要複製貼上也是在同一個檔案內複製貼上,所以我幾乎可以在兩小時內處理完第一題的所有畫面元素並準備好資料表。

  在資料表的設計上,有同學提出了一個神奇的解決方案,就是把所有解題會用到的欄位都開在同一張table上,這樣就只需要專注在處理一張表就好了,這理論上是行得通的,但是實際執行上,會需要在SQL語法上加入一些額外的判斷才能確保沒有撈錯資料,我不認為對程式及資料庫新手來說,這會是個好辦法,所以我後來是自己做了一些調整,把功能相同的五個項目的資料表欄位開一樣的,比如校園映象只有圖片上傳沒有文字描述,而動態廣告只有文字沒有圖片,我資料表都開成是有檔案和文字的欄位,我只需要在新增和更新資料時,判斷一下欄位是否空值,再決定怎麼處理就好了,這樣我在SQL語法上只需要代入變數,就可以一支程式給五個項目去使用了,這比起在那複製五次然後再去改欄位名稱來說還是快很多的。

利用相同結構的資料表設計,來簡化程式撰寫時在SQL語法上的調整

然後說一下選單的部份,第一題和第四題都有針對選單的動作要求,老師的解法是分成兩張表,一張負責主選單,一張負責子選單,但這個做法在第四題需要額外去撈取每個分類的產品數時會遇到多表查詢的困難,最後老師還用上了子查詢,但我覺得這對同學來說是真的有難到,針對解題的部份,我是只用了一張表,然後多了一個’parent’的欄位,parent=0時就是主選單,parent=x時就是次選單,而x就是其上層的主選單,這樣我只需要操作一張表就可以了,簡單許多。

只用一張資料表來同時處理主選單及次選單

最後是版型檔案的部份,第一題的版型檔案是最完整的,連Javascript的部份都有附上,只要資料叫出來放在對應的地方就可以了,不過要求完美的人一定會發現這幾支js都有點小bug,如果時間夠,稍微調整一下就可以了,比如選單的js在一開始時不會先自動隱藏子選單,校園映象區的圖片換頁張數計算有問題,新聞的彈出詳細內容的javascript冒泡機制沒有處理好,動畫輪播的JS程式碼區段放錯位置等,如果解題時間有多個十分鐘的話,可以把這些小BUG修整一下。

最後修改日期: 2018-03-24

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。