[BÀI 32] HƯỚNG DẪN VIẾT MỘT TRANG WEB CƠ BẢN BẰNG PHP (PHẦN 1: TẠO CẤU TRÚC FILE)

Sau khi đã tìm hiểu sơ qua về PHP, chúng ta đã nắm được phần nào về ngôn ngữ mạnh mẽ này . Để các bạn dễ hình dung, loạt bài hướng dẫn tiếp theo này tôi sẽ hướng dẫn các bạn tạo một trang web hoàn chỉnh bằng mô hình MVC hướng đối tượng.

Các bước cơ bản để tạo một trang web hoàn chỉnh:

1: Tạo giao diện của trang web.

2: Viết trang quản trị.

3: Truy vấn và xử lý dữ liệu

4: Kiểm lỗi

5: Upload mã nguồn lên host

Cùng tìm hiểu bước 1 của công đoạn này:

Tùy vào các loại trang web khác nhau mà bạn sẽ tạo nên một giao diện khác nhau:

Để cho nhanh, tôi có một giao diện như sau, bạn chỉ việc tải về và tiến hành làm bước thứ 2 là làm trang quản trị.

Click vào đây để tải giao diện về.

Tải xong và giải nén các bạn sẽ có cấu trúc file như sau:

1

Trong đó:

  • Thư mục “assets”: chứa các file về css, js, và hình ảnh
  • thư mục “bs”: tôi lưu mã nguồn của bootstrap ở đây
  • ….
  • file “index.php”: là trang chủ

Chạy file index.php và bạn sẽ có giao diện như sau:

2

Bước 2: Tạo trang quản trị:

Bước đầu tiên cũng là bước quan trọng nhất của một trang quản trị, đó chính là bước đăng nhập. Ở bài số 23 tôi đã hướng dẫn các bạn làm chức năng này, song đó là chức năng đăng nhập viết theo cách thông thường. Với mô hình MVC hướng đối tượng, cách viết của tôi sẽ có sự khác biệt một chút, tuy nhiên bạn cần nhớ, tôi chỉ viết hơi khác biệt vì tôi phải tuân thủ theo cách viết của MVC hướng đối tượng. Song về bản chất không có gì thay đổi cả.

1: Tạo một thư mục chỉ dành riêng cho admin mới có quyền truy cập:

  • Ngang cấp với file index.php tôi tạo một thư mục có tên là admin, và một file có tên là config.php
  • Thư mục admin sẽ chứa các mã nguồn của trang quản trị
  • File config.php là file tôi tạo để kết nối đến cơ sở dữ liệu
  • Hoàn tất việc tạo folder “admin” và file “config.php” bạn sẽ có cấu trúc file như sau:

3

Tạo một cơ sở dữ liệu mới:

Tôi tiến hành tạo một cơ sở dữ liệu mới có tên là “devpro_project_mvc” trên xampp.

Trong cơ sở dữ liệu này chứ một bảng tên là “users”, bảng này chứa các trường là id (khóa chính, tự động tăng,kiểu int), email kiểu varchar(100) để lưu tài khoản người dùng, password kiểu varchar(100) để lưu mật khẩu người dùng, và name kiểu varchar(50) để lưu tên người dùng.

Tạo xong tôi có cấu trúc bảng users như sau:

4

Cấu hình file config.php:

Để thao tác được với cơ sở dữ liệu, tôi cần đến kết nối đến cơ sở dữ liệu, trong file config.php tôi viết như sau:

Tạo mô hình MVC hướng đối tượng:

Như tìm hiểu ở bài trước, tôi đã có nói qua về mô hình MVC và sau đây là cách viết để các bạn dễ hình dung hơn về mô hình MVC:

Trong thư mục admin, tôi tạo 3 thư mục có tên là model,controller,view. Tương ứng model: tạo các hàm thao tác với database, controller: xử lý dữ liệu và các thao tác truy vấn, view: hiển thị giao diện để người dùng tương tác.

Cấu trúc file của các bạn bây giờ sẽ như sau:

5

Model : viết các hàm thao tác với cơ sở dữ liệu:

Trong thư mục model, tôi tạo một file có tên là model để viết các hàm thao tác với cơ sở dữ liệu, cụ thể trong admin/model/model.php tôi viết các hàm sau:

Tôi có các hàm cơ bản như:

  • Hàm __construct():  là hàm tạo, hàm này luôn được thực thi và được thực thi đầu tiên khi class được khởi tạo mà không cần gọi. Do vậy khi model được khởi tạo -> hàm __construct() sẽ được chạy, hàm này được chạy sẽ tạo kết nối đến CSDL. và gán vào biến $ketnoi.
  • Hàm fetch_all($query){}: là hàm duyệt và lấy ra nhiều bản ghi thỏa mãn truy vấn được truyền vào, ví dụ như lấy ra các bài viết được viết trong ngày 03/11/2016
  • Hàm fectch_one($query){}: là hàm duyệt và lấy ra duy nhất một bản ghi thỏa mãn truy vấn được truyền vào, ví dụ như lấy ra tất cả thông tin của sinh viên có mã là 123456 (do mã sinh viên là không trùng nên chỉ lấy ra được 1 bản ghi tương ứng với mã sinh đó)
  • Hàm fetch_count($query){}: đếm xem có bao nhiêu bản ghi thỏa mãn truy vấn truyền vào.
  • Hàm query($query){}: sẽ thực thi câu truy vấn bất kỳ.

Tạo controller cha, để các controller khác có thể kế thừa:

Trong thư mục admin/controller/ tôi tạo 1 file có tên là controller.php và file này chứa nội dung sau:

Tạo view:

Trong thư mục admin/tôi tạo một file tên là index.php (đây là trang chủ của trang quản trị), ở trang index.php tôi viết như sau:

 

Trong thư mục admin/ tôi tạo tiếp 1 folder có tên là public để chứa các css/js dùng cho trang quản trị, trong folder public tôi tạo một file là style.css : (admin/public/style.css), file này có nội dung như sau (mục đích chỉ để trang admin của tôi đẹp hơn thôi):

 

Như tôi viết ở trên: các file config.php, admin/controller/controller.php, admin/model/model.php và admin/index.php đang là các file riêng biệt, không liên quan gì đến với nhau hết. Do vậy, tôi phải kết nối các file này vào làm một. Bản chất của mô hình MVC là tách các phần xử lý các công việc khác nhau ra thành các file khác nhau cho dễ quản lý, sửa chữa, nâng cấp,… mà thôi.

Ở file index.php tôi viết thêm như sau:

Như vật tôi đã hoàn thành việc tạo cấu trúc file của một dự án viết theo mô hình MVC, bài tiếp theo tôi sẽ hướng dẫn các bạn viết chức năng đăng nhập với mô hình MVC hướng đối tượng.

Download toàn bộ mã nguồn của bài hôm nay tại đây!

Video hướng dẫn tạo cấu trúc file MVC hướng đối tượng: