[DAY-071]網頁乙級術科第二題帶四及第三題一

上午請半天假去申請減免報名費的相關證明,順便睡飽點.

下午進教室時,老師正在講解問卷調查的部份,剩最後的統計結果查看的部份;

新增問卷後台

登入者可以進行投票

問卷調查的結果頁面

接著就是開始第三題的講解,第三題也是陷阱一堆的題目,加上CSS版本已經和題目所展示的落差頗大,做起來有點綁手綁腳的,但就難度來說,因為已經做了很多的刪減的,所以主要的功能就只有轉場動畫的製作及訂票系統而已;這邊老師有提到,先前有講過的功能會希望當成作業大家自己回家做,課堂的時間儘量用來針對沒說過的內容進行詳細的說明.

第三題從管理系統開始做

預告片海報管理後台




[DAY-070]網頁乙級術科第二題帶解三

今天繼續第二題的解題練習,第二題比較麻煩的地方在於文章的按讚部份,有點難度的可能是問卷調查的部份,其它的則只是花時間,尤其是在css的調整上,除了多練習,也沒有什麼別的方法了.

帳號管理的畫面

文章管理的畫面

人氣文章的畫面

我自己則是開始解第三題,第三題麻煩的地方除了題目的一些描述不是很清楚之外,再者就是版型檔案附的css和題目提供的示意思有滿大的落差,需要花點時間做調整,不然做出來的效果不只和題目不太一樣,自己看了也覺得礙眼,第三題完全沒有附js的檔案,但卻要求要做slide show 的轉場動畫,這部份看來只能硬記起來了,因為考試現場不能連網,無法查詢動畫效果及指令.




[DAY-066]網乙術科第二題帶解二

今天接續昨天,帶解第二題的最新文章部份,我則是自己在做問卷調查的部份,昨晚試做用一張資料表做問卷,雖然理論上可行,但因為題目有要求編號,一張資料表要處理編號比較麻煩,所以今天改成兩張資料表來做,不過功能很快做完,但是在調整視覺上花了不少時間,這部份應該是只能靠熟練來強化了.

因為做完了第二題,所以除了昨天的注意事項外,今天可以來紀錄一下自己的心得:

1.網站標題區算是最簡單的部份,只要套用PHP的日期相關函數就可以了

2.瀏灠人數的部份需要資料庫來紀錄,我原本的做法是在資料表中新增當天的日期,然後去更新每日的瀏灠人數再加總,不過這樣做需要去判斷是否存在當日日期的資料,而老師的做法是直接新增一筆當次瀏灠的日期紀錄,直接加總就可以了,這做法比較簡單,也較適合考試搶時間的做法.

3.主選單區-題目沒要求資料庫功能,所以主選單區直接html寫死就可以了,不過各連結所link的頁面我是用js的lo()函式來載入各所需要的頁面,好處是我只需要一個首頁的頁面就夠了.不需要每個選單再連結一頁也不需要include各個php檔案進來.

4.動態文字廣告區-送分題,直接字打上去用<marquee>包起來就好了

5.會員登入登出區-本題有不少需要判斷會員登入狀況的地方,因此這邊我是做了SESSION來紀錄會員登入與否,然後再套用到需要的地方,比如登入後顯示歡迎語句及登出按鈕

6.登入檢查,這邊我開始使用jQuery來處理,檢查和回傳資料,都以jQuery來處理,可以省不少功夫

7.註冊及忘記密碼功能,不算難,尤其以jQuery來處理前端檢查後,直接送後端php去新增及查詢資料,不需要另外處理跳頁.

8.主內容顯示區-這邊開始題目的描述不太清楚,在沒有特別的要求的狀況下,首頁的頁籤效果可以直接使用dreamweaver來完成,我自己是使用資料庫的方式來處理,包括頁籤的效果也是使用css和js搭配而成,資料撈取的部份則是以撈取各分類的最新一筆文章為主.

9.分類網誌-這邊也沒說要使用資料庫來做,我看另一個解題是直接寫死在html碼中,我自己則是使用資料表來做,當成是練習,這邊需要對導覽列做參數化,在點選各頁面時,同時送出參數,再由各分頁接收後顯示在導覽列中,而各分頁內的再導覽則是使用js來抓值後把文字加到導覽列去,一般導覽列應該會要求做link,但這邊沒有,那就算了,僅做顯示之用;分類網誌的文章內容我是使用jQuery來取回文章內容再顯示在區塊中.

10.頁尾版權區-也是送分題,把字打上去,年份改一下就好了,版型檔案已經把QRcode設好了.

