Tải bản đầy đủ (.doc) (37 trang)

Xây dựng website bán sách bằng ngôn ngữ lập trình php và MySQL

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.25 MB, 37 trang )

Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
LỜI MỞ ĐẦU
Trong những năm gần đây, công nghệ thông tin không ngừng phát triển một
cách mạnh mẽ và hiện đại. Sự ra đời của công nghệ thông tin làm phong phú bộ mặt
xã hội, đời sống con người được nâng cao rõ rệt, đóng góp to lớn cho sự phát triển của
nhân loại. Với xu thế toàn cầu hoá nền kinh tế thế giới, đặc biệt là nhu cầu trao đổi
hàng hoá của con người ngày càng tăng cả về số lượng và chất lượng, nhu cầu sử dụng
Internet ngày càng nhiều và các hình thức kinh doanh trên mạng ngày càng đa dạng và
phong phú rất được nhiều người sử dụng và ưa chuộng. Vì vậy, nhiều cửa hàng sách đã
áp dụng phương pháp bán hàng qua mạng để khách hàng dễ dàng tìm kiếm thông tin
mà không cần tốn nhiều thời gian và chi phí.
Cửa hàng sách TTV ra đời mang thông tin đến với mọi người với mục đích
chính là giúp khách hàng có thể đặt mua sách qua mạng một cách nhanh chóng, tiện
lợi và tiết kiệm chi phí. Khách hàng đến với chúng tôi có thể lựa chọn một kho báu
kiến thức khổng lồ bao gồm hàng ngàn cuốn sách từ sách giáo khoa cho đến sách khoa
học cơ bản như sách lịch sử, sách địa lý, sách thiên văn học, sách y học, sách ngoại
ngữ v.v. những cuốn sách bán chạy nhất hiện nay, sách được báo chí giới thiệu, sách
kinh tế, sách học làm người, sách danh nhân, sách tâm lý nghệ thuật sống.v.v.
Từ những vấn đề đặt ra ở trên, được sự đồng ý và sự hướng dẫn tận tình của cô
giáo Võ Hoàng Phương Dung, nhóm chúng em đã chọn đề tài: “web bán sách trực
tuyến”.
Chỉ trong thời gian ngắn học tập và rèn luyện tại trường CĐ công nghệ thông
tin hữu nghị Việt - Hàn. Em đã được các thầy cô trang bị các kiến thức cơ bản về môn
học, đề tài đã cơ bản hoàn thành, song vì thời gian và trình độ hiểu biết còn hạn hẹp
nên không thể tránh khỏi những thiếu sót. Vì vậy, em rất mong được sự giúp đỡ, đóng
góp của quý thầy cô để nội dung của đồ án được hoàn thiện hơn.
Em xin chân thành cảm ơn !
Đồ án lập trình web i
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
MỤC LỤC
LỜI MỞ ĐẦU i


MỤC LỤC ii
DANH MỤC BẢNG BIỂU v
DANH MỤC HÌNH vi
CHƯƠNG I. TỔNG QUAN VỀ PHP VÀ MYSQL 1
1.1.TỔNG QUAN VỀ PHP 1
i.Giới thiệu về ngôn ngữ kịch bản php 1
1.1.1.1.Php là gì? 1
1.1.1.2.Đặc điểm của file php: 1
1.1.1.3.Lịch sử phát triển: 1
1.1.1.4.Quá trình thông dịch trang php 2
1.1.1.5.Ưu điểm của Php: 3
ii.Cú pháp: 3
iii.Các kiểu dữ liệu: 4
iv.Biến: 7
v.Các phép toán: 7
1.Toán tử gán: 7
2.Toán tử số học: 7
3.Toán tử so sánh: 8
4.Toán tử logic: 8
1.2.TỔNG QUAN VỀ MYSQL: 9
1.2.1.Giới thiệu về MySQL: 9
1.2.2.Đặc điểm: 9
1.2.3.Tạo cơ sở dữ liệu và người dùng: 10
1.2.3.1.Kết nối và tạo cơ sở dữ liệu: 10
1.2.3.2.Quản lý người dùng: 10
1.2.3.2.1.Cấp quyền cho người dùng: 10
1.2.3.2.2.Xóa quyền hoặc xóa tài khoản người dùng: 10
1.2.4.Các kiểu dữ liệu trong Mysql: 10
1.2.5.Các câu lệnh SQL: 11
1.2.5.1.Câu lệnh SELECT 11

Đồ án lập trình web ii
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
1.2.5.2.Câu lệnh Insert 12
1.2.5.3.Câu lệnh Update 12
1.2.5.4.Câu lệnh Delete 13
1.2.5.5.Câu lệnh Join 13
1.2.6.Các hàm trong MySQL 13
1.2.6.1.Các hàm phát biểu trong Group by 13
1.2.6.2.Các hàm về xử lý thời gian 14
1.2.6.3. Các hàm về xử lý số học 14
CHƯƠNG II. KHẢO SÁT VÀ PHÂN TÍCH HỆ THỐNG 15
2.1.QUY TRÌNH NGHIỆP VỤ 15
2.1.1.Quy trình bán hàng 15
2.1.2.Quy trình mua hàng 16
2.2.YÊU CẦU HỆ THỐNG 16
2.2.1.Yêu cầu hệ thống: 16
2.2.2.Yêu cầu chức năng: 16
2.2.2.1.Quản lý người dùng: 16
2.2.2.2.Chức năng quản lý sách: 17
2.2.2.3.Tìm kiếm: 17
2.2.3.Yêu cầu phi chức năng: 17
2.3.XÂY DỰNG BFD – BIỂU ĐỒ PHÂN RÃ CHỨC NĂNG 18
CHƯƠNG 3. PHÂN TÍCH VÀ THIẾT KÊ CƠ SỞ DỮ LIỆU 19
3.1. PHÂN TÍCH 19
3.1.1. Danh sách các bảng và quan hệ 19
3.1.2. Mô tả chi tiết các bảng 19
3.2. THIẾT KẾ CƠ SỞ DỮ LIỆU TRÊN PHPMYADMIN 20
CHƯƠNG 4. THIẾT KẾ GIAO DIỆN 22
4.1. GIAO DIỆN NGƯỜI DÙNG 22
4.1.1. Giao diện trang chủ (index.php) 22

22
4.1.2. Giao diện trang giới thiệu 22
4.1.3. Giao diện trang sách mới 23
4.1.4. Giao diện trang Liên hệ 24
Đồ án lập trình web iii
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
4.1.5. Giao diện trang đăng ký 24
4.1.6. Giao diện trang đăng nhập 25
4.2. GIAO DIỆN ADMIN 25
4.2.1. Giao diện đăng nhập 25
4.2.2. Giao diện trang xem thành viên 25
4.2.3. Giao diện chức năng chỉnh sửa thông tin thành viên 26
4.2.4. Giao diện xóa người dùng 26
4.2.5. Giao diện chức năng “Thêm người dùng” 27
4.2.6. Giao diện trang xem sách( viewbook.php) 27
4.2.7. Giao diện trang sửa sách 28
4.2.8. Giao diện trang thêm sách 28
4.2.9. Giao diện trang thêm danh mục 29
4.2.10. Giao diện trang xem danh mục 29
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 30
TÀI LIỆU THAM KHẢO 31
Đồ án lập trình web iv
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
DANH MỤC BẢNG BIỂU
Bảng 3.1: Danh sách các bảng và quan hệ 19
Bảng 3.2. Mô tả chi tiết bảng user 19
Bảng 3.3: Mô tả chi tiết bảng danh mục 19
Bảng 3.4: Mô tả chi tiết bảng danh mục sách 19
Đồ án lập trình web v
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung

DANH MỤC HÌNH
Hình 1.1: Quá trình thông dịch trong php 2
Hình 2.1: Quy trình bán hàng 15
Hình 2.2: Biểu đồ BFD – Phân rã chức năng 18
Hình 3.1: Bảng user trên phpMyAdmin 20
Hình 3.2: bảng danh mục trên phpMyAdmin 20
Hình 3.3: Bảng danh mục sách trên phpMyAdmin 21
Hình 4.1. Giao diện trang chủ 22
Hình 4.2: Giao diện trang giới thiệu 23
Hình 4.3: Giao diện trang sách mới 23
Hình 4.4: Giao diện trang liên hệ 24
Hình 4.5: Giao diện trang đăng ký 24
Hình 4.6: Giao diện trang đăng nhập 25
Hình 4.7: Giao diện trang đăng nhập của Admin 25
Hình 4.8: Giao diện trang xem thành viên 26
Hình 4.9: Giao diện trang chỉnh sửa người dùng 26
Hình 4.10: Giao diện trang xóa username 26
Hình 4.11: Giao diện trang thêm người dùng 27
Hình 4.12: Giao diện trang xem sách 27
Hình 4.13 : Giao diện trang sửa sách 28
Hình 4.14: Giao diện trang thêm sách 28
Hình 4.15: Giao diện trang thêm danh mục 29
Hình 4.16: Giao diện trang xem danh mục sách 29
Đồ án lập trình web vi
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
CHƯƠNG I. TỔNG QUAN VỀ PHP VÀ MYSQL
1.1. TỔNG QUAN VỀ PHP
i. Giới thiệu về ngôn ngữ kịch bản php
1.1.1.1. Php là gì?
Php được viết tắt của chữ Personal Home Page là ngôn ngữ script trên server

