Your SlideShare is downloading. ×
0
CodeIgniter             PHP Framework 2.0.X                Appleboy (Bo-Yi Wu)                    2011.04.162011.04.17    ...
內容皆採用 創用 CC 姓名標示 - 相    同方式分享 3.0 台灣 授權條款2011.04.17                2
感謝 ●   OSSF 自由軟體鑄造場 工作仿 ●   KaLUG 社群 ●   現場所有工作人員或聽眾2011.04.17              3
今天上課如果有任何問題 麻煩請舉手直接打斷講課過程因為您的問題或許是大家的共同問題2011.04.17     4
這份投影片適合 PHP 初學者   及尚未使用過 Framework 有幫助( 熟悉 MVC 的長輩們就不用聽這些了 )2011.04.17           5
今天來推廣 CodeIgniter PHP Framework    教大家如何快速開發網站  不必一個人辛苦默默重無寫到有2011.04.17                    6
Who Am IBo-Yi Wu (appleboy)   CodeIgniter 台灣繁體中文手冊翻譯   CodeIgniter 台灣繁體中文網站及討論區   CodeIgniter PHP Plurk API (github)   Cod...
尚未使用 Framework 的設計模式2011.04.17                 8
Evolution of Web Development               最新消息               最新消息      News.php               關於我們               關於我們    ...
Evolution of Web Development                                  新增新聞                                  新增新聞                  ...
$action = (isset($_GET[mode])) ? $_GET[mode] : add;switch($action){    case add:      echo add news;      $sql = “insert i...
一個模組 一個檔案 ●   SQL 語法 , CSS html, PHP 全部寫在同一檔案      ●      維護困難      ●      擴充性差      ●      程式雜亂      ●      無法交接      ●  ...
Why use PHP Framework?2011.04.17           13
為了加快網站開發速度及維護       模組化套件 , 方便閱讀程式碼       所以 PHP Framework 誕生2011.04.17                   14
Public Web Framework2011.04.17                          15
Why Choose CodeIgniter?2011.04.17                      16
Why Choose CodeIgniter ?1.    Small ( 非常小 )2.    Fast ( 非常快速,想用什麼就 load 什麼 )3.    Simple ( 程式架構容易 )4.    High Performance ...
What is CodeIgniter ?Open Source Web Application FrameworkMVC (Model View Controller) Architecture2011.04.17              ...
CodeIgniter 版本演進 ●   Version 1.7.1 Release: 2009.02.10 ●   Version 1.7.2 Release: 2009.11.11 ●   Version 1.7.3 Security pa...
MVC Architecture             Database                    LAYOUT             MODEL                       View              ...
MVC              View (views/product.php)                <html>      View      <body>                <p>Product Count:<?=$...
Application Flow Of CodeIgniter             CodeIgniter Plugin 已經在 2.0.X 被移除2011.04.17                                    ...
How to install CodeIgniter ?2011.04.17                         23
System Requirement 系統需求 ●   System      ●      Windows, Linux(Fedora, Ubuntu), FreeBSD ●   PHP      ●      Version 5.1.6 (...
以最短時間內安裝完成 ●   Windows + Appserv ( 推薦 ) ●   FreeBSD + Ports (www/codeigniter-devel) ●   Ubuntu + apt ( 完成 AMP 架構 )2011.04....
以最快速度安裝好 CodeIgniter 環境(Windows + Appserv + CodeIgniter 2.0) 2011.04.17                        26
Windows 環境安裝步驟 ●   請先準備好 Windows OS (XP, Win 7) ●   下載 CodeIgniter 2.0.X 安裝檔      ●      請參考 http://www.codeigniter.org.tw...
請大家先安裝好 CodeIgniter 環境2011.04.17                  28
完成畫面2011.04.17          29
CodeIgniter 目錄架構 ●   application/      ●      專案目錄 ( 存放所有前端後端程式碼 ) ●   system/      ●      CodeIgniter 核心目錄 ( 不需要更動 ) ●   ...
根目錄 Index.php 設定 ●   $system_path : 系統核心目錄設定 ●   $application_folder : 專案目錄設定 ●   如果多專案,可以將核心目錄共用2011.04.17               ...
專案目錄 application ●   application      ●      Cache ( 網站快取檔案 )      ●      Config ( 網站設定檔 : 資料庫 ....)      ●      Controlle...
CodeIgniter URL ●   example.com/index.php/news/show/article_id      ●      news 代表 Controller      ●      show 代表 Controll...
移除 index.php 檔案 ●   mod_rewrite 功能      ●      利用 .htaccess 移除 URL 所包含的 index.php2011.04.17                               ...
任意副檔名 ●   CodeIgniter/index.php/welcome/index ●   可以在 index 後面任意加上副檔名 ●   範例 :      ●      codeIgniter/index.php/welcome/i...
Controllers ●   example.com/index.php/blog/ ●   直接找到 application/controllers/blog.php     <?php     class Blog extends CI_...
Controller Functions ●    example.com/index.php/blog/index ●    example.com/index.php/blog/comments     <?php     class Bl...
類別建構子      <?php      class Blog extends CI_Controller {             public function __construct()             {          ...
Default Controller ●   example.com/index.php/welcome/index ●   example.com/ ●   修改設定檔      ●      application/config/route...
作業 ●   請新增 Blog Controller      ●      裏面包含兩個 method      ●      Index and person ●   Index method      ●      傳入自己的 ID 比如...
Views ●   檔案放置 application/views/ ●   任意新增檔案 blogview.php         <html>         <head>         <title>My Blog</title>    ...
如何載入 View ●   $this->load->view(name); ●   $this->load->view(folder_name/file_name);     <?php     class Blog extends CI_C...
新增動態資料到 View ●   $this->load->view(name, $data); ●   $data 陣列格式如下      $data = array(               title => My Title,    ...
Views 接受 $data 顯示資料 ●   顯示格式如下      <html>      <head>      <title><?php echo $title;?></title>      </head>      <body>  ...
顯示迴圈 ●   Controller 程式       <?php       class Blog extends CI_Controller {         function index()         {            ...
<html><head>   <title><?php echo $title;?></title></head><body>   <h1><?php echo $heading;?></h1>      <h3>My Todo List</h...
將 views 存到變數 ●   用途 : 常常用在 AJAX (demo) ●   $string = $this->load->view(myfile, $data, TRUE); ●   將第 3 個參數設定為 true ●   範例如下...
作業 ●   將 blog 的 person 此 method 所有 html 變成     用 $this->load->view 方式顯示 ●   產生陣列顯示在 view 如下      ●      CodeIgniter 非常好玩  ...
Library and helper ●   載入補助函數      ●      $this->load->helper(url); ●   載入多個補助函數      ●      $this->load->helper( array(ur...
Input Library ●   POST, COOKIE, 或 SERVER 資料      ●      $this->input->post()      ●      $this->input->cookie()      ●    ...
作業 ●   將 person 資料填入之後送出到 add_person     此 method ,並且將三欄位資料顯示於畫面2011.04.17                           51
資料庫模型 (Models) ●   修改 application/config/database.php      ●      $db[default][hostname] = localhost;      ●      $db[defa...
Model 介紹 ●   application/models/blog_model.php      class Blog_model extends CI_Model {             function __construct()...
簡單 model 寫法   class Blog_model extends CI_Model {       function __construct()       {         // 呼叫模型 (Model) 的建構函數      ...
載入 Model ●   請先務必載入 database 才可使用 model      ●      $this->load->database(); ●   $this->load->model(blog_model);      ●   ...
快速入門 ●   $query = $this->db->query("YOUR QUERY");      ●      $query = $this->db->query(SELECT name, title,             em...
Database Active Record ●   查詢資料 (Selecting) ●   新增資料 (Inserting) ●   更新資料 (Updating) ●   刪除資料 (Deleting)2011.04.17        ...
新增資料 Insert$data = array(   title => my title ,   name => my name ,   date => 2011.04.16);$this->db->insert(table_name, $d...
作業 ●   請新增資料庫 blog ●   設定 application/config/database.php 資訊 ●   新增資料表 blog_author      ●      author_id, authod_name, aut...
查詢資料 Selecting ●   $query = $this->db->get(table_name);      ●      產生 :SELECT * FROM mytable ●   $query = $this->db->get(...
●   利用 select + get 查詢      ●      $this->db->select(title, content, date);      ●      $query = $this->db->get(mytable); ...
查詢 Result 回傳值 ●   多筆資料 ( 常用 )      ●      result()      ●      result_array() ●   單筆資料      ●      row()      ●      row_a...
多筆資料輸出 ( 物件方式 )   $query = $this->db->query("YOUR QUERY");   if ($query->num_rows() > 0)   {       foreach ($query->result...
多筆資料輸出 ( 陣列方式 )   $query = $this->db->query("YOUR QUERY");   if ($query->num_rows() > 0)   {       foreach ($query->result...
單筆資料輸出 ( 物件方式 )    $query = $this->db->query("YOUR QUERY");    if ($query->num_rows() > 0)    {        $row = $query->row(...
單筆資料輸出 ( 陣列方式 )    $query = $this->db->query("YOUR QUERY");    if ($query->num_rows() > 0)    {        $row = $query->row_...
作業 ●   將資料表 blog_author 所以資料顯示出來 ●   新增 blog_model get_all_data method      ●      將所有資料回傳給 blog controller      ●      將資...
更新資料 (Updating)   $data = array(               title => $title,               name => $name,               date => $date  ...
作業 ●   在 person 顯示畫面加入”編輯”連結 ●   點選之後會顯示該筆資料 ●   修改完成之後,按下儲存可以覆蓋該筆資料2011.04.17                   69
刪除資料 (Deleting) ●   $this->db->where(id, $id); ●   $this->db->delete(mytable);      ●      產生 : DELETE FROM mytable WHERE ...
作業 ●   在 person 顯示畫面加入”刪除”連結 ●   點選該連結會刪除該筆資料,並且返回 person     顯示畫面2011.04.17                      71
join 兩表格   $this->db->select(*);   $this->db->from(blogs);   $this->db->join(comments, comments.id = blogs.id, left);   $q...
期末作業 ●   實做部落格發文系統      ●      利用上面 person 的實作當作部落格作者      ●      發表文章時,可以下拉選擇作者 person      ●      可以新增刪除修改顯示文章          ...
今天課程就到這裡             如果有任何問題都可以發問             大家辛苦了 , 其末作業要交喔2011.04.17                     74
Thank You2011.04.17               75
Upcoming SlideShare
Loading in...5
×

CodeIgniter 2.0.X

16,320

Published on

OSSF 自由軟體鑄造場工作仿舉辦 CodeIgniter 2.0.X 講課上課投影片

Published in: Technology
0 Comments
10 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
16,320
On Slideshare
0
From Embeds
0
Number of Embeds
22
Actions
Shares
0
Downloads
237
Comments
0
Likes
10
Embeds 0
No embeds

No notes for slide

Transcript of "CodeIgniter 2.0.X"

  1. 1. CodeIgniter PHP Framework 2.0.X Appleboy (Bo-Yi Wu) 2011.04.162011.04.17 1
  2. 2. 內容皆採用 創用 CC 姓名標示 - 相 同方式分享 3.0 台灣 授權條款2011.04.17 2
  3. 3. 感謝 ● OSSF 自由軟體鑄造場 工作仿 ● KaLUG 社群 ● 現場所有工作人員或聽眾2011.04.17 3
  4. 4. 今天上課如果有任何問題 麻煩請舉手直接打斷講課過程因為您的問題或許是大家的共同問題2011.04.17 4
  5. 5. 這份投影片適合 PHP 初學者 及尚未使用過 Framework 有幫助( 熟悉 MVC 的長輩們就不用聽這些了 )2011.04.17 5
  6. 6. 今天來推廣 CodeIgniter PHP Framework 教大家如何快速開發網站 不必一個人辛苦默默重無寫到有2011.04.17 6
  7. 7. Who Am IBo-Yi Wu (appleboy) CodeIgniter 台灣繁體中文手冊翻譯 CodeIgniter 台灣繁體中文網站及討論區 CodeIgniter PHP Plurk API (github) CodeIgniter Google Short URL API (github)Contact appleboy.tw At gmail.com http://plurk.com/appleboy46 http://blog.wu-boy.comNow 正文科技有限公司 (Software Department)- Linux Kernel Driver, Soho Router Integration- Android G-Sensor Driver2011.04.17 7
  8. 8. 尚未使用 Framework 的設計模式2011.04.17 8
  9. 9. Evolution of Web Development 最新消息 最新消息 News.php 關於我們 關於我們 About.php 公司網站 公司網站 產品資訊 產品資訊 Product.php 聯絡我們 聯絡我們 Contact.php2011.04.17 9
  10. 10. Evolution of Web Development 新增新聞 新增新聞 Add Delete 刪除新聞 刪除新聞 MySQL News.php Edit 修改新聞 修改新聞http://xxxx.com.tw/news.php?mode=[add|delete|edit]&news_id=xxxx 2011.04.17 10
  11. 11. $action = (isset($_GET[mode])) ? $_GET[mode] : add;switch($action){ case add: echo add news; $sql = “insert into xxxx values(aa, bb)”; case edit: echo edit news; $sql = “update xxx set title = title name where id = 1”; case delete: echo delete news; $sql = “delete xxx where id = 1”;}2011.04.17 11
  12. 12. 一個模組 一個檔案 ● SQL 語法 , CSS html, PHP 全部寫在同一檔案 ● 維護困難 ● 擴充性差 ● 程式雜亂 ● 無法交接 ● 系統漏洞 SQL Injection ● 開發速度慢 ● 後輩愈看愈不爽,砍掉重練?太難維護 – 後後輩更不爽,又砍掉? ● …..........................2011.04.17 12
  13. 13. Why use PHP Framework?2011.04.17 13
  14. 14. 為了加快網站開發速度及維護 模組化套件 , 方便閱讀程式碼 所以 PHP Framework 誕生2011.04.17 14
  15. 15. Public Web Framework2011.04.17 15
  16. 16. Why Choose CodeIgniter?2011.04.17 16
  17. 17. Why Choose CodeIgniter ?1. Small ( 非常小 )2. Fast ( 非常快速,想用什麼就 load 什麼 )3. Simple ( 程式架構容易 )4. High Performance (CI vs ZF vs CakePHP)5. Nearly Zero Configuration ( 五分鐘內搞定 )6. Cleaner Code ( 方便學習擴充 Framework)7. 由我本人親自支援 ( 歡迎討論區留言 )2011.04.17 17
  18. 18. What is CodeIgniter ?Open Source Web Application FrameworkMVC (Model View Controller) Architecture2011.04.17 18
  19. 19. CodeIgniter 版本演進 ● Version 1.7.1 Release: 2009.02.10 ● Version 1.7.2 Release: 2009.11.11 ● Version 1.7.3 Security patch ● Version 2.0.0 Release: 2011.01.28 2 month ● Version 2.0.1 Release: 2011.03.15 1 month ● Version 2.0.2 Release: 2011.04.07 Thanks for CodeIgniter Reactor2011.04.17 19
  20. 20. MVC Architecture Database LAYOUT MODEL View Controller ROUTES WEB SERVER Client BROWSER2011.04.17 20
  21. 21. MVC View (views/product.php) <html> View <body> <p>Product Count:<?=$count?></p> </body> </html> Controller (controllers/product.php) function showProduct($id) { $this->load->model(“product”); Controller $count = $this->product->getCount($id); $data[‘count’] = $count; $this->load->view(“product”, $data); } Model (controllers/product.php) function getCount($id) { $this->db->where(“id”, $id); $this->db->from(“my_product”); Model $query = $this->db->get(); return $->num_rows(); }2011.04.17 21
  22. 22. Application Flow Of CodeIgniter CodeIgniter Plugin 已經在 2.0.X 被移除2011.04.17 22
  23. 23. How to install CodeIgniter ?2011.04.17 23
  24. 24. System Requirement 系統需求 ● System ● Windows, Linux(Fedora, Ubuntu), FreeBSD ● PHP ● Version 5.1.6 (not support PHP 4 for 2.0.x 系列 ) ● 如果要支援 PHP 4 請使用 CI 1.7.x 系列 ● Database ● MySQL (4.1+), MySQLi, MS SQL, Postgres, Oracle, SQLite, 以及 ODBC2011.04.17 24
  25. 25. 以最短時間內安裝完成 ● Windows + Appserv ( 推薦 ) ● FreeBSD + Ports (www/codeigniter-devel) ● Ubuntu + apt ( 完成 AMP 架構 )2011.04.17 25
  26. 26. 以最快速度安裝好 CodeIgniter 環境(Windows + Appserv + CodeIgniter 2.0) 2011.04.17 26
  27. 27. Windows 環境安裝步驟 ● 請先準備好 Windows OS (XP, Win 7) ● 下載 CodeIgniter 2.0.X 安裝檔 ● 請參考 http://www.codeigniter.org.tw ● 解壓縮到 C 槽 Appserv/www 目錄 ● 重新命名目錄 ● CodeIgniter_2.0.2 → CodeIgniter ● 打開瀏覽器鍵入 ● http://localhost/CodeIgniter/2011.04.17 27
  28. 28. 請大家先安裝好 CodeIgniter 環境2011.04.17 28
  29. 29. 完成畫面2011.04.17 29
  30. 30. CodeIgniter 目錄架構 ● application/ ● 專案目錄 ( 存放所有前端後端程式碼 ) ● system/ ● CodeIgniter 核心目錄 ( 不需要更動 ) ● user_guide/ ● CodeIgniter Document ( 可以看中文版 ) ● index.php2011.04.17 30
  31. 31. 根目錄 Index.php 設定 ● $system_path : 系統核心目錄設定 ● $application_folder : 專案目錄設定 ● 如果多專案,可以將核心目錄共用2011.04.17 31
  32. 32. 專案目錄 application ● application ● Cache ( 網站快取檔案 ) ● Config ( 網站設定檔 : 資料庫 ....) ● Controllers ( 所有控制 ) ● Libraries ( 共用函式 ) ● Models ( 資料庫檔案 ) ● Views ( 前端 html, css)2011.04.17 32
  33. 33. CodeIgniter URL ● example.com/index.php/news/show/article_id ● news 代表 Controller ● show 代表 Controller 類別內的函式或 Method ● article_id 代表 ID 或任何參數傳入給 Method ● 範例 : 比對以前設計 example.com/news.php?mode=show&id=12011.04.17 33
  34. 34. 移除 index.php 檔案 ● mod_rewrite 功能 ● 利用 .htaccess 移除 URL 所包含的 index.php2011.04.17 34
  35. 35. 任意副檔名 ● CodeIgniter/index.php/welcome/index ● 可以在 index 後面任意加上副檔名 ● 範例 : ● codeIgniter/index.php/welcome/index.html ● codeIgniter/index.php/welcome/index.htm ● codeIgniter/index.php/welcome/index.py ● 修改 application/config/config.php ● $config[url_suffix] = .py;2011.04.17 35
  36. 36. Controllers ● example.com/index.php/blog/ ● 直接找到 application/controllers/blog.php <?php class Blog extends CI_Controller { public function index() { echo Hello World!; } } ?>2011.04.17 36
  37. 37. Controller Functions ● example.com/index.php/blog/index ● example.com/index.php/blog/comments <?php class Blog extends CI_Controller { public function index() { echo Hello World!; } public function comments() { echo Look at this!; } } ?>2011.04.17 37
  38. 38. 類別建構子 <?php class Blog extends CI_Controller { public function __construct() { parent::__construct(); // Your own constructor code $this->load->helper(url); $this->load->library(email); } } ?>2011.04.17 38
  39. 39. Default Controller ● example.com/index.php/welcome/index ● example.com/ ● 修改設定檔 ● application/config/routes.php ● $route[default_controller] = welcome;2011.04.17 39
  40. 40. 作業 ● 請新增 Blog Controller ● 裏面包含兩個 method ● Index and person ● Index method ● 傳入自己的 ID 比如是 appleboy ● 畫面會顯示 : Hi appleboy, 歡迎來到 CodeIgniter ● person method ● 產生 3 個 input text (name, company, phone) ● 帶入 3 個參數可以分別寫入上述欄位2011.04.17 40
  41. 41. Views ● 檔案放置 application/views/ ● 任意新增檔案 blogview.php <html> <head> <title>My Blog</title> </head> <body> <h1>Welcome to my Blog!</h1> </body> </html>2011.04.17 41
  42. 42. 如何載入 View ● $this->load->view(name); ● $this->load->view(folder_name/file_name); <?php class Blog extends CI_Controller { function index() { $this->load->view(blogview); } } ?> URL: example.com/index.php/blog/2011.04.17 42
  43. 43. 新增動態資料到 View ● $this->load->view(name, $data); ● $data 陣列格式如下 $data = array( title => My Title, heading => My Heading, message => My Message ); $this->load->view(blogview, $data);2011.04.17 43
  44. 44. Views 接受 $data 顯示資料 ● 顯示格式如下 <html> <head> <title><?php echo $title;?></title> </head> <body> <h1><?php echo $heading;?></h1> <hr> <div><?php echo $message;?></div> </body> </html>2011.04.17 44
  45. 45. 顯示迴圈 ● Controller 程式 <?php class Blog extends CI_Controller { function index() { $data[todo_list] = array(Clean House , Call Mom , Run Errands); $data[title] = "My Real Title"; $data[heading] = "My Real Heading"; $this->load->view(blogview, $data); } } ?>2011.04.17 45
  46. 46. <html><head> <title><?php echo $title;?></title></head><body> <h1><?php echo $heading;?></h1> <h3>My Todo List</h3> <ul> <?php foreach($todo_list as $item):?> <li><?php echo $item;?></li> <?php endforeach;?> </ul></body></html>2011.04.17 46
  47. 47. 將 views 存到變數 ● 用途 : 常常用在 AJAX (demo) ● $string = $this->load->view(myfile, $data, TRUE); ● 將第 3 個參數設定為 true ● 範例如下 $string = $this->load->view(blogview, $data, TRUE); echo $string;2011.04.17 47
  48. 48. 作業 ● 將 blog 的 person 此 method 所有 html 變成 用 $this->load->view 方式顯示 ● 產生陣列顯示在 view 如下 ● CodeIgniter 非常好玩 ● CodeIgniter 是開放軟體 ● CodeIgniter 非常快速 ● CodeIgniter 非常輕量2011.04.17 48
  49. 49. Library and helper ● 載入補助函數 ● $this->load->helper(url); ● 載入多個補助函數 ● $this->load->helper( array(url, email) ); ● 載入 Library 類別 ● $this->load->library(email); ● 載多個 Library 類別 ● $this->load->library(array(email, pagination)); ● 系統預設載入類別 (Ex: input ….);2011.04.17 49
  50. 50. Input Library ● POST, COOKIE, 或 SERVER 資料 ● $this->input->post() ● $this->input->cookie() ● $this->input->server() ● 取得 POST 資料 ● $this->input->post(title); ● $this->input->post(title, TRUE); – 第 2 參數使用 XSS 過濾器處理 POST 資料2011.04.17 50
  51. 51. 作業 ● 將 person 資料填入之後送出到 add_person 此 method ,並且將三欄位資料顯示於畫面2011.04.17 51
  52. 52. 資料庫模型 (Models) ● 修改 application/config/database.php ● $db[default][hostname] = localhost; ● $db[default][username] = XXXXXX; ● $db[default][password] = XXXXXX; ● $db[default][database] = XXXXXX; ● $db[default][dbdriver] = mysql;2011.04.17 52
  53. 53. Model 介紹 ● application/models/blog_model.php class Blog_model extends CI_Model { function __construct() { parent::__construct(); } }2011.04.17 53
  54. 54. 簡單 model 寫法 class Blog_model extends CI_Model { function __construct() { // 呼叫模型 (Model) 的建構函數 parent::__construct(); } function get_last_ten_entries() { …............ } function insert_entry() { …............... } }2011.04.17 54
  55. 55. 載入 Model ● 請先務必載入 database 才可使用 model ● $this->load->database(); ● $this->load->model(blog_model); ● 使用如下 – $this->blog_model->get_last_ten_entries(); – $this->blog_model->insert_entry();2011.04.17 55
  56. 56. 快速入門 ● $query = $this->db->query("YOUR QUERY"); ● $query = $this->db->query(SELECT name, title, email FROM my_table); foreach ($query->result() as $row) { echo $row->title; echo $row->name; echo $row->email; }2011.04.17 56
  57. 57. Database Active Record ● 查詢資料 (Selecting) ● 新增資料 (Inserting) ● 更新資料 (Updating) ● 刪除資料 (Deleting)2011.04.17 57
  58. 58. 新增資料 Insert$data = array( title => my title , name => my name , date => 2011.04.16);$this->db->insert(table_name, $data);產生 :INSERT INTO table_name (title, name, date)VALUES (my title, my name, 2011.04.16)2011.04.17 58
  59. 59. 作業 ● 請新增資料庫 blog ● 設定 application/config/database.php 資訊 ● 新增資料表 blog_author ● author_id, authod_name, author_company, author_phone ● 新增 blog_model and add_person method ● 利用 Controller 呼叫 blog model 新增資料2011.04.17 59
  60. 60. 查詢資料 Selecting ● $query = $this->db->get(table_name); ● 產生 :SELECT * FROM mytable ● $query = $this->db->get(mytable, 10, 20); ● 產生 :SELECT * FROM mytable LIMIT 20, 102011.04.17 60
  61. 61. ● 利用 select + get 查詢 ● $this->db->select(title, content, date); ● $query = $this->db->get(mytable); ● 利用 select + from + get 查詢 ● $this->db->select(title, content, date); ● $this->db->from(mytable); ● $query = $this->db->get(); – SELECT title, content, date FROM mytable ● 加上判斷條件 where ● $this->db->where(name, $name); ● $this->db->where(title, $title); ● $this->db->where(status, $status);2011.04.17 61
  62. 62. 查詢 Result 回傳值 ● 多筆資料 ( 常用 ) ● result() ● result_array() ● 單筆資料 ● row() ● row_array()2011.04.17 62
  63. 63. 多筆資料輸出 ( 物件方式 ) $query = $this->db->query("YOUR QUERY"); if ($query->num_rows() > 0) { foreach ($query->result() as $row) { echo $row->title; echo $row->name; echo $row->body; } }2011.04.17 63
  64. 64. 多筆資料輸出 ( 陣列方式 ) $query = $this->db->query("YOUR QUERY"); if ($query->num_rows() > 0) { foreach ($query->result_array() as $row) { echo $row[title]; echo $row[name]; echo $row[body]; } }2011.04.17 64
  65. 65. 單筆資料輸出 ( 物件方式 ) $query = $this->db->query("YOUR QUERY"); if ($query->num_rows() > 0) { $row = $query->row(); echo $row->title; echo $row->name; echo $row->body; }2011.04.17 65
  66. 66. 單筆資料輸出 ( 陣列方式 ) $query = $this->db->query("YOUR QUERY"); if ($query->num_rows() > 0) { $row = $query->row_array(); echo $row[title]; echo $row[name]; echo $row[body]; }2011.04.17 66
  67. 67. 作業 ● 將資料表 blog_author 所以資料顯示出來 ● 新增 blog_model get_all_data method ● 將所有資料回傳給 blog controller ● 將資料傳到 view 條列式 顯示出來2011.04.17 67
  68. 68. 更新資料 (Updating) $data = array( title => $title, name => $name, date => $date ); $this->db->where(id, $id); $this->db->update(mytable, $data); 產生 : UPDATE mytable SET title = {$title}, name = {$name}, date = {$date} WHERE id = $id2011.04.17 68
  69. 69. 作業 ● 在 person 顯示畫面加入”編輯”連結 ● 點選之後會顯示該筆資料 ● 修改完成之後,按下儲存可以覆蓋該筆資料2011.04.17 69
  70. 70. 刪除資料 (Deleting) ● $this->db->where(id, $id); ● $this->db->delete(mytable); ● 產生 : DELETE FROM mytable WHERE id = $id2011.04.17 70
  71. 71. 作業 ● 在 person 顯示畫面加入”刪除”連結 ● 點選該連結會刪除該筆資料,並且返回 person 顯示畫面2011.04.17 71
  72. 72. join 兩表格 $this->db->select(*); $this->db->from(blogs); $this->db->join(comments, comments.id = blogs.id, left); $query = $this->db->get(); 產生 :SELECT * FROM blogs LEFT JOIN comments ON comments.id = blogs.id2011.04.17 72
  73. 73. 期末作業 ● 實做部落格發文系統 ● 利用上面 person 的實作當作部落格作者 ● 發表文章時,可以下拉選擇作者 person ● 可以新增刪除修改顯示文章 – 請新增 blog_post 資料表 ● post_id, author_id, post_title, post_data, add_time, edit_time – 用 join 方式將作者顯示在畫面2011.04.17 73
  74. 74. 今天課程就到這裡 如果有任何問題都可以發問 大家辛苦了 , 其末作業要交喔2011.04.17 74
  75. 75. Thank You2011.04.17 75
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×