聽韓順平聊PHP初學者如何變身大牛(三)?

     前面的兩個階段,重點還是在打基礎,到此我們還不能做出什麼像樣的網站,對於編程來說,學以致用是最好的。我們需要一個項目來把前面學習到的知識實際運用一下了。在教學過程中,同學們經常問這樣一個問題:韓老師,我們是把知識點放在第一位,還是把做項目放在第一位呢? 我的回答很簡單,兩者並重。

     舉一個例子來說一下吧: 2010年我在重慶安博授課,重慶文理學院就派了兩名老師來聽課,主要的目的就是希望把培訓機構的授課模式引入到高校,這個當然是好事,其中一位老師對PHP技術非常感興趣,自己還創建一個自己的視頻學習分享網站,類似於一個網上教育點播網站,收集了網上很多的教學視頻,有關於數學、語文、英語、考研、出國培訓和編程類的教學視頻,總之很多。他就談到當時他的網站已經做好了,但是他擔心視頻教程直接被別的網站盜鏈,於是就找了一個人來做防盜鏈,結果被收了2000元,後來聽完我的Http協議中的referer 這個知識點後,才發防盜鏈沒有想象中困難,如果早點知道這個知識點,就不會被蒙了。所以有時候,在做項目的一個知識點會幫你大忙的,所以,我說,技術就是一層窗戶紙,捅破了,你感覺沒有什麼,不就是這麼簡單嗎?可是如果你不知道,就感覺很神祕,因此你瞭解的知識點越多越底層,就可以讓你的項目更有技術含量。

     反過來,如果我們知道很多知識點,但是不會把知識點靈活的運用到項目中,就成了<<天龍八部>> 中的段譽,空有無窮的內力,就是不知道如何運用。所以,學會做項目,做規範的項目也是非常重要的. 有一位網上學員一封郵件是這樣寫的:

**************************************************************************

發件人: qwedf7777

發送時間 2011-11-09 14:54

收件人: hanshunping

主題:我想學PHP

老師您好:

我是一名PHP愛好者.我的PHP技術都是在網上看你的視頻學的。我現在開發了一款專門計算鋁合金下料尺寸的計算軟件,這種軟件適用任何款式鋁合金計算。

我認爲我的代碼寫的非常漂亮,因爲鋁合金有上千萬種,而且每種鋁合金計算時所用到的參數不一樣,並且每種鋁合金所作出來的成品樣式也不一樣,所用到的公式也完全不同。我能寫這樣的東西我很高興。在這裏我要向你表示深深的感謝。

我雖然有了一點點成就,但我覺得我學的知識還遠遠不夠。我還想學PHP 技術。希望以後有問題韓老師可以指導!

此致

你的網上學生王宏

***************************************************************************

發件人:李縣東

發送時間:2011-05-15 10:38

收件人:  hanshunping

主題:感謝韓老師,您講的課很生動

韓老師您好,謝謝你能抽時間來讀我個封郵件,我是廣東五邑大學的一名計算機專業的學生,我周圍同學都在看你的視頻教程,因爲你講得實在是太好了,淺顯易懂,生動傳神,我們都很喜歡你講的課。你的視頻教程中講到幾個項目都很有教學意義,在你的帶領下,我們進步很神速,非常感謝您,你是個非常優秀的老師!雖然我們不是清華的學生,但我們很是希望能夠跟着你學習,因爲你有豐富的教學和項目經驗,有你的幫助我們會進步得更快!對了,韓老師,我們也很渴望得到你講課的一些項目源代碼作參考學習!最後,再次感謝您!!

****************************************************************************

這兩位學員做的就比較好,能把學習到的知識用到一個項目中,這樣就會在不知不覺中提高對知識點的理解,同時對項目的開發能力也提高了,當然在找工作的時候,心裏就會有底氣。因此,我們第三個階段學習的重點就是Mysql數據庫編程和項目實戰.


第三階段:Mysql數據庫編程&中級項目階段

