Giáo trình Hướng dẫn thiết kế web PHP và MySQL (Phần 1)
MỤC LỤC
CƠ SỞ DỮ LIỆU
9
I. Các khái niệm về cơ sở dữ liệu
9
II. Hệ quản trị csdl mysql
10
11
16
III. Tạo và quản lý database với phpmyadmin
IV. Lab database
NGÔN NGỮ SQL
17
17
21
23
I. Các câu lệnh thường dùng
II. CÁC PHÉP TOÁN VÀ HÀM TRONG MYSQL
III. Lab SOL
QUẢN LÝ DATABASE VỚI EMS SQL MANAGER
I. Kết nối đến MySql Server
II. Tạo database
24
24
24
24
25
26
26
27
III. Tạo table trong database
IV. Tạo quan hệ giữa các table
V. Nhập dữ liệu vào bảng
VI. Export dữ liệu
VII. Import dữ liệu vào database
PHP CƠ BẢN
28
28
35
37
39
41
45
49
49
53
54
54
I. Tổng quan
II. Các hàm xử lý chuỗi
III. Các hàm thời gian
IV. Các hàm quản lý file
V. Tạo hàm mới trong php
VI. Array
VII. Lấy thông tin của client và server
VIII. Httpheader
IX. Cookie
X. Session
XI. CÁC HÀM DATABASE
NHÂ
́
̣
– NƠI DUY NHÂ
́
́
̣
̀
̣
C ĐA
̉
̉
̀
̃
́
̣
THÊ
̉
1
XII. Cơ chế đăng nhập, thoát, hạn chế truy cập
56
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
I. Tổng quan
60
60
62
63
II. Tạo class và sử dụng
III. Ví dụ
LAB KẾT NỐI DB
72
72
80
80
81
I. Class db
II. Trình bày dữ liệu theo mẫu 1
III. Trình bày dữ liệu theo mẫu 2
IV. Trình bày dữ liệu theo mẫu 3
PHP ỨNG DỤNG: CHUẨN BỊ CHO WEBSITE ADMIN
I. Chuẩn bị table users
83
83
83
83
85
85
87
88
88
II. Chuẩn bị folder chứa các trang web trong phần admin
III. Tạo trang layout
IV. Tạo class quản trị
V. Tạo chức năng đăng nhập
VI. Tạo chức năng kiểm tra đăng nhập, kiểm tra admin
VII. Tạo chức năng thoát
VIII. Quản trị dữ liệu trong bảng
QUẢN TRỊ LOẠI TIN
I. Tạo trang thêm loại tin
II. Tạo trang xóa loại tin
III. Tạo trang chỉnh loại tin
IV. Tạo trang xem loại tin
V. Bài toán phân trang dữ liệu
90
90
93
95
97
101
QUẢN TRỊ TIN TỨC
I. Tạo trang xem danh sách tin
II. Tạo trang xóa tin
104
104
108
109
119
III. Tạo trang thêm tin
IV. Tạo trang chỉnh 1 tin
NHÂ
́
̣
– NƠI DUY NHÂ
́
́
̣
̀
̣
C ĐA
̉
̉
̀
̃
́
̣
THÊ
̉
2
V. Tạo trang ẩn hiện 1 tin
122
124
VI. Tạo trang chuyển trạng thái nổi bật của 1 tin
LAB TẠO TRANG CHỦ SITE TIN TUC
I. Tạo class tin
127
127
127
II. Tạo trang layout
TIN NỔI BẬT & TIN XEM NHIỀU
I. Tạo file noibat_xemnhieu.php
II. Tin xem nhiều
130
130
131
132
III. Tin nổi bật
TIN MỚI TRONG TỪNG THỂ LOẠI
I. Định nghĩa hàm TinMoiTrongTheLoai
II. Tạo file tinmoi.php
135
135
135
136
137
137
III. Định dạng CSS
IV. Nhúng vào trang chủ
V. Bổ sung
BÌNH CHỌN
138
138
139
140
I. Định nghĩa các hàm
II. Tạo form hiện câu hỏi và phương án
III. Tạo trang hiện kết quả bình chọn
FORM TÌM, VIDEO, QUẢNG CÁO
I. Form tìm kiếm
143
143
144
144
144
145
II. Video
III. div Info
IV. Quảng cáo
V. Form tìm nâng cao
HIỂN THỊ CHI TIẾT MỘT TIN
149
149
151
151
I. Phần 1: Tạo trang hiển thị chi tiết tin:
II. Phần 2: Nhúng vào trang chủ
III. Phần 3: Hiện số lần xem, ngày đăng, bản in , tin cũ hơn, mới hơn
NHÂ
́
̣
– NƠI DUY NHÂ
́
́
̣
̀
̣
C ĐA
̉
̉
̀
̃
́
̣
THÊ
̉
3
THANH MENU
I. Chép folder
155
155
155
155
155
155
155
II. Tạo file menu.php
III. Lấy các loại tin trong từng thể loại và hiển thị (sau tag a)
IV. Chèn menu.js, menu.css
V. Thêm div copyright ở sau cùng
VI. Đưa vào trang chủ:
LAB HIỂN THỊ CÁC TIN TRONG 1 LOẠI
I. Định nghĩa hàm
156
156
156
158
II. Tạo file tintrongloai.php
III. Đưa vào trang chủ
LAB XỬ LÝ TÌM KIẾM
159
159
159
160
I. Chỉnh file formtim.php và chỉnh các tham số
II. Định nghĩa hàm TimKiem
III. Tạo file ketquatimkiem.php
TẠO TIÊU ĐỀ CHO CÁC TRANG
I. Mở file classTin.php và định nghĩa hàm sau:
II. Mở file home.php
163
163
164
.HTACCESS
165
165
165
166
168
168
I. Chuẩn bị
II. Giả địa chỉ của 1 tin
III. Giả địa chỉ của loại tin
IV. Giả địa chỉ cho tìm kiếm
V. Các chỉ thị hữu ích khác trong file htaccess
LAB TẠO WEBSITE ĐA NGÔN NGỮ
I. Database
170
170
171
II. Phần xử lý interface
CÁC KỸ THUẬT TĂNG TỐC WEBSITE
178
I. Giảm bớt các request
178
NHÂ
́
̣
– NƠI DUY NHÂ
́
́
̣
̀
̣
C ĐA
̉
̉
̀
̃
́
̣
THÊ
̉
4
II. Sử dụng Content Delivery Network(CDN)
III. Nén html
178
178
178
179
179
179
IV. Cache ở client dùng htaccess
V. Tối ưu các MySQL Query
VI. Opcode caching
VII. Server file caching
ĐĂNG KÝ THÀNH VIÊN
183
183
185
185
186
190
190
193
194
I. Tạo form
II. Định dạng CSS
III. Xử lý khi submit
IV. Định nghĩa hàm DangKyThanhVien:
V. Lưu vào db
VI. Kích hoạt tài khoản
VII. Kiểm tra Username bằng Ajax
VIII. Trang đăng ký thành công
CAPTCHA IMAGE
195
195
196
I. Tạo hình
II. Đưa hình captcha vào form đăng ký
GỞI PASSWORD
197
ĐỔI PASSWORD
198
198
199
199
199
199
201
201
I. Tạo form
II. Code kiểm tra login (ở đầu trang): H
III. Xử lý đổi pass
IV. Hiện thông báo lỗi
V. Định nghĩa hàm đổi pass
VI. Hiện lại các giá trị trong form khi submit
VII. Tạo trang doipassthanhcong.php
HITCOUNTER
203
203
203
I. Chuẩn bị
II. Tạo file hiện số đếm
NHÂ
́
̣
– NƠI DUY NHÂ
́
́
̣
̀
̣
C ĐA
̉
̉
̀
̃
́
̣
THÊ
̉
5
III. Chèn số đếm vào trang php:
205
GỬI MAIL DÙNG PHP MAILER
I. Tạo form gửi mail
206
206
206
207
207
207
208
II. Định dạng
III. Bật module mã hoá dữ liệu
IV. Chép thư viện PHP Mailer vào site
V. Viết hàm gửi mail
VI. Code xử lý
DOWNLOAD FILE
210
210
210
211
I. Chuẩn bị
II. Tạo trang web để down 1 file
III. Tạo trang web để hiện list dữ liệu từ database
UPLOAD FILE
212
212
215
IV. Tạo form upload
V. Hiện list dữ liệu từ db
CHUẨN BỊ SITE BÁN ĐIỆN THOẠI
I. Database
218
218
218
222
II. Tạo các table
III. Chuẩn bị/ dự định tạo các file/folder
SHOW SẢN PHẨM MỚI
224
I. Tạo file spmoi.php
224
TRANG LAYOUT
226
XÂY DỰNG GIỎ HÀNG
I. Hiện giỏ hàng – tóm tắt
II. Hiện giỏ hàng readonly:
III. Hiện giỏ hàng – update
228
232
233
236
ĐƯA GIỎ HÀNG VÀO TRANG CHỦ
240
I. Hiện giỏ hàng tóm tắt khi user nhắp nút đặt hàng
240
NHÂ
́
̣
– NƠI DUY NHÂ
́
́
̣
̀
̣
C ĐA
̉
̉
̀
̃
́
̣
THÊ
̉
6
II. Hiện giohang_update
FORM MUA HÀNG
241
244
244
244
245
247
248
I. Tạo file muahang.php
II. Hiện thông tin user đang đăng nhập
III. Hiện form thông tin người nhận
IV. Hiện các phương thức thanh toán và giao hàng:
V. Lồng trang muahang.php vào trang chủ
XỬ LÝ MUA HÀNG
249
249
249
252
256
I. Tạo file xulymuahang.php
II. Lưu đơn hàng và báo lỗi nếu có
III. Lưu chi tiết đơn hàng , hiện thông báo, hiện nút thanh toán
IV. Lồng trang xulymuahang vào trang chủ
YÊU CẦU SINH VIÊN THỰC HIỆN TẠI NHÀ
I. Tạo trang hiện chi tiết 1 sản phẩm
II. Tạo trang hiện các sản phẩm trong 1 loại
III. Thực hiện chức năng tìm kiếm
257
257
257
257
257
257
257
IV. Nhúng icon yahoo chat vào trang chủ
V. Làm form login trên trang chủ
VI. Làm phần quản trị
PHẦN BỔ SUNG:
258
ĐẾM SỐ NGƯỜI XEM TRONG TỪNG MỤC
I. Tạo table
258
258
258
260
260
262
262
II. Định nghĩa hàm lưu thông tin
III. Gọi hàm LuuThongTin
IV. Tạo hàm đếm số user đang xem trong từng loại tin , trong từng thể loại
V. Thống kê số người đang xem từng loại
VI. Hiện thông tin tổng kết
ĐĂNG NHẬP POPUP
264
I. Tạo form đăng nhập
264
NHÂ
́
̣
– NƠI DUY NHÂ
́
́
̣
̀
̣
C ĐA
̉
̉
̀
̃
́
̣
THÊ
̉
7
II. Tạo link đăng nhập:
265
265
267
269
269
III. Nạp form đăng nhập
IV. Thực hiện trang xử lý đăng nhập
V. Tạo file thoat.php (Mời bạn tự làm)
VI. Hiện lời chào khi user nạp lại trang
NHÂ
́
̣
– NƠI DUY NHÂ
́
́
̣
̀
̣
C ĐA
̉
̉
̀
̃
́
̣
THÊ
̉
8
CƠ SỞ DỮ LIỆU
I. Các khái niệm về cơ sở dữ liệu
1. Dữ liệu
Là các thông tin cần lưu trữ để sử dụng lại
1. Cơ sở dữ liệu (database)
Là các dữ liệu được lưu trữ có tổ chức
2. Hệ quản trị cơ sở dữ liệu:
Là các chương trình giúp quản lý và tổ chức cơ sở dữ liệu. Ví dụ: MySQL, MSSQL, …
3. Table:
Mỗi database chứa nhiều table. Mỗi table là 1 bảng dữ liệu, chứa một mảng thông tin nào đó.
Mỗi table có 1 tên, gồm nhiều cột nhiều hàng.
Mỗi dòng của table là 1 đơn vị dữ liệu cần lưu trữ, ví dụ như 1 tin, 1 câu hỏi bình chọn, 1 user.
Mổi dòng gọi là 1 record hay mẫu tin.
Mỗi cột của table gọi là 1 field hay trường. Dữ liệu trong 1 cột thuộc 1 kiểu xác định nào đó.
4. Khoá chính
Là cột đặc biệt trong table, chứa thông tin để phân biệt từng record với nhau trong table.
Khoá chính có thể gồm nhiều field nhưng thường là 1 field.
Field làm khoá chínnh nên có kiểu số, tăng tự động.
5. Khoá ngoại
Là cột trong 1 table mà dữ liệu trong nó là tham khảo đến khoá chính ở bảng khác. Trong 1
table có thể có nhiều khoá ngoại, mỗi khoá ngoại.
6. Quan hệ giữa hai bảng
Hai bảng có quan hệ với nhau khi dữ liệu trong chúng là bổ sung cho nhau. Có ba loại quan hệ
thường gặp:
Quan hệ 1-1: 1 record bên bảng A có quan hệ với 1 record bên bảng B và ngược lại.
Quan hệ 1-nhiều: 1 record bên bảng A có quan hệ với nhiều record bên bảng B.
Quan hệ nhiều-nhiều:1 record ở bảng A có quan hệ với nhiều record bên bảng B & ngược lại.
NHÂ
́
̣
– NƠI DUY NHÂ
́
́
̣
̀
̣
C ĐA
̉
̉
̀
̃
́
̣
THÊ
̉
9
I. Hệ quản trị csdl mysql
-
Giới thiệu
triển rất ưa chuộng trong quá trình phát triển ứng dụng. Vì MySQL là cơ sở dữ liệu tốc độ cao,
ổn định và dễ sử dụng, hoạt động trên nhiều hệ điều hành,.
MySQL miễn phí hoàn toàn. Có nhiều phiên bản cho các hệ điều hành khác nhau:
Windows, Linux, Mac OS, Unix, SGI Irix,Solaris, SunOS, ...
-
Storage Engine
Trong MySQL, có nhiều cách tổ chức lưu dữ liệu cho các table : MyISAM , InnoDB,
Memory,…
MyISAM là storage engine mặc định của MySQL. Mỗi table lưu theo kiểu MyISAM sẽ được
lưu trên 3 file : tableName.FRM (chứa định dạng của table), tableName.MYD (lưu dữ liệu),
tableName.MYI (lưu index) . MyISAM hỗ trợ full-text searches còn InnoDB thì không
InnoDB là engine hỗ trợ transaction (commit, rollback, and crash-recovery capabilities) để bảo
vệ dữ liệu. InnoDB hỗ trợ relationship còn MyISAM thì không.
-
Các kiểu dữ liệu trong MySql
Kiểu chuỗi
•
CHAR và VARCHAR: Lưu text, trong đó char có độ dài cố định còn varchar có độ dài
không cố định.
• BINARY và VARBINARY: Gần giống như Char và Varchar nhưng chứa những
binary strings (Char, Varchar là none binary string). Điều này có nghĩa là không có
Character set, do đó việc sort và compare sẽ chỉ dựa trên giá trị các byte được lưu. Độ
dài của chuỗi cũng tính bằng số byte (Char, varchar tính bằng số ký tự)
•
BLOG và TEXT: chứa text có độ dài lớn.
BLOB values chứa các binary strings (byte strings). Chúng không có character set, việc
strings (character strings). Chúng có character set, việc sorting và comparison sẽ dựa
theo collation của character set được dùng
Kiểu Ngày tháng
•
DateTime: Lưu dữ liệu kiểu ngày giờ. MySql hiển thị ngày giờ theo kiểu 'YYYY-MM-
DD HH:MM:SS' có giá trị từ '1000-01-01 00:00:00' đến '9999-12-31 23:59:59'.
NHÂ
́
̣
– NƠI DUY NHÂ
́
́
̣
̀
̣
C ĐA
̉
̉
̀
̃
́
̣
THÊ
̉
10
• Date: Lưu dữ liệu kiểu ngày. MySql hiển thị ngày theo kiểu 'YYYY-MM-DD' , có giá
trị từ 1000-01-01 đến 9999-12-31
• TimeStamp: Là 1 số nguyên diễn tả 1 thời điểm là số giây tính từ giây đầu tiên của
năm 1970 đến thời điểm hiện tại. Timestamp có giá trị trong khoảng từ '1970-01-01
00:00:01' đến '2038-01-19 03:14:07'
•
•
Time: Lưu giờ. Hiển thị theo kiểu 'HH:MM:SS'
Year: Lưu năm
Kiểu số
Type
Bytes
Minimum Value
Maximum Value
(Signed/Unsigned)
127
(Signed/Unsigned)
1
2
3
4
8
-128
0
255
-32768
32767
0
65535
-8388608
8388607
0
16777215
-2147483648
2147483647
4294967295
9223372036854775807
18446744073709551615
0
-9223372036854775808
0
II. Tạo và quản lý database với phpmyadmin
1. Tạo Database (CSDL – Cơ Sở Dữ Liệu)
B1. Nhắp Home
B2. Trong mục Create new database, khai báo:
. Ô trên: đặt tên CSDL
. Ô dưới: chọn utf8_general_ci (thể lưu được tiếng việt)
B3. Nhắp Create
Ví dụ: Tạo database tên tintuc
NHÂ
́
̣
– NƠI DUY NHÂ
́
́
̣
̀
̣
C ĐA
̉
̉
̀
̃
́
̣
THÊ
̉
11
7. Tạo Table (bảng)
B1. Chọn database
B2. Mục Name: khai báo tên table muốn tạo (theloai)
Mục Number of fields: khai báo số field trong table
B3. Nhắp nút Go
B5. Khai báo các field trong table
B6. Nhắp nút Save
NHÂ
́
̣
– NƠI DUY NHÂ
́
́
̣
̀
̣
C ĐA
̉
̉
̀
̃
́
̣
THÊ
̉
12
8. Thêm dữ liệu vào Table (bảng)
-
-
Chọn table rồi nhắp link Insert (xem hình)
Nhập dữ liệu rồi nhắp nút Go
Ví dụ: Thêm 2 record vào table theloai như sau:
9. Xem dữ liệu trong Table (bảng)
-
Chọn table muốn xem dữ liệu rồi nhắp Browse (xem hình) à Mỗi lần hiện 30 records
10. Xóa / Sửa dữ liệu trong Table (bảng)
Chọn table muốn xóa sửa (ví dụ theloai) rồi nhắp link Browse
NHÂ
́
̣
– NƠI DUY NHÂ
́
́
̣
̀
̣
C ĐA
̉
̉
̀
̃
́
̣
THÊ
̉
13
. Sửa record: Nhắp nút Edit (cây viết) trên dòng chứa record (xem hình)
. Xóa record : Nhắp nút Drop (dấu chéo) trên dòng chứa record (xem hình)
11. Sửa cấu trúc Table
-
Chọn table rồi nhắp nhắp link Structure
. Chỉnh field: Nhắp nút Change
. Xóa field : Nhắp nút Drop (dấu chéo)
. Thêm field : Nhắp nút Go trong mục Add
Ví dụ: Sửa chiều dài của field TenTL trong table theloai từ 255 xuống còn 100.
12. Đổi tên Table
-
Chọn table rồi nhắp link Operations
NHÂ
́
̣
– NƠI DUY NHÂ
́
́
̣
̀
̣
C ĐA
̉
̉
̀
̃
́
̣
THÊ
̉
14
-
Mục Rename table to: gõ tên mới rồi nhắp nút Go
Ví dụ: Đổi tên table theloai thành theloaitin
13. Xóa Table
Chọn table rồi nhắp link Drop
14. Import dữ liệu
-
-
Chọn database rồi nhắp link Import
Nhắp nút Browse để chọn file .sql rồi nhắp nút Go
15. Export dữ liệu
-
-
Chọn database rồi nhắp link Export
Mục Export: chọn các table cần export
NHÂ
́
̣
– NƠI DUY NHÂ
́
́
̣
̀
̣
C ĐA
̉
̉
̀
̃
́
̣
THÊ
̉
15
-
-
-
Chọn kiểu file là .SQL
Chọn mục Save as file rồi nhắp nút GO
Nhắp nút Save è Khai báo: tên file, địa chỉ lưu è Save
16. Xoá Database
Nhắp tên database è Nhắp link Drop
III. Lab database
Mời bạn mở file LabDatabase lên để làm
NHÂ
́
̣
– NƠI DUY NHÂ
́
́
̣
̀
̣
C ĐA
̉
̉
̀
̃
́
̣
THÊ
̉
16
NGÔN NGỮ SQL
I. Các câu lệnh thường dùng
1. Tạo database mới
CREATE DATABASE TênDB [CHARACTER SET=char_name] [COLLATE =col_name]
Ví dụ: CREATE DATABASE tin CHARACTER SET=utf8 COLLATE =utf8_general_ci;
17. Xoá database
DROP DATABASE [IF EXISTS] db_name
Ví dụ: DROP DATABASE tin;
18. Tạo table
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
(col_name column_definition,...)
[table_options],
column_definition:
data_type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]
[UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'string']
table_options:
ENGINE [=] engine_name | AUTO_INCREMENT [=] value | CHARACTER SET [=] charset_name
Ví dụ:
CREATE TABLE bandocykien (
`idYKien` int(11) NOT NULL auto_increment,
`idTin` int(11) NOT NULL default '0',
`Ngay` datetime NOT NULL default '0000-00-00',
`NoiDung` text NOT NULL,
NHÂ
́
̣
– NƠI DUY NHÂ
́
́
̣
̀
̣
C ĐA
̉
̉
̀
̃
́
̣
THÊ
̉
17
`TieuDe` varchar(255) default NULL,
PRIMARY KEY (`idYKien`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
19. Xoá table
DROP TABLE [IF EXISTS] tbl_name
Ví dụ:
DROP TABLE bandocykien;
20. Chèn record vào table
INSERT INTO tbl_name VALUES (value1, value2,…);
INSERT INTO tbl_name (field1, field2,…) VALUES (val1, val2,…);
Ví dụ:
INSERT INTO theloai VALUES ('', 'JavaScript',1, 0);
INSERT INTO theloai (ThuTu, AnHien,TenTL) VALUES (1, 1,'PHP');
21. Xoá record trong table
DELETE FROM tbl_name [WHERE condition]
Ví dụ:
DELETE FROM theloai WHERE idTL=100;
22. Chỉnh các record trong table
UPDATE tbl_name SET Field1=value1, Field2=value2,… [WHERE condition]
Ví dụ:
UPDATE theloai SET TenTL='XML' WHERE idTL=50;
23. Lấy dữ liệu từ table
SELECT * | colname1, colname2,
NHÂ
́
̣
– NƠI DUY NHÂ
́
́
̣
̀
̣
C ĐA
̉
̉
̀
̃
́
̣
THÊ
̉
18
FROM tbl_name1, table_name2
WHERE DieuKienKetBang | DieuKienLoc
GROUP BY colname1, colname2
HAVING DieuKienLocTheoNhom
ORDER BY colname1 ASC|DESC, colname2 ASC|DESC
LIMIT offset, rowcount
Ví dụ:
SELECT idTin, Ngay, TieuDe FROM Tin WHERE Ngay=curdate();
SELECT idTin, Ngay,TieuDe FROM Tin ORDER BY Ngay DESC LIMIT 0,10;
SELECT idTin, SoLanXem,TieuDe FROM Tin WHERE idLT=9 ORDER BY SoLanXem
DESC LIMIT 0,10;
SELECT idUser, count(idTin) as SoTin FROM tin GROUP BY idUser HAVING
count(idTin) >=20
SELECT idTin, Ngay, TieuDe FROM Tin WHERE TieuDe LIKE 'C%'
Ví dụ 2: select có kết bảng
SELECT idTin, Ngay, TieuDe , Tin.idLT, Ten
FROM Tin, LoaiTin
WHERE Tin.idLT= LoaiTin.idLT AND TieuDe like '%a%'
ORDER BY Ngay DESC, idTin DESC
Ví dụ 3: select lồng nhau
SELECT Ngay, TieuDe FROM tin WHERE Ngay >= All (SELECT Ngay FROM Tin)
Ví dụ 4: Lấy dữ liệu ngẫu nhiên
select idTin, TieuDe FROM tin WHERE idLT=25 ORDER BY rand() LIMIT 0,3;
24. Một số ví dụ câu lệnh SQL có thống kê
NHÂ
́
̣
– NƠI DUY NHÂ
́
́
̣
̀
̣
C ĐA
̉
̉
̀
̃
́
̣
THÊ
̉
19
a. Đếm số lượng sản phẩm trong từng loại
SELECT loaisp.idLoai, loaisp.TenLoai, count(idSP) as SoSP
FROM loaisp, sanpham
WHERE loaisp.idLoai=sanpham.idLoai
GROUP BY loaisp.idLoai, loaisp.TenLoai
b. Đếm số lượng sản phẩm trong từng chủng loại
SELECT chungloai.idCL, chungloaisp.TenCL, count(idSP) as SoSP
FROM chungloai, sanpham
WHERE chungloai.idCL=sanpham.idCL
GROUP BY chungloai.idCL, chungloai.TenCL
c. Thống kê từng idDH, Tổng Số Lượng, Tổng Tiền
SELECT idDH, sum (soluong) as TongSoLuong, sum(soluong*gia) as TongTien
FROM donhangchitiet
GROUP BY idDH
d. Thống kê từng idDH, Ngay, Tổng Số Lượng, Tổng Tiền, sắp theo Ngày giảm dần. Chỉ
hiện những đơn hàng chưa giao hàng.
SELECT donhang.idDH, ThoiDiemDatHang as Ngay, sum (soluong) as
TongSoLuong, sum(soluong*gia) as TongTien
FROM donhangchitiet, donhang
WHERE donhangchitiet.idDH=donhang.idDH AND donhang.TinhTrang=0
GROUP BY idDH, Ngay
ORDER BY Ngay DESC
NHÂ
́
̣
– NƠI DUY NHÂ
́
́
̣
̀
̣
C ĐA
̉
̉
̀
̃
́
̣
THÊ
̉
20
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Hướng dẫn thiết kế web PHP và MySQL (Phần 1)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
giao_trinh_huong_dan_thiet_ke_web_php_va_mysql_phan_1.pdf