11.建置最新文章區-題目沒有要求說要新增文章的功能,所以文章可以直接用phpmyadmin塞進資料庫,我是有做時間紀錄,因此我做最新文章是以新增的時間來排序,如果只為了考試,其實用文章序號來排序也可以;這邊需要針對登入狀況來判斷要不要顯示按讚,而按讚的功能則是使用版型檔案附的一支js函式來處理,資料庫的部份需要多加一張表來紀錄每次按讚的log,然後再去文章資料表做加一減一的計算;分頁的功能不算難,用最簡單的方式做出來就可以了.

12.人氣文章區-排序改成按讚數由多到少排序,其餘的功能和最新文章區差不多,利用彈出頁面來顯示詳細內容的功能則是利用jQuery來完成.

13.問卷調查-這裏的問卷調查功能比之前練習的要簡單一些,就只是多了一個判斷登入與否的動作,但是沒有要求是否一人一票.

14.後台管理頁面-這邊也沒要求要過濾管理者帳號,所以可以登入後到管理頁面應該就可以了,我是單獨再做一頁admin.php,然後也只是改了主選單的文字而已.

15.帳號管理-也算是送分題,新增會員的功能和註冊會員是一模一樣的,刪除功能也很簡單可以完成

16.最新文章管理-這裏只要求做分頁及顯示 / 刪除功能,可以很簡單的完成

17.問卷後台管理-這邊只有要求做新增問卷的功能,算是半送分題,增加更多選項的功能使用js來做很簡單,然後送出之後再分兩張資料表來分別寫入就完成了.

整體來說第二題會花比較多時間在CSS的調整,主要是因為沒空去研究原本附的CSS,所以大多數的樣式都是自己加上去的;功能的部份,我使用了大量的jQuery,但是為了預防萬一,所以第一次做的時候,每個php的回傳功能我都獨立一個檔案來做,其實有點浪費時間,我考慮第二次解題時,統一寫一支php程式來處理會使用到的callback,比如,取出文章標題,取出全部文章內容,取出文章第一行,查詢帳號是否重覆,查詢密碼等等,都合在一個php中,然後用jQuery去送參數並取回值即可.

 

 




[DAY-065]網乙術科第二題帶解一

今天開始上第二題的解題,不過我完全沒在聽,只有針對題目有模糊不清的地方,詢問一下老師的意見,其它時間我則是繼續自己的進度,今天己經做完大半功能剩下最後問卷調查,估計明天能完成。

關於第二題,我有問了一下班導,因為在研究題目的時候發現題目內容很不統一,題目的描述和示意圖也有出入,老師說這大概是因為原始的題目太多,經測試後發現大多數人無法在四小時內解完,所以後來刪減了內容,但是沒有去做好校對的工作,就變成這樣子了,畢竟網乙開辦五年來,只發出了不到二十張證照。

依我自己做了大部份的內容來看這題,在解題上大概有幾點要注意的:

1.原始題意和第一題其實很類似,整個網站的內容都要以資料庫的方式來控制,但這樣做下來會太鎖碎,所以簡化後,變成很多部份其實不用資料庫,做假的也符合題目要求。

2.我自己試著大多數功能都使用資料庫來製作,在時間上我是覺得還可以,就是要熟練,但是不夠熟練或對資料庫沒把握的同學,我還是建議在考試時能偷就偷,畢竟以時間內符合要求為主,實務上的做法是另一回事。

3.就原始素材的內容來看,很明顯的使用了不少ajax的技巧來製作,所附的jquery函式也直接使用了$.axja()來調用php的callback,因此能善用ajax的話,可以省下不少跳頁的處理及簡化不少php程碼

4.後面三題都有使用到session或cookie的地方,這部份只能請同學們自行再加強,既然考試的四題都會用到,那就早點熟悉它吧。




[DAY-061]網乙術科第一題帶解終

今天老師把第一題的前後台功能都做完了,到後面己經沒有什麼時間下來一個一個看問題了,第一題最麻煩的地方是選單管理和顯示的部份,關聯次選單的部份會比較亂一些,前台的部份在套js的部份可能需要點時間來理解,畢竟我們在js的部份實作比較少,兩位老師有關js的部份都只能算是介紹一下而已,整個js要學起來,要花的時間不輸給PHP。

我自己下午開始做第二題,發現第二題的題目說明非常不清楚,示意圖的東西和素材提供的內容也有些出入,真的令人頭大,但是在比對歷屆題目的過程中,其實我也有注意到每年的素材似乎都有一些變動,比如上一個版本使用的class名是mask,新版本改成了all,雖然是小小的改變,但這表示每年都有在維護對吧,那為什麼不順便把題目的說明也做個修改呢?

