BÀi 36 PHP VÀ MYSQL

 

LAB PHP (CB) 15

CÁC QUY TRÌNH TƯƠNG TÁC DỮ LIỆU GIỮA PHP VÀ MYSQL

A – LÝ THUYẾT

Trong bài học ngày hôm nay, chúng ta sẽ tìm hiểu các quy trình tương tác dữ liệu giữa PHP và CSDL MySQL. Đó là cách thức Kết nối PHP đến CSDL, thao tác xuất nội dung trong CSDL ra trình duyệt cũng như là các thao tác thêm, xóa, sửa dữ liệu trong CSDL thông qua PHP

I – QUY TRÌNH KẾT NỐI GIỮA PHP VÀ MYSQL

1 – Kết nối tới CSDL

Điều đầu tiên trong quá trình làm việc qua lại giữa ngôn ngữ PHP và hệ quản trị CSDL MySQL đó là chúng ta phải có một kết nối giữa 2 ngôn ngữ này. Và đoạn code để kết nối một ngôn ngữ lập trình mà cụ thể ở đây là PHP và với một ngôn ngữ CSDL MySQL được thực hiện như sau:

$connect_db = mysql_connect(“hostname”, “username”, “password”);

Trong đó:

a)      hostname: Địa chỉ của Server. Giá trị được dùng ở đây là localhost

b)     username: Tên người dùng truy cập Database. Giá trị được sử dụng ở đây là root

c)      password: Mật khẩu truy cập Database. Nếu các bạn để mặc định là không đặt mật khẩu thì giá trị sử dụng ở đây là rỗng “”

Ví dụ:



2 – Lựa chọn CSDL

Sau khi quá trình kết nối thành công, vậy là PHP đã có thể làm việc được với MySQL. Việc tiếp theo đó là PHP cần làm việc với CSDL nào trong hàng loạt CSDL có trong MySQL. Chính vì lẽ đó mà chúng ta cần phải có một đoạn code để lựa chọn một CSDL cụ thể mà chúng ta muốn làm việc

$select_db = mysql_select_db(“ten_csdl”, $connect_db);

Trong đó:

a)      ten_csdl: Là tên của CSDL muốn kết nối đến

b)     $connect_db: Chính là biến kết nối vừa được khởi tạo ở trên

Ví dụ:

3 – Xét ngôn ngữ cho CSDL

Để có thể hiển thị được tiếng Việt khi xuất dữ liệu từ trong CSDL ra trình duyệt thông qua PHP thì chúng ta cần phải có đoạn code nhỏ sau đây

$set_lang = mysql_query(“SET NAME ‘utf8’”)

Ví dụ:

II – QUY TRÌNH THỰC THI TRUY VẤN SQL

1 – Tiến hành truy vấn SQL

Ở bước này chúng ta tiến hành viết câu truy vấn SQL tương tự như chúng ta sử dụng câu truy vấn SQL trong môi trường CSDL MySQl

$sql = “SELECT * FROM thanhvien”;

Ví dụ:

2 – Thực thi truy vấn

Sau đó chúng ta tiến hành thực thi câu truy vấn trên với hàm mysql_query(). Kết quả của truy vấn này sẽ trả về một Bảng dữ liệu tương tự như khi chúng ta làm việc trong môi trường MySQL.

$query = mysql_query($sql);

Ví dụ:

Và để có thể lấy và xuất ra Bảng dữ liệu đó trên trình duyệt thì chúng ta cần phải có một số hàm hỗ trợ cho MySQL trong PHP mà chúng ta sẽ làm việc tiếp ở nội dung tiếp ngay sau đây

III – QUY TRÌNH XỬ LÝ KẾT QUẢ TRẢ VỀ TỪ TRUY VẤN SQL BẰNG MỘT SỐ HÀM XÂY DỰNG SẴN TRONG PHP

1 – Hàm mysql_num_rows()

Hàm mysql_num_rows() sẽ nhận vào một kết quả của quá trình thực thi truy vấn SQL và trả về số mẩu tin của quá trình truy vấn đó

Cú pháp:

mysql_num_rows($query);

Trong đó $query chính là biến chứa kết quả trả về từ quá trình thực thi câu lênh SQL

Ví dụ:

2 – Hàm mysql_fetch_array()

Hàm mysql_fetch_array() sẽ nhận vào kết quả của quá trình thực thi truy vấn SQL và trả về một mảng chứa toàn bộ thông tin của một mẩu tin với Key là tên của Cột dữ liệu còn Value chính là giá trị tương ứng của nó trong CSDL

Do đó để lấy toàn bộ các mẩu tin trong Bảng dữ liệu chúng ta cần phải sử một vòng lặp với phương pháp như sau:

Vì dụ:

 

IV – QUY TRÌNH ĐÓNG KẾT NỐI CSDL

Đây chính là quá trình đóng lại một kết nối với CSDL sau khi đã thao tác xong với nó. Cũng giống như quá trình đóng lại một File khi chúng ta đã thao tác xong trong bài học làm việc với File trong PHP mà chúng ta đã được nghiên cứu trước kia

1 – Hàm mysql_close()

Hàm mysql_close() sẽ nhận vào một kết nối tới CSDL và thực hiện quá trình đóng kết nối đó

Cú pháp:

mysql_close($connect_db);

 

Trong đó $connect_db chính là một kết nối tới CSDL của PHP

Ví dụ:

B – THỰC HÀNH

I – BÀI TẬP THỤC HÀNH

Bài 1:

Tạo CSDL qlthanhvien (Quản lý thành viên)

Tạo Bảng thanhvien với cấu trúc như sau:

qlthanhvien

id_thanhvien

tai_khoan

mat_khau

quyen_truy_cap

 

            Tiến hành thêm một số thông tin của các thành viên vào CSDL với nội dung như sau:

id_thanhvien

tai_khoan

mat_khau

quyen_truy_cap

1

admin

admin

2

2

lelien

222222

1

3

nguyenminh

333333

1

4

hoanganh

444444

1

 

Xây dựng chức năng Login và Logout cho ứng dụng quản lý thành viên với các yêu cầu về thiết kế như sau:

  • Tạo Form đăng nhập cho người dùng tương tác với hệ thống
  • Tạo các trường nhập tài khoản và mật khẩu để người dùng đăng nhập
  • Tạo nút Submit để người dùng tiến hành đăng nhập vào hệ thống

 

Xử lý đăng nhập với các yêu cầu sau:

  • Thông báo “Yêu cầu nhập thông tin tài khoản” nếu người dùng bỏ trống một trong các trường nhập nội dung
  • Thông báo “Tài khoản của bạn không tồn tại” nếu người dùng nhập một tài khoản không tồn tại trong CSDL
  • Nếu người dùng nhập đúng tài khoản trong CSDL thì cho phép đăng nhập vào trang quản lý thành viên đồng thời hiển thị lời chào “Chúc mừng ‘Tên tài khoản’ đã đăng nhập thành công”

Xử lý quá trình đăng xuất với yêu cầu sau:

  • Khi người dùng lựa chọn Logout ngay bên cạnh lời chào khi đăng nhập thì lập tức sẽ thoát khỏi hệ thống và được điều hướng tới trang Login để tiến hành đăng nhập lại từ đầu

 

II – BÀI TẬP VỀ NHÀ

Bài 2:

Xây dựng trang quản lý thành viên sau khi người dùng đăng nhập thành công với các yêu cầu thiết kế như sau:

Quản lý thành viên

Thêm mới một thành viên

ID thành viên

Tên tài khoản

Mật khẩu

Quyền truy cập

Sửa

Xóa

1

admin

admin

2

Sửa

Xóa

2

lelien

222222

1

Sửa

Xóa

3

nguyenminh

333333

1

Sửa

Xóa

4

hoanganh

444444

1

Sửa

Xóa

 

Bài 3:

Xây dựng trang thêm mới thành viên với các yêu cầu về thiết kế như sau:

  • Tạo Form cùng với các thành phần trong Form để người dùng có thể nhập đầy đủ các thông tin của thành viên như: tên tài khoản, mật khẩu, một Selectbox để lựa chọn quyền truy cập là Admin hay Thành viên. Nút Submit để tiến hành thực thi Form

Xử lý quá trình thêm mới với các yêu cầu sau

  • Bắt lỗi cho các trường tài khoản và mật khẩu khi bị để trống
  • Thông báo lỗi khi thêm một tài khoản đã tồn tại trong CSDL
  • Nếu không có lỗi nào sảy ra thì tiến hành thêm mới thông tin thành viên vào CSDL và điều hướng người dùng tới trang quản lý thành viên


 >>Xem bài trước: Bài 35 - MYSQL PHẦN III - SQL NÂNG CAO


Bài 35 - MYSQL PHẦN III - SQL NÂNG CAO

 

LAB PHP (CB) 14

LÀM VIỆC VỚI HỆ QUẢN TRỊ CSDL MYSQL

(PHẦN III – MYSQL NÂNG CAO)

A – LÝ THUYẾT

I – MỘT SỐ CÚ PHÁP THAO TÁC VỚI SQL NÂNG CAO

1 – Cú pháp sql AND & OR