chạy trên phía máy chủ (Server side) giống như các server script khác như: asp, jsp,
cold fusion,… Nó cho phép dễ dàng xây dựng các trang web động, mà tương tác được
với mọi cơ sở dữ liệu như: Informix, MySQL, PostgreSQL, Oracle, Sybase, SQL
Server,…
Php còn là phần mềm mở, dùng cho mục đích tổng quát. Thích hợp với Web và
có thể dễ dàng nhúng vào trang HTML. Mã PHP có thể thực thi trên Webserver để tạo
ra mã HTML và xuất ra trình duyệt web theo yêu cầu của người sử dụng.
1.1.1.2. Đặc điểm của file php:
Php có thể chạy trên các môi trường (platforms) khác nhau như: Windows,
Linux, Unix… Nó còn có khả năng tương thích với hầu hết các servers đang sử dụng
hiện nay như: Apache, IIS
Ngoài ra các file PHP trả về kết quả cho trình duyệt là một trang thuần HTML,
và các file PHP có thể chứa văn bản (Text), các thẻ HTML (HTML tags) và các đoạn
mã kịch bản (Script).
Phần lớn các file PHP có phần mở rộng là: .php, .php3, . Phpml và lưu ý rằng,
từ phiên bản 4.0 trở về sau mới hỗ trợ session.
1.1.1.3. Lịch sử phát triển:
Dưới đây là một số mốc phát triển của Php:
Năm 1995, phiên bản đầu tiên ra đời có tên là PHP/FI được viết bởi nhà phát
triển phần mềm Rasmus Lerdorf.
PHP/FI, viết tắt từ "Personal Home Page/Forms Interpreter", bao gồm một số
các chức năng cơ bản của PHP ngày nay.
Năm 1997, phiên bản PHP/FI 2.0 ra đời nhưng chỉ được công bố dưới dạng các
bản beta. Đến tháng 11 năm 1997 mới chính thức được công bố.
Năm 1998, phiên bản PHP 3.0 được chính thức công bố.
Andi Gutmans và Zeev Suraski tiếp tục hoàn tất phần lõi nhằm cải tiến PHP
3.0.
Đồ án lập trình web 1
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
Tháng 05/2000, phiên bản PHP 4.0 với hàng loạt các tính năng mới bổ sung, đã

chính thức được công bố.
29/06/2003, phiên bản PHP 5 Beta 1 đã chính thức được công bố.
Tháng 10/2003, phiên bản Beta 2 ra mắt với sự xuất hiện của hai tính năng rất
được chờ đợi: Iterators, Reflection nhưng namespace một tính năng gây tranh cãi khác
đã bị loại khỏi mã nguồn.
Ngày 21/12/2003: phiên bản PHP 5 Beta 3 đã được công bố.
Ngày 13/07/2004, phiên bản PHP 5 bản chính thức đã ra mắt sau một chuỗi khá
dài các bản kiểm tra thử bao gồm Beta 4, RC 1, RC2, RC3.
Ngày 14/07/2005, phiên bản PHP 5.1 Beta 3 được PHP Team công bố đánh dấu
sự chín muồi mới của PHP với sự có mặt của PDO.
Hiện nay, phiên bản tiếp theo của PHP đang được phát triển, PHP 6 bản sử dụng
thử đã có thể được download tại địa chỉ .
1.1.1.4. Quá trình thông dịch trang php
Php là kịch bản trình chủ được chạy trên nền php Engine, cùng với ứng dụng
Web Server để quản lý chúng.
Khi trang php được gọi, Web Server triệu gọi php Engine để thông dịch, dịch
trang php và trả về kết quả cho người sử dụng là một trang thuần HTML
Ta có mô hình như sau:
Hình 1.1: Quá trình thông dịch trong php
Đồ án lập trình web 2
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
1.1.1.5. Ưu điểm của Php:
Có nhiều lý do khiến cho việc sử dụng ngôn ngữ này chiếm ưu thế xin nêu ra
đây một số lý do cơ bản :
- Mã nguồn mở (open source code)
- Miễn phí, download dễ dàng từ Internet.
- Ngôn ngữ rất dễ học, dễ viết.
- Mã nguồn không phải sửa lại nhiều khi viết chạy cho các hệ điều hành từ
Windows, Linux, Unix
- Rất đơn giản trong việc kết nối với nhiều nguồn DBMS, ví dụ như:

MySQL, Microsoft SQL Server 2000, Oracle, PostgreSQL, Adabas,
dBase, Empress, FilePro, Informix, InterBase, mSQL, Solid, Sybase,
Velocis và nhiều hệ thống CSDL thuộc Hệ Điều Hành Unix (Unix dbm)
cùng bất cứ DBMS nào có sự hổ trợ cơ chế ODBC (Open Database
Connectivity) ví dụ như DB2 của IBM.
ii. Cú pháp:
Đầu tiên, một đoạn mã php luôn được bắt đầu và kết thúc bởi cặp thẻ theo cú
pháp:
<?php
các lệnh của php;
?>
Sau đó, ta cũng có thể nhúng các lệnh của php vào trang HTML và đoạn mã
php có thể đặt bất kỳ đâu trong tài liệu. Thông thường một trang php bao gồm các thẻ
HTML như một trang HTML nhưng có thêm các đoạn mã php.
Ví dụ: Ta có đoạn mã php hiển thị câu “Hom nay em duoc hoc cu phap mot
doan ma php” lên trình duyệt như sau:
<html>
<head> </head>
<body>
<?php
echo “Hom nay em duoc hoc cu phap mot doan ma php”;
?>
</body></html>
Đồ án lập trình web 3
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
Lưu ý:
- Các file php phải có phần mở rộng là .php. Nếu phần mở rộng là .html
thì đoạn mã php sẽ không được thực thi.
- Có thể viết các câu chú thích cho đoạn mã php. Có hai cách viết là: /*
chú thích */ hoặc // chú thích.