第一題我有90%的內容是使用PHP來解的,包括一些驗證的做法都是用PHP帶參數在各檔案間傳值來達成,但這樣的做法當檔案一多時就又亂了,而且URL的參數愈帶愈長也很礙眼,所以第二題開始我希望嘗試著把JS 和 AJAX的應用比例提高,今天小小的測試一下後感覺還不錯,而且也發現原本素材提供的js檔裏就有附一個ajax的函式在裏面,這表示原本的題目設計時就己經使用了ajax來解題了,不用白不用。




[DAY-060]網乙術科第一題帶解續

今天主要是繼續第一題的解題,老師的速度明顯加快,不過做法和我推測的差不多,就是把之前做過的內容複製一份來改,這樣速度才會快,不過我一整天精神都不是太好,不知道是不是被傳染了。

今天的進度幾乎己經做完八成了

到下課時己經講解到管理者帳號管理了,所以明天主要在選單管理和前端的所有顯示。

 




[DAY-059]網乙術科第一題帶解

老師流感還沒有完全好,拖著病體來上課,精神可嘉,
今天正式上網頁乙級的術科解題,原本老師希望大家先當作業先練習一遍,但看起來只有我做完,所以今天老師的講解我在理解上就快很多了。
老師的解法主要是利用include的方式把php檔案整合進後台或前端頁面,這方法雖然還是會有檔案過多的問題,但比起iframe,我覺得還算是比較好掌握的,而且一個檔案一個功能的做法,對於大多數同學來說也是比較好理解的做法。
程式碼的內容我打算等全部做完一次後再另外打包提供下載,網誌的部份只說一下解題的重要觀念及一些可以利用的小技巧,重要的是要各自找到自己能掌握的解法及步驟,並且熟練它就可以了,照著老師或其他同學的做法做,就算背得下來,臨場時有個環境上的變化或出了點錯卻找不到問題,那就完了。

基本觀念的部份,老師把功能拆成不同的檔案來處理,相當於是一個一個小函式,需要的時候再inlude進來使用

完成後台的增刪修之後,前端的部份就看需要把資料叫出來,再放到需要的位置中去,可以利用SESSION或include的方式來達成

第一題雖然後台的部份有九個項目要做,但並不算難,同樣的動作一直重覆而己,所以到最後就只能說是在考驗打字速度和整合檔案的能力了。




[DAY-052]json解碼/動態更新資料/ajax機制

(因為在wordpress上放程式碼太麻煩,決定改成截圖為主,比較短的程式碼片段再以HTML的方式放上來)

今天老師講解了php的json解碼及編碼方式,這是新版的php加入的函式,先前在上java手機班時,那時老師說他是自己寫一支程式來做解碼及編碼的工作。

JSON解碼及編碼的函式

接著老師要大家以先前做的圖片資料庫為基礎,做一個新頁面,但副檔名是html,然後用jQuery把之前用來顯示圖片用的PHP檔的html內容併入到html檔中,這樣可以做到不跳頁就執行PHP並取回成果,算是ajax的一種應用。

html頁面只有一個用來放成果的區塊

畫面

PHP檔案的內容

PHP檔案的內容後來加入了搜尋的功能,在html那輸入關鍵字後,由jQuery傳遞參數過來,執行完畢後的頁面會再回傳給jQuery,最後再由jQuery把結果放到區塊中。

下午時間老師要大家做一個練習,利用先前做過的會員登入及會員管理頁面,同樣的做一個HTML檔,分別執行會員管理的新增/修改/刪除作業,但是過程中不跳頁,都在html檔案中完成。

這個練習有同學是重新寫一個php檔來做所有的事,只是結果由jQuery來接收回html,我則是真的拿之前的php檔來練習先前的php檔分成三個不同的php檔案做三件不同的事,因此我需要把三個不同的檔案都併入html檔,然後再寫幾支js程式來分別處理新增/修改/刪除的作業。

老師要求在設定密碼時需要檢查密碼的正確性,密碼正確才出現按鈕

html檔的重點在jQuery的應用,所以寫了一堆js函式來因應

會員列表的php頁面,在這裏需要加上呼叫jQuery的函式來處理相關的作業

在html頁面呼叫會員管理的php頁面

修改會員的php檔內容

這邊有個觀念就是jQuery併入html檔的內容就成為了html檔案本身的一部份,因此要當成是在html本頁的內容來進行相關的操作,許多同學在這裏會卡住,把js的函式寫在php檔案裏,這樣會造成錯誤或沒有效果,

課程最後老師給了大家一串很長的json字串做解碼的練習。

 

 




[DAY-051]Jquery / 即時表單更新 /表單驗證 / 聖誕交換禮物