Cách dùng AND và OR để kết nối hai hay nhiều điều kiện trong mệnh đề WHERE. 

Ví dụ:

SELECT * FROM thanhvien WHERE tai_khoan = “admin” AND mat_khau = “admin” 

Ví dụ:

SELECT * FROM thanhvien WHERE id_thanhvien = 2 OR id_thanhvien = 3

2 – Cú pháp sql LIKE

Cách dùng LIKE trong MySQL để tìm kiếm sự tồn tại của một mẫu trong Cột dữ liệu

Cú pháp:

SELECT ten_cot FROM ten_bang WHERE ten_cot LIKE mau_can_tim

Chú ý: Mẫu cần tìm có dạng như sau: “%abcxyz%”, trong đó có hoặc không cần sử dụng %, ký tự % dùng để dại diện cho một ký tự hoặc nhóm ký tự bất kỳ nào đó 

Ví dụ:

SELECT * FROM thanhvien WHERE tai_khoan LIKE "%mi%"

3 – Cú pháp sql ORDER BY

Cách dùng từ khóa ORDER BY để trả về các hàng được sắp xếp theo một thứ tự định trước

a)      Sắp xếp theo thứ tự tăng dần

Cú pháp:

SELECT ten_cot FROM ten_bang ORDER BY ten_cot ASC

 Ví dụ:

SELECT * FROM thanhvien ORDER BY id_thanhvien ASC

b)     Sắp xếp theo thứ tự giảm dần

Cú pháp:

SELECT ten_cot FROM ten_bang ORDER BY ten_cot DESC 

Ví dụ:

SELECT * FROM thanhvien ORDER BY id_thanhvien DESC

4 – Cú pháp sql LIMIT

Cách dùng LIMIT dùng để lựa chọn ra số mẩu tin mong muốn trong Bảng dữ liệu

Cú pháp:

SELECT ten_cot FROM ten_bang LIMIT vi_tri_lay, so_mau_tin_muon_lay

Chú ý: Nếu chúng ta không điền tham số vị trí lấy thì mặc định vị trí này có giá trị là 0, tức là lấy từ mẩu tin đầu tiên từ trên xuống

Ví dụ:

SELECT * FROM thanhvien LIMIT 1, 1

5 – Cú pháp sql RAND()

Cách dùng RAND() để lấy ra số mẩu tin một cách ngẫu nhiên

Cú pháp:

SELECT * FROM ten_bang ORDER BY RAND() LIMIT so_mau_tin_muon_lay

Ví dụ:

SELECT * FROM thanhvien ORDER BY RAND() LIMIT 1, 1 

6 – Cú pháp sql INNER JOIN

Giải thích cách chọn thông tin từ nhiều bảng

Cú pháp:

SELECT ten_cot FROM ten_bang_1 INNER JOIN tean_bang_2  ON ten_bang_1.ten_cot_chung = ten_bang_2.ten_cot_chung 

Ví dụ:

SELECT tai_khoan, mat_khau, ho_ten, gioi_tinh FROM thanhvien INNER JOIN chitiet_thanhvien ON thanhvien.id_thanhvien = chitiet_thanhvien. id_thanhvien 

B – THỰC HÀNH

I – BÀI TẬP THỤC HÀNH

Bài 1:

            Thực hiện việc tạo 2 Bảng danhmuc_sanpham và san pham trong CSDL appleshop với cấu trúc các Bảng như sau

danhmuc_sanpham

id_dm

ten_dm

 

Đồng thời thêm 5 đến 10 thông tin danh mục sản phẩm vào trong Bảng trên

 

sanpham

id_sp

id_dm

ten_sp

gia_sp

anh_mo_ta

chi_tiet_sp

dac_biet

xem_nhieu

 

Đồng thời thêm 5 đến 10 thông tin sản phẩm vào trong Bảng trên

 

Bài 2:

            Lọc toàn bộ thông tin của các sản phẩm trong Bảng sanpham

 

Bài 3:

            Lọc toàn bộ thông tin của các cột ten_sp, gia_sp, chi_tiet_sp trong Bảng sanpham

 

Bài 4:

            Lọc toàn bộ thông tin của tất cả các sản phẩm có giá trị của trường dac_biet = 1

 

Bài 5:

            Lọc toàn bộ thông tin của tất cả các sản phẩm có giá trị của trường dac_biet = 1 và giá lớn hơn 5.000.000

 

Bài 6:

            Lọc toàn bộ thông tin của tất cả các sản phẩm có giá trị của trường ten_sp chứa chuỗi ký tự “phone”

 

Bài 7:

            Lọc toàn bộ thông tin của tất cả các sản phẩm và sắp xếp theo id_sp từ cao xuống thấp

 

