Trong thời đại công nghệ thông tin phát triển nhanh chóng, internet được ứng dụng rộng rãi vào các lĩnh vực của đời sống như hiện nay, thì việc xây dựng website bán điện thoại online cũng không có gì xa lạ bởi vì lợi ích mà nó đem lại không hề nhỏ: tiết kiệm thời gian, công sức đem lại hiệu quả cao trong việc trao đổi thông tin. Nắm bắt được những lợi ích mà internet nói chung và cụ thể là website bán điện thoại online nói riêng mang lại, em đã cho ra đời website với mục đích tạo ra những thuận lợi trong việc trao đổi ,mua bán các sản phẩm và đáp ứng nhu cầu của khác hàng.
Trang 3LỜI NÓI ĐẦU
1 Lý do chọn đề tài
Trong thời đại công nghệ thông tin phát triển nhanh chóng, internet được ứngdụng rộng rãi vào các lĩnh vực của đời sống như hiện nay, thì việc xây dựng websitebán điện thoại online cũng không có gì xa lạ bởi vì lợi ích mà nó đem lại không hềnhỏ: tiết kiệm thời gian, công sức đem lại hiệu quả cao trong việc trao đổi thông tin.Nắm bắt được những lợi ích mà internet nói chung và cụ thể là website bán điệnthoại online nói riêng mang lại, em đã cho ra đời website với mục đích tạo ra nhữngthuận lợi trong việc trao đổi ,mua bán các sản phẩm và đáp ứng nhu cầu của kháchàng
2 Mục tiêu và nhiệm vụ nghiên cứu
Mục tiêu: Ứng dụng ngôn ngữ lập trình PHP và hệ quản trị sơ sở dữ liệu MySQL để xây dựng được 1 website hoàn thiện, có đầy đủ chức năng giúp người dùng dễdàng tương tác, trao đổi thông tin với nhau trên website
Nhiệm vụ nghiên cứu:
- Tìm hiểu những lợi ích mà website thông tin mang lại
- Tìm hiểu về ngôn ngữ lập trình PHP và hệ quản trị cơ sở dữ liệu MySQL đểxây dựng một website
- Tìm hiểu những yêu cầu của đối tượng sử dụng website từ đó xây dựng mộtwebsite phù hợp và đáp ứng được nhu cầu sử dụng
- Xây dựng và hoàn thiện website
3 Đối tượng và phạm vi nghiên cứu
Đối tượng nghiên cứu:
dễ dàng tương tác trên website
- Tài liệu về ngôn ngữ PHP
- Tài liệu sử dụng hệ cơ sở dữ liệu MySQL
Trang 44 Phương pháp nghiên cứu
- Tìm hiểu, nghiên cứu các tài liệu về ngôn ngữ lập trình PHP và hệ quản trị cơ
5 Ý nghĩa khoa học và thực tiễn
- Tổng hợp, áp dụng được những kiến thực đã nắm được trong quá trình học tập
để xây dựng, hoàn thiện website Chứng minh được những lợi ích mà internet mạng lạitrong thời đại công nghệ thông tin phát triển như hiện nay Tạo điều kiện thuận lợi choviệc trao đổi thông tin, chia sẻ tài liệu giữa các thành viên trong lớp Giúp tiết kiệmthời gian, công sức và tiền bạc
6 NỘI DUNG ĐỒ ÁN
Chương 1: TỔNG QUAN VỀ PHP VÀ MYSQL
Chương 2: PHÂN TÍCH HỆ THỐNG VÀ THIẾT KẾ CHỨC NĂNG
Chương 3: CHƯƠNG TRÌNH ỨNG DỤNG
Trang 5MỤC LỤC
LỜI NÓI ĐẦU i
MỤC LỤC iii
DANH MỤC BẢNG BIỂU vi
DANH MỤC HÌNH ẢNH vii
CHƯƠNG 1: TỔNG QUAN VỀ PHP VÀ MYSQL 1
1.1 T ỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH PHP 1
1.1.1 Giới thiệu về PHP 1
1.1.2 Tại sao phải sử dụng PHP 1
1.1.3 Cú pháp PHP 2
1.1.3.1Cấu trúc cơ bản 2
1.1.3.2Xuất giá trị ra trình duyệt 3
1.1.4 Khái niệm biến, hằng và chuỗi trong PHP 3
1.1.4.1Biến trong PHP 3
1.1.4.2Hằng trong PHP 4
1.1.4.3Khái niệm về chuỗi 4
1.1.5 Các kiểu dữ liệu PHP 5
1.1.6 Các phép toán trong PHP 5
1.1.6.1Các phép toán số học 5
1.1.6.2Các phép toán so sánh 5
1.1.6.3Các phép toán logic 6
1.1.6.4Phép toán trên chuỗi 6
1.1.6.5Các phép toán tự tăng giảm 6
1.1.7 Các cấu trúc điều khiển trong PHP 6
1.1.7.1Cấu trúc rẽ nhánh 6
1.1.7.2Cấu trúc lặp 7
1.1.8 Truy cập đến FORM 8
1.1.8.1Hàm GET 8
1.1.8.2Hàm POST 8
1.2 T ỔNG QUAN VỀ HỆ QUAN VỀ HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU M Y SQL 8 1.2.1 Giới thiệu về MySQL 8
Trang 61.2.2 Kiểu dữ liệu trong MySQL 9
1.2.3 Các phát biểu SQL 10
1.2.3.1Cậu lệnh SELECT 10
1.2.3.2Câu lệnh INSERT INTO 11
1.2.3.3Câu lệnh UPDATE 11
1.2.3.4Câu lệnh DELETE 11
CHƯƠNG 2: PHÂN TÍCH HỆ THỐNG VÀ THIẾT KẾ CHỨC NĂNG 12
2.1 P HÁT BIỂU BÀI TOÁN 12
2.2 C ÁC QUY TRÌNH TRÊN WEBSITE 12
2.2.1 Quy trình đăng kí thành viên 12
2.2.2 Quy trình đăng nhập 13
2.2.3 Quy trình cập nhật dữ liệu 14
2.2.4 Quy trình tìm kiếm 14
2.3 Y ÊU CẦU HỆ THỐNG 15
2.3.1 Yêu cầu chức năng 15
2.3.2 Yêu cầu phi chức năng 16
2.4 M Ô HÌNH HÓA CHỨC NĂNG 17
2.4.1 Biểu đồ phân rã chức năng ( BFD) 17
2.4.2.Biểu đồ luồng dữ liệu mức ngữ cảnh 17
2.4.2.1 Biểu đồ luồng dữ liệu mức 0 18
2.4.2.2 Biểu đồ luồng dữ liệu mức 1: Quản trị hệ thống 19
2.4.2.3 Biểu đồ luồng dữ liệu mức 1: Danh mục sản phẩm 20
2.4.2.4 Biểu đồ luồng dữ liệu mức 1: Danh mục quảng cáo 22
2.4.2.5 Biểu đồ luồng dữ liệu mức 1: Danh mục tìm kiếm 22
2.5 .T HIẾT KẾ CƠ SỞ DỮ LIỆU 22
CHƯƠNG 3: CHƯƠNG TRÌNH ỨNG DỤNG 26
3.1.C HƯƠNG TRÌNH 26
3.2 G IAO DIỆN 26
3.2.1 Giao diện trang chủ (index.php) 26
3.2.2 Giao diện trang giới thiệu 27
3.2.3 Giao diện trang hướng dẫn 27
Trang 73.2.4 Giao diện trang liên hệ 28
3.2.5 Giao diện trang chi tiết sản phẩm 28
3.2.6 Giao diện trang giỏ hàng 29
3.2.7 Giao diện trang đặt hàng 29
3.2.8 Giao diện trang admin (quản lý sản phẩm) 30
3.2.9 Giao diện trang admin (đơn hàng) 30
3.2.10 Giao diện trang admin ( quản lý thành viên) 30
3.2.11 Giao diện trang admin (Liên hệ) 31
CHƯƠNG 4 : KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 32
4.1.K ẾT LUẬN 32
4.2.K ẾT QUẢ ĐẠT ĐƯỢC 32
DANH MỤC TÀI LIỆU THAM KHẢO 33
Trang 8DANH MỤC BẢNG BIỂU
Bảng 1.1 : Các phép toán số học 5
Bảng 1.2 : Các phép toán so sánh 5
Bảng 1.3 : Các phép toán logic 6
Bảng 1.4 : Các phép toán tự tăng giảm 6
Bảng 1.5 : Kiểu dữ liệu String 9
Bảng 1.6 : Kiểu dữ liệu numeric 10
Bảng 1.7 : Kiểu dữ liệu date và time 10
Trang 9DANH MỤC HÌNH ẢNH
Hình 2.1 : Quy trình đăng kí thành viên 12
Hình 2.2 : Quy trình đăng nhập thành viên 13
Hình 2.3 : Quy trình cập nhật dữ liệu 14
Hình 2.4 : Quy trình tìm kiếm 14
Trang 10CHƯƠNG 1: TỔNG QUAN VỀ PHP VÀ MYSQL
1 Tổng quan về ngôn ngữ lập trình PHP
2 Giới thiệu về PHP
PHP được viết tắt của chữ Personal Home Page
Là ngôn ngữ kịch bản trình chủ (Server Script) chạy trên phía máy chủ (Serverside) giống như các server script khác: ASP, JSP, …
Là kịch bản cho phép chúng ta xây dựng ứng dụng web trên mạng internet hayintranet tương tác với mọi cơ sở dữ liệu như: Informix, MySQL, PostgreSQL, Oracle,Sybase, SQL Server, …
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)
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áttriể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ácchứ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ácbản beta Đến tháng 11 năm 1997 mới chính thức được công bố
Năm 1997, phiên bản PHP 3.0 ra đời bởi Andi Gutmans và Zeev Suraski sau khiviết lại toàn bộ mã nguồn trước đó và được công bố chính thức vào tháng 6 năm 1998.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
3 Tại sao phải sử dụng PHP
Có nhiều lý do khiến cho việc sử dụng ngôn ngữ này chiếm ưu thế, sau đây là
Trang 11một số lý do cơ bản:
Miễn phí, download dễ dàng từ Internet
Ngôn ngữ rất dễ học, dễ viết
Mã nguồn mở (open sorce code)
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, Linnux, 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àocó sự hổ trợ cơ chế ODBC (Open Database Connectivity) ví dụ như DB2 của IBM
Trong PHP để kết thúc 1 dòng lệnh chúng ta sử dụng dấu ";"
Để chú thích 1 đoạn dữ liệu nào đó trong PHP ta sử dụng dấu "//" cho từng dòng.Hoặc dùng cặp thẻ "/*…… */" cho từng cụm mã lệnh
<?
Trang 12Echo “CCLT07A”; // Day la vi du ve code PHP
/* Voi cu phap nay chung ta
Co the chu thich 1 cum ma lenh*/
?>
6 Xuất giá trị ra trình duyệt
Để xuất dữ liệu ra trình duyệt chúng ta có những dòng cú pháp sau:
- Echo "Thông tin";
- Printf "Thông tin";
Thông tin bao gồm: biến, chuỗi, hoặc lệnh HTML …
1 biến được xem là hợp lệ khi nó thỏa các yếu tố:
- Tên của biến phải bắt đầu bằng dấu gạch dưới và theo sau là các ký tự, số haydấu gạch dưới
- Tên của biến không được phép trùng với các từ khóa của PHP
Trong PHP để sử dụng 1 biến chúng ta thường phải khai báo trước, tuy nhiên đốivới các lập trình viên khi sử dụng họ thường xử lý cùng một lúc các công việc, nghĩa
là vừa khái báo vừa gán dữ liệu cho biến
Bản thân biến cũng có thể gãn cho các kiểu dữ liệu khác Và tùy theo ý định củangười lập trình mong muốn trên chúng
Trang 13Một số ví dụ về biến:
<?
$a= 100 // biến a ở đây có giá trị là 100
$a= “CCLT07A” // biến a ở đây có giá trị là “CCLT07A”
Biena=123 // Cõ lỗi vì bắt đầu 1 biến phải có dấu $
$123a = “CCLT07A” // Cõ lỗi vì phần tên bắt đầu của biến là dạng số
- Hằng không có dấu "$" ở trước tên
- Hằng có thể truy cập bất cứ vị trí nào trong mã lệnh
- Hằng chỉ được phép gán giá trị duy nhất 1 lần
- Hằng thường viết bằng chữ in để phân biệt với biến
Chuỗi là một nhóm các kỹ tự, số, khoảng trắng, dấu ngắt được đặt trong các dấunháy
Trang 14Ví dụ:
$fisrt_name= "Doan";
$last_name= ‘Van Duc’;
Để liên kết 1 chuỗi và 1 biến chúng ta thường sử dụng dấu "."
11 Các kiểu dữ liệu PHP
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
Double: sử dụng cho giá trị có kiểu dữ liệu là số thực
String: sử dụng cho các giá trị có kiểu dữ liệu là chuỗi và ký tự
Array: sử dụng cho các giá trị có kiểu dữ liệu là mảng
Object: sử dụng cho các giá trị có kiểu dữ liệu là đối tượng của lớp
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
Bảng 1.2 : Các phép toán so sánh
Toán tử logic là các tổ hợp các giá trị boolean
Trang 15Các phép toán logic trả về giá trị true hoặc false.
Để cộng (ghép) hai chuỗi lại với nhau ta sử dụng dấu chấm (.)
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
Bảng 1.4 : Các phép toán tự tăng giảm
18 Các cấu trúc điều khiển trong PHP
Trang 17các_lệnh}
Là hàm xây dựng sẵn dùng để lấy giá trị từ FORM với method=get
Thông tin truyền đi với phương thức GET sẽ được hiển thị trên Browser’saddress bar, mọi người có thể nhìn thấy thông tin với số ký tự tối đa là 100
Cú pháp: $_GET[“tên_phần_tử”
Cũng như hàm GET, hàm POST cũng dùng để lấy giá trị từ FORM nhưng hàmPOST không hiển thị thông tin trên Browser’s address bar nên không thể nhìn thấythông tin đang truyền
Cú pháp: $_POST[“tên_phần_tử”]
24 Tổng quan về hệ quan về hệ quản trị cơ sở dữ liệu MySQL
25 Giới thiệu về MySQL
MySQL là một hệ quản trị cơ sở dữ liệu quan hệ, một hệ quản trị cơ sở dữ liệumiễn phí, được phát triển, phân phối và hỗ trợ bởi MySQL AB
Để làm việc với MySQL cần đăng ký kết nối, tạo cở sở dữ liệu, quản lý ngườidùng, phân quyền sử dụng, thiết kế đối tượng Table của cơ sở dữ liệu và xử lý dữ liệu
Để quản lý và thao tác trên cơ sở dữ liệu ta có thể sử dụng giao diện đồ họa hoặc dạngCommand line
MySQL cũng giống như các hệ quản trị CSDL: Access, SQL Server,PostgreSQL, Oracle, phần mềm mã nguồn mở do đó có thể tải miễn phí từ trang chủ
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…
Trang 18MySQL 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ấtmạ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ó truycập CSDL trên internet MySQL server hoạt động trong các hệ thống nhúng hoặcclient/server.
26 Kiểu dữ liệu trong MySQL
- Kiểu dữ liệu String
Kiểu dữ liệu Mô tả
CHAR (size)
Cố định chiều dài chuỗi (có thể chứa chữ cái, số và ký
tự đặc biệt) Cố định kích thước trong ngoặc đơn Bạn
có thể ghi âm lên đến 255 ký tự
VARCHAR
(size) Nó có thể lưu trữ lên đến 255 ký tự.
TINYTEXT Nó có thể lưu trữ lên đến 255 ký tự
TEXT Nó có thể lưu trữ lên đến 65.535 ký tự
BLOB Nó có thể lưu trữ lên đến 65.535 ký tự
MEDIUMTEXT Nó có thể lưu trữ lên đến 16.777.215 ký tự
MEDIUMBLOB Nó có thể lưu trữ lên đến 16.777.215 ký tự
LONGTEXT Nó có thể lưu trữ lên đến 4294967295 ký tự
LONGBLOB Nó có thể lưu trữ lên đến 4294967295 ký tự
ENUM (x, y, z,
vv)
Cho phép bạn nhập một danh sách các giá trị hợp lệ
Bạn có thể nhập lên đến 65.535 giá trị khi chèn ENUM spisok.Esli giá trị sẽ không có mặt trong danh sách của ENUM, sau đó chúng ta có được một giá trị null.Nhập giá trị có thể có thể được ở định dạng này: ENUM ('X', 'Y', 'Z')
SET Nhắc ENUM ngoại trừ SET có thể chứa lên đến 64 giá
trị
Bảng 1.5 : Kiểu dữ liệu String
- Kiểu dữ liệu numeric
Kiểu dữ liệu Mô tả
TINYINT (size) Có thể lưu trữ các số từ -128 đến 127
SMALLINT (size) Phạm vi từ -32 768-32 767
Trang 19MEDIUMINT (size) Phạm vi đó là để 8388607 -8388608.
INT (size) Phạm vi từ -2147483648 đến 2147483647
BIGINT (size) Phạm vi từ -9 223 372 036 854 775 808-9 223
372 036 854 775 807
FLOAT (kích thước, d) Số lượng chính xác dấu chấm động một chút
DOUBLE (kích thước, d) Floating-point gấp đôi độ chính xác
DECIMAL (kích thước,
d) Fractional số được lưu trữ như là một chuỗi.
Bảng 1.6 : Kiểu dữ liệu numeric
- Kiểu dữ liệu date và time
Kiểu dữ liệu Mô tả
DATE () Ngày trong YYYY-MM-DD
DATETHỜI
GIAN () Ngày và thời gian trong YYYY-MM-DD HH: MM: SS.
Dấu thời gian
()
Ngày và thời gian trong dấu thời gian Tuy nhiên, trong việc có được giá trị trường này sẽ không hiển thị trong định dạng của dấu thời gian, nhưng ở dạng YYYY-MM-
DD HH: MM: SS
THỜI GIAN () Thời gian trong HH: MM: SS
NĂM () Nằm trong định dạng chữ số hoặc bốn chữ số hai
Bảng 1.7 : Kiểu dữ liệu date và time
27 Các phát biểu SQL
Câu lệnh SELECT được dùng để truy xuất dữ liệu từ một bảng Kết quả trả vềdưới dạng bảng được lưu trong một 1 bảng, gọi là bảng kết quả - result table (còn đượcgọi là tập kết qua – result set)
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 <điều kiện bắt buộc của GROUP BY>]
[ORDER BY <danh sách cột>]
[LIMIT FromNumber | ToNumber]
Trang 2029 Câu lệnh INSERT INTO
Câu lệnh INSERT INTO dùng để thêm dữ liệu vào một bảng đã tồn tại
SET <tên_cột = tên_giá_trị_mới>
WHERE <tên_cột = giá_trị>
Câu lệnh DELETE được dùng để xóa những bản ghi tồn tại trong một bảng
Cú pháp
DELETE <from tên_bảng>
WHERE <tên_cột = giá_trị>
Trang 21CHƯƠNG 2: PHÂN TÍCH HỆ THỐNG VÀ THIẾT KẾ
CHỨC NĂNG
2.1 Phát biểu bài toán
- Khi truy cập vào website thì người dùng có thể xem các tin tức theo từngchuyên mục, đăng kí làm thành viên của website, đăng bài viết chia sẻ tài liệu (nhữngbài viết của thành viên đăng phải thông qua kiểm duyệt của quản trị viên)
- Các thành viên có thể tiến hành gửi các bình luận trong từng bài viết, gửi góp ý– liên hệ với Ban quản trị website, tìm kiếm các tin thức
- Các thành viên ban quản trị website có thể đăng tin tức, quản lý bài viết, quản
lý bình luận, quản lý thành viên trên website
2.2 Các quy trình trên website
2.2.1 Quy trình đăng kí thành viên
Hình 2.1 : Quy trình đăng kí thành viên
Mô tả
- Người sử dụng truy cập vào website, khi click chuột vào đăng kí thì hệ thống sẽchuyển đến trang đăng ký cho phép người sử dụng nhập các thông tin cần thiết