因為接下來估計會花一個半月的時間講解乙級術科的題目,所以老師說要利用兩三天的時間快速的帶過Jquery及Ajax,然後再看術科講解的狀況來決定要不要多講一些其它的技術內容。

今天先是教大家如何下載Jquery及匯入到網頁中,接著是講解JSON這個資料傳格式;

基本格式為 – {var1:value,var2:value};

陣列格式為 – {var1:[value1,value2,value3,value4,……]};

可以混合使用 – {var1:value,var2:value,var3:[value1,value2,value3,value4,……]};

如果外部變數己經被指定某值時,可以只放變數 :

var a=111;

var b=”john”;

此時json格式可以只放變數即可 – {a,b};

eval(“str”) – 用來”執行”字串中的運算式,在老師的範例中是拿來解析JSON格式,把json變成陣列來使用

比如 open_json={a01:1111,b02:’aaaa’};

open_json_1=eval(“(“+open_json+”)”);

open_json_1.a01 => 1111;

再來是講解Jquery的傳值方式,這部份就有點神奇了,我想大家多少都卡了一下,需要點時間消化;

$.post(傳送對象,傳送內容,回傳值);

其中,回傳值通常會是傳送對象處理完的結果,而傳送對像通常會是一個PHP之類的檔案,可以用來接收及處理傳送內容,具體的範例程式如下:

$.post("ajax_test.php" , {name,password} , function(ajax_result){
document.getElementById('block').innerHTML=ajax_result;
});

第三個參數通常使用匿名函式來處理,也有人叫”閉包”,這個做法是為了可以在取得回傳值後,針對回傳值再做處理。

中午時間班導請大家吃PIZZA,同時辦了一個0元交換禮物趴。

聖誔PIZZA及交換禮物趴

下午老師先要大家利用以前的一個games資料表來複習一下sql及php,先把資料都顯示在網頁上,但是不加上<form></form>

利用舊資料表把資料顯示出來

接著是增加一個onchange時要執行函式pizza() (因為剛吃完pizza),這是用來當任何一個欄位的內容有改變時要進行的動作,這裏老師花了不少時間帶大家利用alert()來確認函式的執行;

接著是在每個<input>欄位裏加上onchange事件及函式,這裏會需要帶入PHP語法把資料庫select出來的資料流水號當成參數帶入pizza函式中;

比如:onchange=”pizza(1,<?php echo $row[‘g_no’] ;?>)”

然後是把欄位的ID格式做修改,以欄位代號加上資料序號來組成一個獨有的ID,以利後續程式取用;

比如:id=”g_1_<?php echo $row[‘g_no’] ;?>”

最後是JS函式的本體,這裏需要先確認有在檔案中匯入Jquery函式庫,然後在函式中帶入Jquery語法:

HTML及PHP的部份如下:

重頭戲在ajtest.php這個檔案,當我們在任何一個欄位進行修改後,pizza()函式會取得欄位的代碼,欄位的id及欄位被修改後的值,並將這個三個值以POST的方式傳送給ajtest.php這個檔案,
所以接下來就是要在ajtest.php中接收值,並處理,我們要處理的事情就把變動後的值UPDATE進資料庫中,這樣就完成了即時的資料更新,同時又不需要重新載入一次原本的頁面。

在課堂中,後來發現input 中的value值在取得後都是字串型態,這部份在驗證上要另外處理,我後來找到了ctype_digit()這個函式來處理,其它的處理方式可以使用正規表示式,或是把字串當成陣列,一個字元一個字元檢測,只要偵測到不是數字的,就顯示不符合,提供參考程式片段如下:




[DAY-047]Javascript-動態增加元件/自訂alert

今天先是講解了如何動態的增加輸入欄位,並且可以新增資料到資料庫去,這是滿實用的功能。

動態新增欄位並新增資料到資料庫

接著是關於innerHTML的一些實務上的用法,算是在為之後jquery打點基礎:

利用alert來寫入資料到特定div中

點擊下方圖片後,置入到上方的區塊中

自訂一個alert的視窗並可以輸入文字到特定的區塊中

自訂alert的範例中需要自行增加div和css去做版面的控制

回家作業是延伸上面的範例,做一個完整的alert功能出來,但是要以自訂的div的方式來呈現。




[DAY-042]javascript基礎/DOM操作

今天開始教Javascript,從最基礎的alert開始說起,然後是文件模型操作,也就是網頁內容的存取和修改,最後則是整合資料庫做一個燈箱效果出來

一個和先前CSS modal image類似的效果

整合資料庫上傳相片後再結合頁面顯示圖片,最後套上modal image效果