Đồ Án mô hình mvc trên web và ứng dụng

Thảo luận trong 'Xã Hội Học' bắt đầu bởi Thúy Viết Bài, 5/12/13.

  1. Thúy Viết Bài

    Thành viên vàng

    Bài viết:
    198,891
    Được thích:
    167
    Điểm thành tích:
    0
    Xu:
    0Xu
    [TABLE]
    [TR]
    [TD]LỜI NÓI ĐẤU
    Trong những năm gần đây, các ứng dụng web lớn liên tục được tạo ra, đánh dấu những bước phát triển nhảy vọt về công nghệ trong thế giới lập trình. Các nền tảng hỗ trợ lập trình cũng được xây dựng hàng loạt nhằm mục đích chính là cải thiện tốc độ thực thi và nâng cao tính bảo mật cho các ứng dụng web. Các nền tảng hỗ trợ lập trình ứng dụng (application framework) đều chứa đựng các kinh nghiệm của các nhà kiến trúc phần mềm sau nhiều năm chiêm nghiệm trong thế giới lập trình.
    Với nỗ lực làm giảm thời gian phát triển một ứng dụng web, bằng việc học hỏi và tiếp thu những ưu điểm của các mô hình tiên tiến hiện nay, các nhà phát triển đã xây dựng được một mô hình kiến trúc hỗ trợ lập trình các ứng dụng web được sử dụng phổ biến hiện nay không những trong ngôn ngữ PHP mà nó còn được sử dụng rất rộng rãi trong Java và các ngôn ngữ khác.
    Tiểu luận này sẽ giúp chúng ta tìm hiểu sâu thêm về kiến trúc mô hình MVC và ứng dụng của nó vào việc thiết kế các ứng dụng website. Mà framework áp dụng ở đây là Cakephp, một framework rất mạnh trong việc ứng dụng mô hình MVC để phát triển ứng dụng website.
    Cũng qua bài tập lần này nhóm chúng em xin cảm ơn Thạc sĩ Nguyễn Đức Lưu, thầy giáo bộ môn kỹ nghệ phần mềm đã trực tiếp dạy dỗ, chỉ bảo chúng em trong toàn bộ môn học.
    Cuối cùng chúng em cũng xin cảm ơn tất cả các thầy cô giáo, bạn bè đẽ nhiệt tình giúp đỡ chúng em hoàn thành tốt bài tập lần này.
    Trân trọng!

    MỤC LỤC
    CHƯƠNG I. TỔNG QUAN VỀ WEB APPLICATION FRAMEWORK VÀ MÔ HÌNH MVC. 3
    1.1 Web Application Framework là gì?. 3
    1.2. PHP Framework. 3
    1.3 MVC là gì?. 4
    1.3.1. Lịch sử MVC. 4
    1.3.2. Vai trò của các thành phần M-V-C trong Web framework. 5
    1.4. Hệ quản trị CSDL MYSQL. 9
    1.4.1.Giới thiệu về hệ quản trị CSDL MySql 9
    1.4.2. Kết nối vào CSDL. 10
    1.4.3. Chọn CSDL để làm việc. 11
    1.4.4. Thực thi câu lệnh select và lấy kết quả trả về. 11
    1.4.5. Thực thi một câu lệnh insert, update hoặc delete. 13
    CHƯƠNG II. TỔNG QUAN VỀ FRAMEWORK CAKEPHP. 16
    2.1. Giới thiệu về Framework CakePHP. 16
    2.1.1.Một số tính năng của CakePHP 16
    2.2.Cài đặt Cake PHP. 17
    2.2.1. Chuẩn bị và cài đặt 17
    2.2.2. Cấu trúc thư mục CakePHP 19
    2.3. Kiến trúc CakePHP. 20
    CHƯƠNG III. CÀI ĐẶT DEMO ỨNG DỤNG FRAMEWORK CAKEPHP VÀ MÔ HÌNH MVC. 21
    3.1. Giới thiệu ứng dụng. 21
    3.2. Cài đặt ứng dụng. 21
    3.2.1. Cấu hình. 21
    3.3. Giao diện người dùng. 23
    3.3.1.Giao diện trang chủ. 23
    3.3.2. Giao diện trang liên hệ. 23
    3.3.3. Giao diện mua hàng. 24
    3.3.4. Giao diện tin tức. 25
    3.3.5. Giao diện hỗ trợ trực tuyến. 26
    3.3.6. Các giao diện khác. 26
    3.4. Giao diện quản trị. 27
    3.4.1. Giao diện đăng nhập. 27
    3.4.2. Giao diện quản lý danh mục và thêm danh mục. 27
    3.4.3. Quản lý sản phẩm và thêm sản phẩm 28
    3.4.4. Giao diện quản lý tin tức và thêm mới tin. 29
    3.4.5. Quản lý hóa đơn. 30
    3.4.6. Quản lý thông tin chung website. 31
    3.5. Kết quả thu được, hạn chế. 31
    CHƯƠNG IV. TỔNG KẾT. 33
    CHƯƠNG V. TÀI LIỆU THAM KHẢO 34
    CHƯƠNG I. TỔNG QUAN VỀ WEB APPLICATION FRAMEWORK VÀ MÔ HÌNH MVC
    1.1 Web Application Framework là gì?“Web application framework” là một nền tảng phần mềm được thiết kế để hỗ trợ việc phát triển các website động, các ứng dụng web và các dịch vụ web. Mục đích của Framework là nhắm tới việc giảm bớt các hao phí liên quan tới các hoạt động thực hiện trong quá trình phát triển web. Ví dụ, nhiều framework cung cấp thư viện để truy cập cơ sở dữ liệu, khung khuôn mẫu và quản lý phiên làm việc, thêm vào đó làm tăng khả năng tái sử dụng mã.
    1.2. PHP Framework
    PHP framework là web framework được viết bằng PHP - một ngôn ngữ lập trình nguồn mở phổ biến nhất hiện nay. Nội dung khóa luận đề cập tới PHP Framework là do PHP là ngôn ngữ rất linh hoạt, được các lập trình viên ưa chuộng sử dụng khi tiến hành xây dựng các ứng dụng web cỡ lớn (Facebook, Flickr, Twitter ). Bên cạnh đó PHP có một cộng đồng sử dụng lớn, luôn biết hỗ trợ lần nhau. Nhưng chính tính linh hoạt, dễ học, dễ sử dụng của PHP đôi khi làm các lập trình viên chủ quan, thường chỉ chú ý tới việc ứng dụng của mình chạy được hay không mà không quan tâm tới tính sáng sủa trong việc tổ chức mã phục vụ cho mục đích bảo trì dài lâu. Chưa kể tới việc vấn đề an toàn, bảo mật cho ứng dụng web ngày càng bị xem nhẹ. Đây là lúc họ cần tới một PHP framework.
    Sự có mặt của PHP framework làm cho việc phát triển ứng dụng web trở nên trôi chảy hơn bằng việc cung cấp một cấu trúc cơ bản để xây dựng những ứng dụng đó. Hay nói cách khác, PHP Framework giúp đỡ các lập trình viên thúc đẩy nhanh chóng quá trình phát triển ứng dụng, tiết kiệm được phần lớn thời gian, tăng sự ổn định cho ứng dụng, và đặc biệt là giảm thiểu số lần phải viết lại mã. Không chỉ thể, các framework còn đặc biệt hữu ích với những lập trình viên ít kinh nghiệm, giúp họ có thể xây dựng các ứng dụng mang tính chuẩn hóa hơn nhờ việc tương tác chính xác giữa việc xử lý cơ sở dữ liệu (database), mã PHP và giao diện (HTML) một cách riêng biệt.
    Các PHP framework hiện nay hầu hết đều cung cấp sẵn các module nền tảng cần thiết và thư viện mã lệnh chuẩn (kết nối database, quản lý session, template engine ) để xây dựng ứng dụng.
    Ý tưởng chung đằng sau kiến trúc của một PHP Framework được kể đến là mô hình MVC. Một mô hình không mới nhưng mang lại nhiều cảm hứng cho các chuyên gia lập trình trong nhiều năm qua. Chúng ta sẽ cùng tìm hiểu các khái niệm và đặc điểm của mô hình M-V-C.
    1.3 MVC là gì?
    MVC là chữ viết tắt của Model-View-Controller, một mẫu kiến trúc (architectural pattern) được tạo ra nhằm giải quyết các vấn đề phát sinh cũng như các giải pháp tổ chức mã trong quá trình phát triển phần mềm. Khi sử dụng đúng cách, mẫu MVC giúp cho người phát triển phần mềm cô lập các nguyên tắc nghiệp vụ và giao diện người dùng một cách rõ ràng hơn. Phần mềm phát triển theo mẫu MVC tạo nhiều thuận lợi cho việc bảo trì vì các nguyên tắc xử lý nghiệp vụ và giao diện ít có liên quan với nhau.
    1.3.1. Lịch sử MVC
    Bắt đầu vào những năm 70 của thế kỷ 20, tại phòng thí nghiệm Xerox PARC ở Palo Alto. Sự ra đời của giao diện đồ họa (Graphical User Interface) và lập trình hướng đối tượng (Object Oriented Programming) cho phép lập trình viên làm việc với những thành phần đồ họa như những đối tượng đồ họa có thuộc tính và phương thức riêng của nó. Không dừng lại ở đó, những nhà nghiên cứu ở Xerox PARC còn đi xa hơn khi cho ra đời cái gọi là kiến trúc MVC (viết tắt của Model – View – Controller). Kiến trúc MVC đã được ứng dụng để xây dựng rất nhiều thư viện đồ họa khác nhau. Tiêu biểu là bộ thư viện đồ họa của ngôn ngữ lập trình hướng đối tượng SmallTalk (cũng do Xerox PARC nghiên cứu và phát triển vào thập niên 70 của thế kỷ 20). Ngày nay, trong nhiều các nền tảng lập trình chúng ta thấy sự có mặt của mô hình MVC, có thể kể đến:
    + Swing Components của Java
    + Document View Architecture trong Microsoft Visual C++ (VC++)
    + QT4(KDE)
    + Apple’s Cocoa (Core Data)

    1.3.2. Vai trò của các thành phần M-V-C trong Web framework
    [​IMG]
    Hình 1.0.1 Mô hình MVC
    a. C - Controller
    Controller là các lớp điều khiển luồng ứng dụng, tiếp nhận yêu cầu người dùng thông qua HTTP header, sau đó chuyển tiếp nó đến các lớp phụ trách trực tiếp xử lý yêu cầu. Tùy theo cách thiết kế lớp mà chúng ta thường thấy Controller gồm:
    + Front Controller. Là một controller xử lý tất cả các yêu cầu người dùng cho website. Fron Controller có nhiệm vụ hợp nhất tất cả các xử lý yêu cầu vào một kênh yêu cầu thông qua một đối tượng.
    + Dispatcher: Lớp điều phối hướng các điều khiển đi mức cao hơn
    + Request: xử lý một phần dữ liệu đầu vào ở mức GET, POST
    + Session: xử lý một phần dữ liệu đầu vào ở mức SESSION
    Tùy theo dữ liệu đầu vào, Controller sẽ thực hiện các phép lọc (với dịch vụ lấy từ Model), các tính toán lựa chọn (Action Mapping) dựa trên kiến trúc và cấu hình nhằm xác định thành phần lớp chính sẽ thực hiện yêu cầu của người dùng. Hiểu một cách đơn giản, Controller là thành phần trung gian giữa View và Model. Nó nhận dữ liệu nhập vào qua View, sau đó gọi Model tương ứng rồi lấy kết quả trả về từ Model này. Tiếp theo, một View thích hợp sẽ được lựa chọn. Controller sẽ chuyển tiếp dữ liệu vào view để nó xử lý.
    Một số hoạt động thường thấy của Controller:


    Tạo form, gửi tin nhắn đến form để yêu cầu kiểm tra dữ liệu
    Tạo các dịch vụ liên quan đến nghiệp vụ ứng dụng, yêu cầu các lớp dịch vụ tương tác với nguồn dữ liệu để trả về hay thay đổi trạng thái dữ liệu: thực hiện các thao tác chuyển đổi dữ liệu, kiểm tra quyền truy cập trên một hoạt động cụ thể, tương tác với database, tương tác với các web services.
    Tạo đối tượng view, gán các nguồn dữ liệu lấy được từ đối tượng dịch vụ vào cho view.
    b. M - Model
    Model là các lớp cung cấp dữ liệu, dịch vụ liên quan đến dữ liệu và các vấn đề xử lý logic nghiệp vụ. Model có thể:


    Đánh giá tính hợp lệ của dữ liệu.
    Ví dụ kiểm tra dữ liệu vào có đúng với nguyên tắc của hệ thống không
    Chuyển đổi dữ liệu. Ví dụ chuyển đổi định dạng file, chuyển đổi tỉ giá, chuyển đổi ngôn ngữ
    Đưa ra quyết định về nghiệp vụ. Ví dụ đưa ra các dữ liệu, lời khuyên tư vấn đầu tư dựa trên dữ liệu đầu vào của người dùng và các dữ liệu đang có
    Thực hiện việc xử lý dữ liệu theo một quy trình
    Do có hai vai trò tương đối tách biệt cho nên một Model thường được tách thành các lớp có các vùng xử lý khác biệt:


    Vùng xử lý Logic nghiệp vụ: thường là xử lý rule hay policy của nghiệp vụ cũng như quy trình nghiệp vụ.
    Vùng xử lý dữ liệu: Cung cấp/lưu trữ dữ liệu và việc chuyển đổi dữ liệu thành các dạng khác nhau theo yêu cầu
    Trong các tình huống đơn giản, Model chỉ làm vài thao tác đơn giản như lấy dữ liệu từ database. Trong các tình huống phức tạp, việc xử lý có thể là tổ hợp của hàng trăm lớp diễn ra trên một hoặc vài máy chủ (server) hoặc thậm chí dữ liệu hay quyết định được đưa ra từ Model lại là tổng hợp kết quả từ một vài trung tâm dữ liệu nằm rải rác trên vài lục địa. Do vậy trong Model không chỉ có các thao tác trên database và có còn là file system, memory, networking I/O .
    Model hoạt động như là một tầng dịch vụ nhằm có thể tái sử dụng giữa các Controller.
    Khi Controller gọi Model thông qua các giao diện lập trình (API) của Model, nó cần biết một số ứng xử chung của Model. Ví dụ:


    Cách Model đó gửi tín hiệu về quá trình nó xử lý yêu cầu. Có hay không có lỗi ngoại lệ, kiểu của lỗi ngoại lệ, lỗi trong trường hợp nào.
    Kiểu trả veef cần mang tính nhất quán
    c. V - View
    View là các lớp định nghĩa cách thức trình bày dữ liệu (không cập nhật dữ liệu). Trong các web framework, View gồm hai phần chính:


    Template file: định nghĩa cấu trúc và cách thức trình bày dữ liệu cho người dùng. Ví dụ như bố cụ, màu sắc, khung nhìn .
    Phần Logic: xử lý cách áp dụng dữ liệu vào cấu trúc trình bày. Logic này có thể bao gồm việc kiểm tra định dạng dữ liệu, chuyển đổi định dạng dữ liệu sang một sạng dữ liệu trung gian để có thể hiển thị với cấu trúc template đang có ., kiểm tra trạng thái và đặc tính của dữ liệu để lựa chọn một cấu trúc hiện thị phù hợp.
    Bản thân View cũng là một tổ hợp của nhiều lớp. Và nó cũng có thể có View con để giảm tải trên một số lớp chính và để sử dụng lại mã. Và do vậy tính logic của View có thể là logic của một cây phân cấp.
    Trong mô hình truyền thống, View có trách nhiệm chuyển đổi dữ liệu hay trạng thái của Model thành cấu trúc trực quan. Do vậy dữ liệu của Model cần được định nghĩa một cách hợp lý. Sự tách biệt của hai thành phần này sẽ giúp cho người lập trình phân định được một biên giới rõ ràng giữa cách thức lưu trữ/lấy dữ liệu và cách trình bày dữ liệu. Do vậy tính phức tạp của quy trình lấy dữ liệu, xử lý dữ liệu cũng như (sự thay đổi của chúng theo thời gian) trước khi trả về sẽ không làm ảnh hưởng đến việc trình bày dữ liệu. Rõ ràng sự khác biệt về công nghệ lấy dữ liệu và công nghệ sinh trang không gây ảnh hưởng đến ứng dụng. Điều này khá quan trọng trong việc tích hợp các ứng dụng. Ngoài ra, cách làm này thực sự đảm bảo việc tách biệt vai trò của người thiết kế giao diện với vai trò của lập trình viên thiên về dữ liệu. Như vậy khi làm việc theo nhóm, người quản trị dự án có thể tổ chức nhóm phát triển thành các nhóm kĩ năng và phát triển ứng dụng song song với nhau.
    Các công nghệ thường được sử dụng ở View là HTML, CSS và JavaScript.
    [​IMG]
    Hình 1.0.2 Biểu đồ tuần tự một chuỗi MVC đơn giản
    Tóm lại, MVC chia trách nhiệm công việc thành ba phần riêng rẽ:


    Phát triển (development): Các nhà phát triển làm việc với model. Đặc trưng của phần này là tận dụng một cách triệt để kiến thức, kỹ năng của các lập trình viên liên quan tới thuật toán xử lý dữ liệu, quản trị cơ sở dữ liệu .
    Thiết kế (design): Các nhà thiết kế làm việc trực tiếp với lớp View, chịu trách nhiệm tạo ra "cảm quan" cho ứng dụng. Họ cần có kinh nghiệm làm việc với HTML, CSS, JavaScript và Graphic Design.
    Hợp nhất (intergration): phần này tồn tại trong lớp Controller. Mục đích chính là gắn kết developer và designer với nhau. Người hợp nhất không cần có nhiều kinh nghiệm làm việc với dữ liệu như lập trình viên nhưng cần nắm rõ cách tổ chức của một ứng dụng.
    Mô hình MVC được áp dụng rất nhiều trong các Web framework hiện nay. Các PHP framework phổ biến nhất:


    Zend framework: là sản phẩm của Zend – công ty “bảo trợ” cho PHP. Với các tính năng mạnh mẽ, Zend framework thường được sử dụng cho các công ty lớn, và bạn cần phải có lượng kiến thức khá sâu rộng về PHP để có thể sử dụng được Zend framework.
    CakePHP: là một lựa chọn tốt cho những lập trình viên có kiến thức nâng cao về PHP. Nó dựa trên cùng một nguyên tắc thiết kế với Ruby on Rails (một framework dành cho các nhà phát triển các ứng dụng web bằn ngôn ngữ Rail). Với các hệ thống hỗ trợ, tính đơn giản và mỗi trường mở cao đã giúp cho CakePHP trở thành một trong những framework phổ biến nhất hiện nay.
    CodeIgniter: một MVC framework viết bằng PHP4 (gần đây đã tương thích hoàn toàn với PHP 5.3.0 trong phiên bản 1.7.2). Được biết đến như một framework dễ hiểu và dễ sử dụng. CodeIgniter được Rasmus Lerdorf – cha đẻ của ngôn ngữ PHP – đánh giá rất cao vì tính tinh giản về cấu trúc, đạt hiệu năng cao khi vận hành. Không giống như Symfony, PHP framework này phục vụ mục đích lý tưởng cho việc xây dưng các ứng dụng chia sẻ, lưu trữ. Nó cung cấp các giải pháp đơn giản, và có một thư viện video hướng dẫn phong phú, diễn đàn hỗ trợ, và cung cấp sẵn một hướng dẫn sử dụng cho người mới bắt đầu. PHP framework này rất phù hợp cho một người mới làm quen với framework.
    Joomla! v1.5.x: một hệ quản trị nội dung nguồn mở được phát triển theo mô hình MVC trong các phần mở rộng (extensions), bao gồm các thành phần (components) và các mô đun (modules).
    1.4. Hệ quản trị CSDL MYSQL1.4.1.Giới thiệu về hệ quản trị CSDL MySqlMysql là hệ quản trị dữ liệu miễn phí, được tích hợp sử dụng chung với apache, PHP. Chính yếu tố phát triển trong cộng đồng mã nguồn mở nên mysql đã qua rất nhiều sự hỗ trợ của những lập trình viên yêu thích mã nguồn mở. Mysql cũng có cùng một cách truy xuất và mã lệnh tương tự với ngôn ngữ SQL. Nhưng Mysql không bao quát toàn bộ những câu truy vấn cao cấp như SQL. Về bản chất Mysql chỉ đáp ứng việc truy xuất đơn giản trong quá trình vận hành của website nhưng hầu hết có thể giải quyết các bài toán trong PHP.
    1.4.2. Kết nối vào CSDLTrước hết để sử dụng MySql, bạn phải cài đặt 1 phần mềm cung cấp ở đây chúng em cài phần mềm Xampp-Control.
    Vào kết nối thông qua địa chỉ http://localhost/phpmyadmin/
    Username : root
    Password: (trống)
    PHP cung cấp hàm mysql_connect để kết nối vèo MySQL server. Cú pháp của hàm này như sau:

    mysql_connect($server_address, $username, $password)$server_address là địa chỉ của MySQL server, có thể là domain name hoặc IP address, các ví dụ trong bài viết này sẽ dùng giá trị "localhost" cho $server_address.
    $username là tên account dùng để login vào MySQL server, các ví dụ trong bài sẽ sử dụng giá trị "root" cho $username.
    $password là mật mã để kết nối vào MySQL server, các ví dụ trong bài viết sẽ sử dụng chuỗi rỗng "" làm mật mã.
    Hàm mysql_connect sẽ trả về 1 kết nối đến MySQL server nếu như quá trình kết nối thành công, hoặc trả về giá trị FALSE nếu như kết nối không được.
    Để đóng kết nối tới MySQL server, PHP cung cấp hàm mysql_close. Đoạn mã sau ví dụ quá trình kết nối vào MySQL server và đóng kết nối.

    <?php
    $SERVER = "localhost";
    $USERNAME = "root";
    $PASSWORD = "";

    $conn = mysql_connect($SERVER, $USERNAME, $PASSWORD);
    if ( !$conn ) {
    //Không kết nối được, thoát ra và báo lỗi
    die("không nết nối được vào MySQL server");
    } //end if

    //đóng kết nối
    mysql_close($conn);
    ?>1.4.3. Chọn CSDL để làm việcSau khi connet vào MySQL server, thao tác tiếp theo là chọn CSDL để làm việc. PHP cung cấp cho ta hàm mysql_select_db để làm việc này. Cú pháp của hàm này như sau:

    mysql_select_db($db_name[, $conn])Với $db_name là tên CSDL cần chọn, $conn là kết nối được thực hiện qua lệnh mysql_connect. Các ví dụ trong bài viết này sẽ sử dụng CSDL có tên là test:

    <?php
    $SERVER = "localhost";
    $USERNAME = "root";
    $PASSWORD = "";
    $DBNAME = "test";

    $conn = mysql_connect($SERVER, $USERNAME, $PASSWORD);
    if ( !$conn ) {
    //Không kết nối được, thoát ra và báo lỗi
    die("không nết nối được vào MySQL server");
    } //end if

    //chọn CSDL để làm việc
    mysql_select_db($DBNAME, $conn);

    //đóng kết nối
    mysql_close($conn);
    ?>1.4.4. Thực thi câu lệnh select và lấy kết quả trả vềPHP cung cấp cho ta 3 hàm hữu dụng để thực hiện công việc này:


    $result = mysql_query($sql, $conn): thực hiện câu lệnh SQL được cung cấp qua tham số $sql và trả về 1 kết quả kiểu $result (hàm này trả về FALSE nếu như câu lệnh thực hiện không thành công).
    mysql_num_rows($result): hàm này trả về số lượng row lấy được qua câu lệnh SELECT (được thực thi bởi hàm mysql_query) trước đó.
    $row = mysql_fetch_row($result), $row = mysql_fetch_assoc($result): trả về dòng kết quả hiện thời của câu lệnh select và chuyển con trỏ tới dòng tiếp theo (như vậy lệnh gọi mysql_fetch_row hoặc mysql_fetch_assoc tiếp đó sẽ trả về dòng tiếp theo); hoặc giá trị FALSE nếu như không còn dòng nào để trả về nữa. Kết quả trả về từ 2 hàm này là 1 array.
    mysql_error($conn): trả về thông báo lỗi của MySQL server nếu như một lệnh trước đó có lỗi.
    Để hiểu rõ hơn công dụng của các hàm trên, đồng thời phân biệt sự khác nhau giữa 2 hàm mysql_fetch_row và mysql_fetch_assoc, ta cung xem xét các ví dụ sau.
    Các ví dụ của ta sẽ sử dụng table có tên là member với các trường và dữ liệu như sau:
    [TABLE]
    [TR]
    [TD]username
    [/TD]
    [TD]password
    [/TD]
    [/TR]
    [TR]
    [TD]abc
    [/TD]
    [TD]123
    [/TD]
    [/TR]
    [TR]
    [TD]def
    [/TD]
    [TD]456
    [/TD]
    [/TR]
    [/TABLE]
    Ví dụ 1: dùng mysql_fetch_row()

    <?php
    $SERVER = "localhost";
    $USERNAME = "root";
    $PASSWORD = "";
    $DBNAME = "test";

    $conn = mysql_connect($SERVER, $USERNAME, $PASSWORD);
    if ( !$conn ) {
    //Không kết nối được, thoát ra và báo lỗi
    die("không nết nối được vào MySQL server: ".mysql_error($conn));
    } //end if

    //chọn CSDL để làm việc
    mysql_select_db($DBNAME, $conn)
    or die("Không thể chọn được CSDL: ".mysql_error($conn));

    $sql = "SELECT * FROM member";
    $result = mysql_query($sql, $conn);
    if ( !$result )
    die("Không thể thực hiện được câu lệnh SQL: ".mysql_error($conn));

    echo "Số lượng row tìm được: ".mysql_num_rows($result)."<br>
    ";

    while ( $row = mysql_fetch_row($result) ) {
    echo "Username = ".$row[0]."<br>
    ";
    echo "Password = ".$row[1]."<br>
    ";
    } //end while
    //nên luôn giải phóng bộ nhớ sau khi lấy hết các row trả về từ câu lệnh SELECT
    mysql_free_result($result);

    //đóng kết nối
    mysql_close($conn);

    ?>Hàm mysql_fetch_row() sẽ trả về 1 array mà phần tử thứ [0] sẽ tương ứng với cột đầu tiên của table, phần tử thứ [1] sẽ tương ứng với cột thứ hai của table .Chương trình trên sẽ in ra ra 4 dòng:

    Username = abc
    Password = 123
    Username = def
    Password = 4561.4.5. Thực thi một câu lệnh insert, update hoặc deleteHàm mysql_query cũng được dùng để thực thi các câu lệnh DELETE, INSERT hoặc UPDATE, nhưng lúc này hàm sẽ trả về TRUE nếu câu lệnh thực hiện thành công và FALSE trong trường hợp ngược lại. Để lấy số lượng các row được chèn với lệnh INSERT hoặc bị thay đổi bởi lệnh UPDATE, PHP cung cấp cho ta hàm mysql_affected_rows. Ta hãy xem ví dụ sau:

    <?php
    $SERVER = "localhost";
    $USERNAME = "root";
    $PASSWORD = "";
    $DBNAME = "test";

    $conn = mysql_connect($SERVER, $USERNAME, $PASSWORD);
    if ( !$conn ) {
    //Không kết nối được, thoát ra và báo lỗi
    die("không nết nối được vào MySQL server: ".mysql_error($conn));
    } //end if

    //chọn CSDL để làm việc
    mysql_select_db($DBNAME, $conn)
    or die("Không thể chọn được CSDL: ".mysql_error($conn));

    $sql = "INSERT INTO member (username, password) VALUES ('xyz', '000')";
    $result = mysql_query($sql, $conn); //chèn thêm 1 dòng vào table
    if ( !$result )
    die("Không thể thực hiện được câu lệnh SQL: ".mysql_error($conn));

    echo "Số lượng row được chèn: ".mysql_affected_rows($conn)."<br>
    ";
    //ta chỉ chèn 1 dòng nên hàm mysql_affected_rows sẽ trả về 1

    $sql = "UPDATE member SET password='111' WHERE username='xyz'";
    $result = mysql_query($sql, $conn); //đổi password của accoutn xyz
    if ( !$result )
    die("Không thể thực hiện được câu lệnh SQL: ".mysql_error($conn));

    echo "Số lượng row được thay đổi: ".mysql_affected_rows($conn)."<br>
    ";
    //ta thay đổi 1 dòng nên hàm mysql_affected_rows sẽ trả về 1

    $sql = "DELETE FROM member";
    $result = mysql_query($sql, $conn); //xoá hết tất cả các account
    if ( !$result )
    die("Không thể thực hiện được câu lệnh SQL: ".mysql_error($conn));

    echo "Số lượng row được xoá: ".mysql_affected_rows($conn)."<br>
    ";
    //ta xoá tất cả 3 dòng nên hàm mysql_affected_rows sẽ trả về 3

    //đóng kết nối
    mysql_close($conn);
    ?>
    CHƯƠNG II. TỔNG QUAN VỀ FRAMEWORK CAKEPHP
    2.1. Giới thiệu về Framework CakePHPCakePHP là một Framework cho php . Mục đích của nó là cung cấp một framework cho người sử dụng php phát triển những ứng dụng web nhanh, mạnh mẽ ,linh họa .Và điều quan trọng là CakePHP là một OpenSource (miễn phí). Để sử dụng nó, yêu cầu người làm phải biết những kiến thức như: Cơ bản về PHP và HTML, Kiến trúc MVC,Lập trình hướng đối tượng.

    2.1.1.Một số tính năng của CakePHP
    ã Nguồn mở, miễn phí, có cộng đồng sử dụng và hỗ trợ rộng lớn
    ã Tương thích PHP4 và PHP5
    ã Mô hình MVC
    ã Đa ngôn ngữ
    ã Sinh code tự động
    ã Caching
    ã Phân quyền (ACL)
    ã Kiểm tra ràng buộc dữ liệu
    ã Xây dựng nhiều thư viện hỗ trợ cho View như: Ajax, HTML Form, Javascript
    ã Xây dựng nhiều thư viện hỗ trợ cho Controller: Email, Security, Session, Cookies, Request Handling
    ã Dễ dàng viết thêm thư viện hỗ trợ, liên kết với ứng dụng khác (thông qua vendors)
    ã Đa giao diện
    ã Hỗ trợ nhiều hệ quản trị CSDL







    2.2.Cài đặt Cake PHP2.2.1. Chuẩn bị và cài đặt
    Ở đây chúng em dùng CakePHP ver1.36 webserver XAMPP tích hợp Mysql và Apache.

    Yêu cầu hệ thống :


    Hệ điều hành Windown hoặc Linux
    Hệ quản trị CSDL MySQL
    Chuẩn bị cài đặt :
    Tải phiên bản CakePHP mới nhất (1.3.6 stable) từ địa chỉ:
    http://github.com/cakephp/cakephp/archives/1.3
    - Giải nén, cho vào thư mục của web server
    - Trong ví dụ này thư mục webser gốc là :C://xampp/htdocs
    - Vậy ta có cấu trúc như sau :C://xampp/htdocs/cakephp
    [​IMG]
    [​IMG]
    Cài đặt CakePHP thành công :
    - Chmod thư mụcapp/tmpthành0777(nếu trên host, còn localhost thì khỏi cần)
    - Mở file app/config/core.php
    - Thay đổi giá trị của dòng Configure::write(‘Security.salt', ‘DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi2010‘ );
    - Thay đổi giá trị của dòng Configure::write(‘Security.cipherSeed', ‘768593096574535424967496836452011‘);
    - Tạo csdl với tên:cake_test
    - Mở file app/config/database.php, điền như sau:
    [TABLE]
    [TR]
    [TD]1
    [/TD]
    [TD="colspan: 2"]var $default = array(
    [/TD]
    [/TR]
    [TR]
    [TD]2
    [/TD]
    [TD]'driver' => 'mysql',
    [/TD]
    [/TR]
    [/TABLE]

    3
    [/TD]
    [TD]'persistent' => false,
    [/TD]
    [/TR]
    [TR]
    [TD]4
    [/TD]
    [TD]'host' => 'localhost',
    [/TD]
    [/TR]
    [/TABLE]

    [TABLE]
    [TR]
    [TD]5
    [/TD]
    [TD]'login' => 'root',
    [/TD]
    [/TR]
    [TR]
    [TD]6
    [/TD]
    [TD="colspan: 2"]'password' => 'my_password',
    [/TD]
    [/TR]
    [/TABLE]

    [TABLE]
    [TR]
    [TD]7
    [/TD]
    [TD="colspan: 2"]'database' => cakephp_test',
    [/TD]
    [/TR]
    [TR]
    [TD]8
    [/TD]
    [TD]'prefix' => ",
    [/TD]
    [/TR]
    [/TABLE]

    [TABLE]
    [TR]
    [TD]9
    [/TD]
    [TD]);
    [/TD]
    [/TR]
    [/TABLE]
    Bạn cần thay đổi các mục in đậm cho phù hợp với cấu hình trên máy bạn.


    2.2.2. Cấu trúc thư mục CakePHP
    Sau khi tải và giải nén CakePHP, bạn có thể thấy các files và thư mục sau :
    -app: là nơi chứa mã nguồn ứng dụng của bạn (phần này quang trọng)
    -cake: là nơi chứa mã nguồn của CakePHP. Bạn không nên chỉnh sửa các files trong thư mục này nếu bạn không hiểu rõ về chúng
    -vendors: chứa ứng dụng của bên thứ 3, phục vụ cho ứng dụng của bạn
    -plugins: chứa các thành phần mở rộng dùng cho ứng dụng

    [​IMG]

    Ghi chú :
    Config Chứa file cấu hình hệ thống
    Controllers Chứa các controller và component
    Locale Chứa file ngôn ngữ , phục vụ cho ứng dụng đa ngôn ngữ
    Molels Chứa file Model và behavor, datasource
    Plugins Chứa các gói mở rộng
    TmpThư mục tạm của ứng dụng
    Vendors Chứa ứng dụng của bên thứ 3
    Views Chứa các file giao diện
    Webroot Chứa tài liệu (hình ảnh,file ), file CSS , file javascript

    2.3. Kiến trúc CakePHPCakePHP hoạt động theo mô hình MVC
    Mô hình này chia ứng dụng ra làm 3 phần chính:
    ã Model
    ã View
    ã Controller


    [​IMG]
    Mô hình MVC trong CakePHP


    CHƯƠNG III. CÀI ĐẶT DEMO ỨNG DỤNG FRAMEWORK CAKEPHP VÀ MÔ HÌNH MVC3.1. Giới thiệu ứng dụngĐể mô phỏng tính hữu ích của việc áp dụng mô hình MVC vào trong các ứng dụng web, chúng em đã chuẩn bị 1 ứng dụng website demo.
    Ứng dụng được viết bởi ngôn ngữ PHP, hệ quản trị CSDL MySql, được xây dựng trên framework CakePHP ứng dụng mô hình MVC.
    Đây là ứng dụng bán sản phẩm linh kiện điện tử online của công ty TNHH Hoa Hoan. Các chức năng bao gồm:


    Trưng bày sản phẩm, bán sản phẩm online thông qua việc thanh toán trực tiếp giỏ hàng.
    Phần hướng dẫn mua hàng dành cho khách hàng
    Liên hệ với công ty thông qua from
    Bản đồ chỉ dẫn đường đi
    Thêm, sửa, xóa, tìm kiếm sản phẩm
    Hỗ trợ trực tuyến khách hàng
    Tin tức sự kiện
    Thống kê số lượt ghé thăm website và 1 số chức năng phụ khác như from thời tiết,
    3.2. Cài đặt ứng dụng3.2.1. Cấu hình- Khởi chạy apache và mysql (xampp)
    - Giải nén thư mục ứng dụng “hoanhoa” copy vào thư mục xampp/htdocs
    [​IMG]


    Vào phpmyadmin theo đường dẫn: http://localhost/phpmyadmin
    Tạo 1 database mới “hoahoan”, sau đó import database “db_hoanhoa.sql” của ứng dụng vào “hoahoan
    Mở file database.php theo đường dẫn htdocs/hoanhoa/app/config/database.php sửa lại cho đúng tên với database mình vừa khởi tạo
    [​IMG]
    Chạy ứng dụng thông qua links http://localhost/hoanhoa/

    3.3. Giao diện người dùng3.3.1.Giao diện trang chủ[​IMG]
    3.3.2. Giao diện trang liên hệ[​IMG]
    3.3.3. Giao diện mua hàng[​IMG]
    [​IMG]

    3.3.4. Giao diện tin tức[​IMG]
    [​IMG]

    3.3.5. Giao diện hỗ trợ trực tuyến[​IMG]
    3.3.6. Các giao diện khác[​IMG]
    Tìm kiếm
    [​IMG]
    Thời tiết
    [​IMG]
    Thống kê
    3.4. Giao diện quản trị3.4.1. Giao diện đăng nhập[​IMG]
    Links đăng nhập http://localhost/hoanhoa/admin
    3.4.2. Giao diện quản lý danh mục và thêm danh mục[​IMG]
    [​IMG]
    3.4.3. Quản lý sản phẩm và thêm sản phẩm[​IMG]
    [​IMG]
    3.4.4. Giao diện quản lý tin tức và thêm mới tin[​IMG]
    [​IMG]


    3.4.5. Quản lý hóa đơn[​IMG]
    3.4.6. Quản lý thông tin chung website[​IMG]

    3.5. Kết quả thu được, hạn chếSau khi hoàn thành xong ứng dụng, chúng em rút ra được 1 số ưu điểm và mặt hạn chế của ứng dụng như sau:
     

    Các file đính kèm:

Đang tải...