(1)    MySQL數據庫

     從目前看,任何一個有商業價值的項目或者網站,都離不開MySQL數據庫, 因此係統深入的掌握MySQL數據庫各種操作非常重要,重點是圍繞ddl/dql/dml/dcl/dtl學習。同時要學會在項目中如何設計出有商業價值的數據庫模型的技巧,並初步瞭解到MySQL的優化細節。作爲一個合格的PHP程序員,我覺得以下知識點是必須要掌握的:

      MySQL數據庫的三層結構、MySQL數據庫的安裝和配置、數據庫命令行的常見操作(啓動、連接、操作、關閉等)、SQL語句分類(ddl/dml/dcl/dql/dtl)、創建、查看、刪除、修改、備份和恢復數據庫、如何創建表及MySQL數據類型詳解、修改、刪除表操作、如何對數據表進行CRUD操作、select語句中使用orderby、合計函數(count/sum/avg/max/min)、select語句中使用group by 和having子句、時間日期常用的10個函數、字符串相關11個函數、數學函數10個、流程控制函數3個、其它函數4個、MySQL中文亂碼處理、PHP操作數據庫實例、MySQL表類型和存儲引擎(BDB/HEAP/ISAM/MERGE/MYISAM/InnoBDB)、如何選擇表的存儲引擎、事務的基本概念、事務和鎖、事務提交和回滾操作、PHP程序中如何使用事務、事務隔離級別、表的主鍵和外鍵、多表聯合查詢和笛卡爾集、自連接、單行子查詢和多行子查詢、蠕蟲複製創建海量表、合併查詢(union , union all,intersect , minus)、表的內連接和外連接(左外連接、右外連接和完全外連接)、維護數據的完整性-約束(not null、unique, primary key,foreign key,和check )、商店售貨系統表設計案例、索引(主鍵索引/唯一索引/全文索引/普通索引/複合索引)、索引優缺點分析、觸發器和存儲過程

(2)數據庫編程(mysql mysqli pdo)

      mysql擴展庫簡介、mysql擴展庫操作mysql數據庫程序、mysql_query()執行結果、釋放資源和連接、對mysql數據庫進行CRUD、mysqli擴展庫簡介、第一個mysqli擴展庫程序、$mysqli->query()執行結果、mysqli對數據庫進行CRUD操作、mysqli擴展庫增強--批量執行sql語句、mysqli擴展庫增強--事務控制、事務的acid、預處理 MySQLi_STMT、PDO的介紹和使用