Bài 8:

            Lọc toàn bộ thông tin của tất cả các sản phẩm và sắp xếp theo ten_sp từ thấp đến cao

 

Bài 9:

            Lọc ra tất cả thông tin của 2 sản phẩm từ trên xuống

 

Bài 10:

            Chỉ lọc ra tất cả thông tin của 2 sản phẩm bắt đầu từ sản phẩm thứ 2

 

Bài 11:

            Lọc ra tất cả thông tin của 2 sản phẩm ngẫu nhiên trong Bảng sanpham

 

Bài 12:

            Lọc ra thông tin về ten_sp, gia_sp, chi_tiet_sp, ten_dm của tất cả các sản phẩm

 

>>Xem bài trước: Bài 34 - MYSQL PHẦN II - SQL CƠ BẢN


>>Xem bài tiếp theo: BÀi 36 PHP VÀ MYSQL


Bài 34 - MYSQL PHẦN II - SQL CƠ BẢN

 

LAB PHP (CB) 13

LÀM VIỆC VỚI HỆ QUẢN TRỊ CSDL MYSQL

(PHẦN II – MYSQL CƠ BẢN)

A – LÝ THUYẾT

I – LÀM VIỆC VỚI MYSQL CƠ BẢN

1 – Ngôn ngữ SQL

SQL là Ngôn ngữ Truy vấn có Cấu trúc, cho phép chúng ta truy suất một CSDL. Chúng ta có thể sử dụng để truy tìm dữ liệu, chèn các mẩu tin mới, xóa các mẩu tin hặc cập nhật các mẩu tin trong một CSDL được tạo sẵn

 

2 – Làm việc với mã lệnh SQL trong MySQL

Trong phần trước chúng ta đã được làm quen với MySQL thông qua các thao tác Design (tạo nhanh bằng tay) để làm các công việc như:

·         Tạo mới một CSDL

·         Tạo mới một Bảng

·         Thêm mới các mẩu tin vào Bảng dữ liệu

·         Sửa mẩu tin

·         Xóa mẩu tin

·         Xem danh sách các mẩu tin

Trong phần này chúng ta sẽ tìm hiểu cách thức làm các công việc trên thông qua các Hàm, Các phát biểu truy vấn và các Từ khóa trong MySQL. Đó là thực hiện thao tác với MySQL thông qua các lệnh SQL.

Trong MySQL có cung cấp cho chúng ta một khung soạn thảo để chúng ta có thể viết các lệnh SQL nhằm tạo ra các yêu cầu tương tự như các thao tác Design bằng tay mà chúng ta đã được nghiên cứu ở các bài trước

Để bật khung soạn thảo lệnh SQL chúng ta lựa chọn Tab SQL, và sẽ hiển thị khung soạn thảo như sau:



Mỗi một lệnh SQL hoàn chỉnh được viết trong khung soạn thảo được coi là một “Câu Truy vấn SQL”

 

II – CÁC HÀM KHỞI TẠO TRONG MYSQL

1 – Hàm khởi tạo CSDL

Để khởi tạo một CSDL mới chúng ta sử dụng cú pháp SQL như sau:

Cú pháp:

CREATE DATABASE ten_csdl

 

Ví dụ:

CREATE DATABASE hocmysql

 

Chú ý: Trong MySQL thì các Hàm, Mệnh đề, Từ khóa không phân biệt chữ hoa cũng như chữ thường. Nhưng nên sử dụng chữ in hoa để dễ dàng phân biệt chúng với các thành phần khác trong câu Truy Vấn SQL

2 – Hàm khởi tạo Bảng dữ liệu

Để khởi tạo một Bảng dữ liệu mới chúng ta sử dụng cú pháp SQL như sau:

Cú pháp:

CREATE TABLE ten_bang(ten_cot thuoc_tinh(gia_tri), ten_cot thuoc_tinh(gia_tri),…, ten_cot thuoc_tinh(gia_tri), PRIMARY KEY(ten_cot)) 

Ví dụ:

CREATE TABLE thanhvien(id_thanhvien INT(10) AUTO_INCREMENT, tai_khoan VARCHAR(255), mat_khau VARCHAR(255), PRIMARY KEY(id_thanhvien))

 

3 – Hàm thêm một Cột mới vào trong một Bảng cho trước

Để thêm một Cột mới vào trong một Bảng cho trước chúng ta sử dụng cú pháp SQL như sau:

Cú pháp:

ALTER TABLE ten_bang ADD ten_cot thuoc_tinh(gia_tri) AFTER ten_cot

Ví dụ:

ALTER TABLE thanhvien ADD quyen_truy_cap INT(2) AFTER mat_khau

4 – Hàm loại bỏ một Cột đang tồn tại trong một Bảng

Để loại bỏ một Cột trong một Bảng cho trước chúng ta sử dụng cú pháp SQL như sau:

Cú pháp:

ALTER TABLE ten_bang DROP ten_cot

Ví dụ:

ALTER TABLE thanhvien DROP quyen_truy_cap

 

III – CÁC PHÁT BIỂU TRUY VẤN TRONG MYSQL

1 – Truy vấn Thêm mới một mẩu tin INSERT

Để thêm mới một mẩu tin vào Bảng CSDL chúng ta sử dụng cú pháp SQL sau:

Cú pháp:

INSERT INTO ten_bang(ten_cot_1, ten_cot_2, …, ten_cot_n) VALUES(gia_tri_1, gia_tri_2, …, gia_tri_n)

 

Ví dụ:

INSERT INTO thanhvien(tai_khoan, mat_khau) VALUES(“admin”, “123456”)

 

 

2 – Truy vấn Lọc và hiển thị danh sách các mâu tin SELECT

a)      Lọc tất cả các mẩu tin với với thông tin của tất cả các Cột

Để lọc tất cả các mẩu tin với thông tin của tất cả các Cột có trong Bảng chúng ta sử dụng cú pháp SQL sau:

Cú pháp:

SELECT * FROM ten_bang

 

Ví dụ:

SELECT * FROM thanhvien

 

b)     Lọc tất cả các mẩu tin với thông tin của một số Cột nhất định

Để lọc tất cả các mẩu tin với thông tin của một số Cột nhất định trong Bảng chúng ta sử dụng cú pháp SQL sau:

Cú pháp:

SELECT ten_cot_1, ten_cot_2, …, ten_cot_n FROM ten_bang

 

Ví dụ:

SELECT tai_khoan, mat_khau FROM thanhvien

 

c)      Lọc có hạn chế một số mẩu tin theo một tiêu chí nào đó với mệnh đề WHERE

Để lọc hạn chế một số mẩu tin theo một tiêu chí nào đó trong Bảng dữ liệu chúng ta sử dụng cú pháp SQL sau:

Cú pháp:

SELECT * FROM ten_bang WHERE ten_cot = gia_tri

 

Ví dụ:

SELECT * FROM thanhvien WHERE id_thanhvien = 1

 

3 – Truy vấn Sửa nội dung một mẩu tin UPDATE

Để sửa nội dung của một mẩu tin nào đó trong Bảng mà chúng t among muốn, chúng ta sử dụng cú pháp SQL sau:

Cú pháp:

UPDATE FROM ten_bang SET ten_cot_1 = gia_tri ten_cot_2 = gia_tri_2 … ten_cot_n = gia_tri_n WHERE ten_cot = gia_tri

Ví dụ:

UPDATE FROM thanhvien SET tai_khoan = “admin” mat_khau = “vietpro” WHERE id_thanhvien = 1

 

4 – Truy vấn Xóa hoàn toàn một mẩu tin DELETE

Để xóa hoàn toàn một hoặc nhiều mẩu tin theo một tiêu chí nào đó trong Bảng dữ liệu, chúng ta sử dụng cú pháp SQL sau:

Cú pháp:

DELETE FROM ten_bang WHERE ten_cot = gia_tri

 

Ví dụ:

DELETE FROM thanhvien WHERE tai_khoan = “member03”

 

B – THỰC HÀNH

I – BÀI TẬP THỤC HÀNH

Bài 1:

            Tạo mới CSDL có tên là appleshop

 

Bài 2:

            Tạo mới Bảng dữ liệu thanhvien bao gồm 3 trường dữ liệu là id_thanhvien, tai_khoan, mat_khau với trường id_thanhvien làm khóa chính và được đánh số tự động

 

Bài 3:

            Thêm một trường dữ liệu mới là quyen_truy_cap vào sau cột mat_khau của Bảng thanhvien

 

Bài 4:

            Thêm 5 mẩu tin thể hiện 5 thông tin của 5 thành viên trong Bảng thanhvien

 

Bài 5:

            Tiến hành sửa mat_khau của thanhvien cuối trong Bảng thanhvien 

 

Bài 6:

            Tiến hành xóa hoàn toàn tài khoản của thanhvien có id_thanhvien = 3 trong Bảng thanhvien


>>Xem bài trước: Bài 33 - MYSQL PHẦN I - DESIGN CSDL


>>Xem bài tiếp theo: Bài 35 - MYSQL PHẦN III - SQL NÂNG CAO