- Đoạn mã php cũng có thể đặt trong cặp thẻ: <? Đoạn mã php ?>
iii. Các kiểu dữ liệu:
Php hỗ trợ 5 kiểu dữ liệu như sau:
• Integer: sử dụng cho giá trị có kiểu dữ liệu là số nguyên. Trên hầu hết các
hệ thống, kiểu số nguyên có kích thước 32 bit, mang giá trị từ -2147483647
cho đến 2147483648.
Ví dụ: <?php
$a = 1234;
$b = -123;
$c = 0123; //giá trị 123 ở hệ cơ số 8, tương đương với 83 ở hệ cơ số
10
$d = 0x1F; //giá trị 1F ở hệ cơ số 16, tương đương với 31 ở hệ cơ
số 10
?>
• Double (còn gọi là Float): Sử dụng cho giá trị có kiểu dữ liệu là số thực.
Trên hầu hết các hệ thống, kiểu số thực có kích thước 64 bit.
Ví dụ: <?php
$a = 1.234;
$b = 1.2e3; //= 1.2*10^3 = 1200
$c = 7E-10; //= 7*(10^-10) = 0.0000000007
$d = -1.23;
?>
Đồ án lập trình web 4
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
• String: Sử dụng cho các giá trị có kiểu dữ liệu là chuỗi và ký tự, mỗi ký tự
có kích thước là 1 byte. Nội dung string được đặt giữa 2 dấu nháy, nháy đơn
(') hoặc nháy kép (").
Ví dụ:
<?php
$a = 'Đây là 1 chuỗi được đặt giữa dấu nháy đơn';

$b = "Đây là 1 chuỗi được đặt giữa dấu nháy kép";
$c = 'Đây là 1 chuỗi được đặt giữa dấu nháy đơn với "vài
dấu nháy kép ở giữa"';
$d = "Đây là 1 chuỗi được đặt giữa dấu nháy kép với 'vài
dấu nháy đơn ở giữa'";
?>
Nếu bạn muốn sử dụng dấu nháy đơn ở trong 1 chuỗi được bọc bởi dấu nháy
đơn, hoặc sử dụng dấu nháy kép đặt giữa chuỗi được bọc bởi dấu nháy kép thì bạn để
thêm ký tự \ (gọi là ký tự escape) ở phía trước.
Ví dụ:
<? Php
$a = 'Dấu \'nháy đơn\' ở giữa chuỗi'; //$a mang giá trị: Dấu 'nháy
đơn' ở giữa chuỗi
$b = "Dấu \"nháy kép\" ở giữa chuỗi"; //$b mang giá trị: Dấu
"nháy kép" ở giữa chuỗi
$c = "Dùng ký tự \\ ở giữa câu \\ thì sao?"; //$c mang giá trị: Dùng
ký tự \ ở giữa câu \ thì sao?
?>
Khi sử dụng dấu nháy đôi để bọc chuỗi, ngoài \', \" và \\, PHP có thể nhận dạng
thêm một số chuỗi ký tự escape đặc biệt nữa:
\n: ký tự xuống hàng LF (ký tự có mã 10 trong bảng mã ASCII)
\r: ký tự về đầu dòng CR (ký tự có mã 13 trong bảng mã ASCII)
\t: ký tự tab (ký tự có mã 9 trong bảng mã ASCII)
\$: ký tự $
Đồ án lập trình web 5
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
\ooo: (với o là 1 chữ số từ 0 đến 7) biểu thị 1 ký tự có mã ASCII ooo trong hệ
cơ số 8.
Ví dụ:
\101 sẽ là ký tự 'A' (101 trong hệ cơ số 8 tương đương 65 trong hệ cơ số 10, ký

tự ASCII có mã 65 chính là ký tự 'A').
\xhh: (với h là 1 chữ số từ 0 đến 9 hoặc 1 chữ cái từ A tời F) biểu thị 1 ký tự có
mã ASCII hh trong hệ cơ số 16.
Ví dụ:
\0x41 sẽ là ký tự 'A' (41 trong hệ cơ số 16 chính là 65 trong hệ cơ số 10).
Ngoài ra, nếu bạn để 1 biến vào giữa 1 chuỗi được bọc với dấu nháy kép, giá trị
của biến sẽ được thay thế vào trong chuỗi.
Ví dụ:
<?php
$a = 1;
$b = 2;
$c = 3;
$d = "$a $b $c";
//$d sẽ mang giá trị là chuỗi "1 2 3"
?>
• Array: Sử dụng cho các giá trị có kiểu dữ liệu là mảng. Mảng còn có thể
tạo được tạo thành bởi các cặp (khóa, giá trị).
Ví dụ:
<?php
$a = Array( "khoá 1" => "giá trị 1", "khoá 2" => "giá trị 2", "khoá 3"
=> "giá trị 3");
echo $a["khoá 1"]; //in ra: giá trị 1
$b = Array( "a" => "Đinh", "b" => "Công", "c" => "Trực");
echo $b["a"]; //in ra: Đinh
$b["a"] = "Đinh";
$b["b"] = "Công";
$b["c"] = "Trực"; //giờ đây $b = Array("a" => "Đinh", "b" =>
"Công", "c" => "Trực")
Đồ án lập trình web 6
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung

?>
• Object: Sử dụng cho các giá trị có kiểu dữ liệu là đối tượng của lớp
iv. Biến:
Quy tắc viết tên biến trong PHP
- Biến trong PHP bắt đầu bằng dấu $, theo sau là tên của biến.
- Tên của biến phải bắt đầu bằng chữ hoặc ký tự gạch dưới.
- Tên biến chỉ có thể là các ký tự chữ-số hoặc dấu gạch dưới(A-z, 0-9, _ )
- Tên biến không được chứa khoảng trắng
- Tên biến phân biệt chữ hoa và chữ thường (z and Z là 2 biến khác nhau)
- Cách khai báo biến: PHP không có câu lệnh để thực hiện khai báo biến.
Một biến được khai báo khi bạn gán cho nó một giá trị.
Ví dụ: $myMotor="AirBlade";
Sau khi thực thi khai báo trên, biến $myMotor nhận giá trị là AirBlade.
Chú ý: Nếu muốn khai báo biến mà không gán giá trị nào cho nó thì gán cho nó
giá trị null.
Bây giờ lấy ví dụ khai báo biến có chứa giá trị là chuỗi và biến có giá trị là số:
<?php
$txt="Chào bạn";
$x=30;
?>
Chú ý: Khi bạn gán một giá trị dạng text cho biến thì bạn phải cho giá trị của
biến vào trong ngoặc kép.
v. Các phép toán:
1. Toán tử gán:
Chúng ta đã từng tiếp xúc với toán tử này bởi việc khởi tạo 1 biến. Nó gồm ký
tự đơn =. Toán tử gán lấy giá trị của toán hạng bên phải gán nó vào toán hạng bên trái.
Ví dụ: $name = "Xuân Cảnh";
2. Toán tử số học:
Là dạng phép tính giản đơn cộng, trừ, nhân, chia trong số học. Ngoài ra còn có
phép chia lấy dư (%). Được sử dụng để lấy ra đơn vị dư của 1 phép toán.

Đồ án lập trình web 7
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
Toán tử Giải thích Ví dụ Kết quả
+
Cộng hai số
hạng
10+2 12
- Trừ hai số hạng 10-2 8
*
Nhân hai số
hạng
10*2 20
/ Chia hai số hạng 10/2 5
% Trả về số dư 10%2 0
3. Toán tử so sánh:
Là toán tử được sử dụng để thực hiện các phép toán so sánh giữa hai số hạng.
Chi tiết, xem bảng bên dưới.
Phép toán Tên Giải thích Ví dụ
== Bằng Hai số hạng bằng nhau $a==10
!= Không bằng Hai số hạng không bằng nhau $a!=10
=== Đồng nhất Hai số bằng nhau và cùng kiểu $a===10
> Lớn hơn Vế trái lớn hơn vế phải $a>10
>= Lớn hơn hoặc bằng Vế trái lớn hơn hoặc bằng vế phải $a>=10
< Nhỏ hơn Vế trái nhỏ hơn vế phải $a<10
<= Nhỏ hơn hoặc bằng Vế trái nhỏ hơn hoặc bằng vế phải $a<=10
4. Toán tử logic:
Toán tử logic là các tổ hợp các giá trị boolean.
Ví dụ: toán tử or trở về true nếu toán tử trái hoặc toán tử phải là true.
True || false.
Đồ án lập trình web 8

Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
Ta có bảng các toán tử như sau:
Toán tử Tên Ví dụ
&& And (và) $a && $b
|| Or (hoặc) $a or $b
! Not (phủ định) !$c
5- Toán tử kết hợp: Khi tạo mã PHP, chúng ta sẽ thường nhận thấy cần phải
tăng hoặc giảm lượng biến một số nguyên nào đó. Bạn sẽ thường thực hiện điều này
khi chúng ta đếm 1 giá trị nào đó trong vòng lặp
Phép toán Ví dụ Giải thích
++ $a++ Bằng với $a=$a+1
$a Bằng với $a=$a-1
+= $a+=$b Bằng với $a=$a+$b
-= $a-=$b Bằng với $a=$a-$b
*= $a*=$b Bằng với $a=$a*$b
/= $a/=$b Bằng với $a=$a/$b
1.2. TỔNG QUAN VỀ MYSQL:
1.2.1. Giới thiệu về MySQL:
SQL là chuẩn ngôn ngữ ANSI để truy cập CSDL. SQL là viết tắt của Structured
Query Language - Ngôn ngữ truy vấn cấu trúc.
SQL là một chuẩn của ANSI (American National Standards Institute - Viện tiêu
chuẩn quốc gia Hoa kỳ) về truy xuất các hệ thống CSDL. Các câu lệnh SQL được sử
dụng để truy xuất và cập nhật dữ liệu trong một CSDL.
1.2.2. Đặc điểm:
SQL hoạt động với hầu hết các chương trình CSDL như MS
Access, DB2, Informix, MS SQL Server, Oracle, Sybase v.v Nó có nhiều phiên
bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng
Windows, Linux, Mac OS X, Unix, Solaris…
Lưu ý: Hầu hết các chương trình CSDL hỗ trợ SQL đều có phần mở rộng cho
SQL chỉ hoạt động với chính chương trình đó.