(3)中級項目

     看十遍,不如自己實際動手做一個項目。項目經驗就是從一行行代碼中積累的,編程的能力也是通過攻克一個個程序bug提高的。中級階段項目是把前面學習過的知識點實際運用到項目中的最佳時機,也是檢驗自己學習成果的時候。當你通過熬夜點燈,網上查資料把項目最終完成時,經歷了項目從無到有,從有到完善時,你的編程能力,把控項目的能力在潛移默化中提高了,爲學習下一個階段 (PHP高級編程)打下紮實的基礎。我推薦幾個項目給大家,大家可以根據自己的實際情況選一個項目來做.

     BBS系統: 爲互聯網用戶提供互動和交流功能。

     網上在線支付: 爲互聯網客戶提供在線支付功能,可立即應用於項目中

     及時雨供求信息共享網: 及時雨供求信息網主要用來爲用戶提供信息服務,對於生活和工作中的各類 信息都應儘可能地全部包括在內,例如,公寓、求職、招聘、培訓、招商、房屋、車輛、出售、求購等信息。項目 發佈後,要實現能夠爲用戶生活、工作帶來極大地方便並提高企業知名度、爲企業產品宣傳節約大量成本的目標。 及時雨供求信息網的主要目標是提供強大的搜索功能,準確的信息定位描紅功能,付費信息的管理、免費信息的審 核和刪除功能。

     oa無紙辦公系統: oa無紙辦公系統是針對中小型企業內部自動化辦公管理的要求進行設計的,實現了 文件類信息的強大的管理能力;對員工基礎信息(人事消息)的管理功能等;個人辦公的信息自動化管理功能;發 佈會議信息,並對會議信息進行管理;對系統用戶進行管理;爲了加強數據保密性,爲每個用戶組設置權限級別。

     大網電子商城: 將電子商城給普通用戶提供如下功能:購買商品、用戶個人資料管理及訂單查詢 等功能。用戶在未進行登錄時,只可以查看商品的詳細信息及公告信息,登錄後可以執行購買商品操作、對商品進 行評論及管理個人資料。管理後臺實現: 商品信息、商品類別信息、用戶信息、訂單信息、公告信息及評論信息進 行管理,用戶可通過相應的功能按鈕,進入相應的頁面,對信息進行管理。


   如何檢驗自己的學習效果,看看下面的一些面試題 , 看看能完成多少? 如果能正確完成80%,說明這個階段學的還不錯。

       練習1: 簡述什麼是MVC模式

       練習2: 項目開發分哪幾個階段,分別是什麼,各自的內容包括什麼

       練習3: PHP設計模式常見的有哪五種,分別寫出一個案例說明

       練習4: 項目在整合的時候應該如何處理

       練習5: 什麼是數據庫的3NF

       練習6: 列舉web開發中的安全性問題

       練習7: Apache服務器如何配置虛擬主機,如何把自己的項目上線,如何申請域名和主機,讓自己的項目可以被所有人訪問.

       練習8: 如何定時備份Mysql數據庫,請簡述在windows和linux操作系統下的具體實現方案.

       練習9:Mysql數據庫設計題:

      有某個學生運動會比賽信息的數據庫,保存瞭如下的表:

      運動員sporter(運動員編號sporterid,運動員姓名name,運動員性別sex,所屬系號department)

      項目item(項目編號itemid,項目名稱itemname,項目比賽地點location)

      成績grade(運動員編號sporterid,項目編號itemid,積分mark)

      請用SQL語句完成如下功能:

      1. 建表,注意滿足如下要求:

      a) 定義各個表的主碼外碼約束

      b) 運動員的姓名和所屬系別不能爲空值。

      c) 積分要麼爲空值,要麼爲6,4,2,0, 分別代表第一,二,三名和其他名次的積分,注意名次可以有並列名次,後面的排名不往前提 升,例如,如果有兩個並列第一,則沒有第二名。

     --運動員

     --項目

     --成績

    2. 往表中插入數據:

   運動員(

  1001, 李明,男,計算機系

  1002,張三,男,數學系

  1003, 李四,男,計算機系

  1004, 王二,男,物理系

  1005, 李娜,女,心理系

  1006, 孫麗,女,數學系)

   insert into sporter values (1001,'李明','男','計算機系');

   insert into sporter values (1002,'張三','男','數學系');

   insert into sporter values (1003,'李四','男','計算機系');

   insert into sporter values (1004,'王二','男','物理系');

   insert into sporter values (1005,'李娜','女','心理系');

   insert into sporter values (1006,'孫麗','女','數學系');

項目(

  x001, 男子五千米,一操場

  x002,男子標槍,一操場

  x003, 男子跳遠,二操場

  x004, 女子跳高,二操場

  x005, 女子三千米,三操場)

   insert into item values ('x001','男子五千米','一操場');

   insert into item values ('x002','男子標槍','一操場');

   insert into item values ('x003','男子跳遠','二操場');

   insert into item values ('x004','女子跳高','二操場');

   insert into item values ('x005','女子三千米','三操場');

積分(  1001,  x001, 6

       1002,   x001, 4

       1003,  x001, 2

       1004,  x001, 0

       1001,  x003, 4

       1002,  x003, 6

       1004,  x003, 2

       1005,  x004, 6

       1006,  x004, 4)

   insert into grade values (1001,'x001',6);

   insert into grade values (1002,'x001',4);

   insert into grade values (1003,'x001',2);

   insert into grade values (1004,'x001',0);

   insert into grade values (1001,'x003',4);

   insert into grade values (1002,'x003',6);

   insert into grade values (1004,'x003',2);

   insert into grade values (1005,'x004',6);

   insert into grade values (1006,'x004',4);

   3. 完成如下查詢

   a) 求出目前總積分最高的系名,及其積分。

   b) 找出在一操場進行比賽的各項目名稱及其冠軍的姓名

   c) 找出參加了張三所參加的所有項目的其他同學的姓名

   4. 經查張三因爲使用了違禁藥品,其成績都記0分,請在數據庫中作出相應修改。

   5. 經組委會協商,需要刪除女子跳高比賽項目。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章