Một CSDL thường bao gồm một hoặc nhiều bảng (table). Mỗi bảng được xác
định thông qua một tên (ví dụ Customers hoặc Orders). Bảng chứa các mẩu tin - dòng
(record - row), là dữ liệu của bảng.
Đồ án lập trình web 9
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
MySQL là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển,
hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất
mạnh.
Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy
cập CSDL trên internet. MySQL server hoạt động trong các hệ thống nhúng hoặc
client/server.
1.2.3. Tạo cơ sở dữ liệu và người dùng:
1.2.3.1. Kết nối và tạo cơ sở dữ liệu:
Để kết nối cơ sở dữ liệu ta có thể thực hiện theo hai cách:
+ Kết nối và tạo CSDL bằng Command line.
+ Kết nối và tạo CSDL bằng giao diện đồ họa: MySQL Administrator hoặc
phpmyadmin.
1.2.3.2. Quản lý người dùng:
Để đăng nhập vào MySQL ta có thể sử dụng user là root và pass là rỗng.
Ngoài tài khoản này ta có thể tạo thêm các tài khoản cho người dùng với các
users và pass khác nhau.
1.2.3.2.1. Cấp quyền cho người dùng:
Với quyền root ta có thể thực hiện mọi thao tác trên CSDL: select, update,
insert, delete,…
Tuy nhiên, khi tạo quyền người dùng ta cũng có thể hạn chế bớt một số quyền
nhất định nào đó.
1.2.3.2.2. Xóa quyền hoặc xóa tài khoản người dùng:
Sau khi cấp quyền cho người dùng ta có thể thêm hoặc loại bỏ một số quyền
nào đó.
Với việc truy cập vào tài khoản root ta có thể xóa các tài khoản người dùng đã

được tạo ra.
1.2.4. Các kiểu dữ liệu trong Mysql:
• Dữ liệu kiểu numeric:
Bao gồm các kiểu sau:
- Tinnyint: Lưu các số nguyên không dấu (unsigned) từ 0-255 hoặc các số
nguyên có dấu từ -128 -> 127
Đồ án lập trình web 10
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
- Mediumint: Lưu các số nguyên từ 0 đến 16.777.215 hoặc từ -8.388.608
đến 8.388.607
- Int: Lưu các số nguyên từ 0 đến 4.294.967.295 hoặc từ -2.147.483.648
đến 2.147.483.647
- Bigint
- Float
- Doube
- Decimal/real
• Dữ liệu kiểu date và time:
Bao gồm các kiểu sau:
- Date: Lưu trữ ngày dạng yyy-mm-dd. Cho phép giá trị từ 1000-01-01
đến 9999-12-31
- Datetime: Lưu trữ dạng yyyy-mm-dd hh:mm:ss
- Timestamp: Tự động ghi nhận thời gian thay đổi gần nhất. Tùy thuộc vào
độ rộng của cột nằm trong khoảng từ 2 đến 14 (yy đến yyyy-mm-dd
hh:mm:ss)
- Time: Dùng để lưu trữ giờ định dạng hh:mm:ss.
- Year: Dùng để lưu năm bắt đầu từ 1970
• Dữ liệu kiểu string: bao gồm các kiểu sau:
- Char: Chiều dài tối đa 255 ký tự, đây là kiểu có chiều dài cố định.
- Varchar: Cũng tương tự kiểu char có chiều dài tối đa 255 ký tự, song có
điểm khác là có chiều dài thay đổi, các giá trị sẽ không bị nối thêm ký tự

trắng.
- Tinytext: là kiểu ký tự văn bản nhị phân. Có chiều dài tối đa 255.
- Text: có chiều dài 65.535 ký tự. Các chỉ mục có thể được tạo trên 255 ký
tự đầu của cột text
- Mediumtext: có chiều dài 16.777.215
- Longtext: có chiều dài >4 tỉ ký tự
- Enum, Set,…
1.2.5. Các câu lệnh SQL:
1.2.5.1. Câu lệnh SELECT
Đồ án lập trình web 11
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
Dùng để truy vấn dữ liệu từ một hay nhiều bảng khác nhau và trả về kết quả là
một tập mẫu tin thỏa mãn điều kiện nào đó
Cú pháp: SELECT <Danh sách các cột>
[FROM <danh sách các bảng>]
[WHERE <các điều kiện ràng buộc>]
[GROUP BY <tên cột/ biểu thức trong SELECT>]
[HAVING <đk bắt buộc của GROUP BY>]
[ORDER BY <danh sách cột>]
[LIMIT FromNumber | ToNumber]
Trong đó, danh sách các cột: Tên các cột, biểu thức kết hợp giữa các cột của
bảng.
Trường hợp truy vấn tất cả các cột của bảng ta sử dụng toán tử * thay vì chỉ ra
danh sách tất cả các cột.
Trường hợp, có các cột cùng tên ở các bảng khác nhau thì ta cần chỉ ra tên bảng
đi trước theo cú pháp: Tên_bảng.Tên_cột
1.2.5.2. Câu lệnh Insert
Được sử dụng khi cần thêm mẫu tin vào bảng trong CSDL MySQL.
Khi thêm dữ liệu, cần chú ý đến kiểu dữ liệu của các cột mình cần thêm dữ liệu.
Cần quan tâm đến quyền của User đăng nhập có được phép Insert hay không.

Khi Insert dữ liệu vào bảng có 3 trường hợp:
- Insert từ giá trị cụ thể
- Lấy giá trị từ một hoặc nhiều bảng khác
- Bao gồm cả hai trường hợp
1.2.5.3. Câu lệnh Update
Dùng để cập nhật lại dữ liệu đã tồn tại trong bảng.
Nếu cập nhật giá trị cụ thể:
UPDATE <tên bảng> SET <cột> = <giá trị>, [<cột> = <giá trị>] [WHERE
<conditions>]
Cập nhật giá trị từ bảng khác:
UPDATE <tên bảng> SET <tên cột>=<SELECT … FROM tên bảng …> …
UPDATE có thể ảnh hưởng đến nhiều bảng nhưng cập nhật giá trị chỉ có hiệu
lực trên bảng đó.
Đồ án lập trình web 12
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
1.2.5.4. Câu lệnh Delete
Dùng để xóa mẫu tin trong bảng được chỉ ra bởi tên bảng và mệnh đề WHERE
(nếu có) nhằm xác định mẫu tin cần xóa theo một điều kiện nào đó.
DELETE FROM <tên bảng> WHERE <conditions>.
Conditions: có thể là phép toán giữa các cột và giá trị hoặc giá trị là kết quả trả
về của một câu lệnh SELECT khác.
Lưu ý: không có khái niệm xóa giá trị trong một cột, vì xóa giá trị một cột đồng
nghĩa với cập nhật cột đó bằng giá trị rỗng.
1.2.5.5. Câu lệnh Join
Inner Join: Dùng để kết hợp các bảng dữ liệu
Cú pháp: SELECT [các cột] FROM <bảng 1> INNER JOIN <bảng 2> ON
<điều kiện kết hợp> WHERE …. ODER BY …
Ví dụ: SELECT Hoten, Tongdiem FROM Sinhvien INNER JOIN Hocsinh ON
Sinhvien.Masv = Hocsinh.Masv WHERE Tongdiem >2.0 ORDER BY Tongdiem ASC
Lưu ý: nếu cần trả về kết quả là tất cả các cột của các bảng tham gia Inner Join

ta áp dụng cú pháp:
SELECT bảng 1.*, bảng 2.* [, bảng n.*] FROM bảng 1 INNER JOIN bảng 2
ON <điều kiện>…
Left Join: Dùng để kết hợp các bảng dữ liệu khi muốn trả về kết quả là những
mẫu tin của bảng bên trái tồn tại ứng với những mẫu tin ở bảng bên phải không tồn tại.
Cú pháp: SELECT [các cột] FROM <bảng trái> LEFT JOIN <bảng phải> ON
<điều kiện kết hợp> WHERE …. ODER BY …
Right Join: Dùng để kết hợp các bảng dữ liệu khi muốn trả về kết quả là những
mẫu tin của bảng bên phải tồn tại dù bảng bên trái không tồn tại
Cú pháp: SELECT [các cột] FROM <bảng trái> RIGHT JOIN <bảng phải> ON
<điều kiện kết hợp> WHERE …. ODER BY …
1.2.6. Các hàm trong MySQL
1.2.6.1. Các hàm phát biểu trong Group by
Hàm AVG: trả về giá trị bình quân của cột hay trường trong câu truy vấn
Hàm MIN: trả về giá trị nhỏ nhất của cột hay trường trong câu truy vấn
Hàm MAX: trả về giá trị lớn nhất của cột hay trường trong câu truy vấn
Đồ án lập trình web 13
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
Hàm SUM: trả về tổng các giá trị của cột hay trường trong câu truy vấn
1.2.6.2. Các hàm về xử lý thời gian
Hàm CurDate(): trả về ngày, tháng, năm hiện hành của hệ thống
Hàm CurTime(): trả về giờ, phút, giây hiện hành của hệ thống
Hàm Period_Diff(ngày đầu, ngày cuối): trả về số ngày trong khoảng thời gian
giữa ngày đầu và ngày cuối
Hàm dayofmonth: trả về ngày thứ mấy trong tháng
1.2.6.3. Các hàm về xử lý số học
Hàm sqrt: trả về căn bậc hai
Hàm round: làm tròn giá trị biểu thức
Đồ án lập trình web 14
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung

CHƯƠNG II. KHẢO SÁT VÀ PHÂN TÍCH HỆ THỐNG
2.1. QUY TRÌNH NGHIỆP VỤ
2.1.1. Quy trình bán hàng
Hình 2.1: Quy trình bán hàng
Đồ án lập trình web 15
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
2.1.2. Quy trình mua hàng
Hình 2.1: Quy trình mua hàng
2.2. YÊU CẦU HỆ THỐNG
2.2.1. Yêu cầu hệ thống:
• Sử dụng ngôn ngữ lập trình PHP.
• Hệ cơ sở dữ liệu SQL.
• Cấu hình máy: có kết nối Internet, phần mềm hỗ trợ.
2.2.2. Yêu cầu chức năng:
2.2.2.1. Quản lý người dùng:
• Cập nhật quyền để vào hệ thống.
Đồ án lập trình web 16
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
• Cập nhật người dùng.
• Đổi mật khẩu.
• Chức năng đăng nhập, đăng xuất hệ thống.
2.2.2.2. Chức năng quản lý sách:
• Cập nhật danh mục sách
• Cập nhật sách
• Cập nhật giá sách
• Cập nhật hình ảnh
2.2.2.3. Tìm kiếm:.
• Tìm kiếm tên sách
• Tìm kiếm sách theo giá.
• Tìm kiếm theo nội dung

2.2.3. Yêu cầu phi chức năng:
• Chi phí thực hiện 5 triệu.
• Có 02 ngôn ngữ là Tiếng Việt, Tiếng Anh.
• Đăng ký hệ thống quản lý lên Google.
• Lưu dự phòng dữ liệu cho hệ thống theo định kỳ ( 1 tuần 2 lần)
• Hoạt động ít nhất 1 năm.
• Thực hiện trong vòng 48H kể từ khi nhận được đầy đủ thông tin về logo,
hình ảnh, thông tin về công ty.
• Có hướng dẫn sử dụng và các video hướng dẫn trên hệ thống, hỗ trợ thêm
qua hệ thống điện thoại hoặc hỗ trợ trực tuyến.
Đồ án lập trình web 17
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
2.3. XÂY DỰNG BFD – BIỂU ĐỒ PHÂN RÃ CHỨC NĂNG
Hình 2.2: Biểu đồ BFD – Phân rã chức năng
Đồ án lập trình web 18
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
CHƯƠNG 3. PHÂN TÍCH VÀ THIẾT KÊ CƠ SỞ DỮ LIỆU
3.1. PHÂN TÍCH
3.1.1. Danh sách các bảng và quan hệ
Bảng 3.1: Danh sách các bảng và quan hệ
STT Tên Loại Ý nghĩa/ ghi chú
1 dmsach
Đối tượng
chính
Liệt kê các thông tin về loại sách gồm các trường id,
tensach, gioithieu, linkanh, dongia, noidung, id danh
mục.
2 danhmuc
Đối tượng
chính

Liệt kê các danh mục sách gồm iddanhmuc, ten
3 user
Đối tượng
chính
Liệt kê các thông tin về người dùng gồm các trường id,
user, password, email, phone, address, company,admin
3.1.2. Mô tả chi tiết các bảng
Bảng 3.2. Mô tả chi tiết bảng user
USER
STT Thuộc
tính
Kiểu dữ
liệu
Mô tả
1 Id Số Số thứ tự thành viên sau khi đăng ký và id tự động tăng.
2 User Chuỗi Tên truy cập (tài khoản) của người.
3 pass Chuỗi Mật khẩu người dùng tương ứng với từng tên truy cập.
4 Email Chuỗi Email liên hệ của người dùng.
5 Phone Chuỗi Số điện thoại của người dùng.
6 Company Chuỗi Công ty / đơn vị người dùng đang làm việc.
7 Address Chuỗi Địa chỉ của người dùng.
8 admin Số Trường dữ liệu phân biệt người quản trị với người dùng.
Bảng 3.3: Mô tả chi tiết bảng danh mục
DANHMUC
STT Thuộc tính Kiểu dữ
liệu
Mô tả
1 Iddanhmuc Số Số thứ tự danh mục, tự động tăng lên sau khi thêm
danh mục.
2 Ten Chuỗi Tên danh mục sách.

Bảng 3.4: Mô tả chi tiết bảng danh mục sách
DMSACH
STT Thuộc tính Kiểu dữ liệu Mô tả
1 idsach Số Số thứ tự của sách, tự động tăng sau khi thêm sách.
2 Tensach Chuỗi Tên của cuốn sách.
3 Gioithieu Chuỗi Giới thiệu ngắn gọn về cuốn sách.
Đồ án lập trình web 19

×