Lời mở đầu (cid:152)(cid:153) & (cid:151)(cid:150)
Ngày nay Thương mại điện tử đã trở thành một ngành kinh tế mũi nhọ n trên thế giới và đã xuất hiện nhiều trung tâm thương mại và thị trường chứng khoán lớn trên thế giới.
Nhờ vào sự phát tri ển của các ph ương tiện truyền thông, đặc biệt là sự phát triển của tin học đã tạo điều kiện cho mọi người có thể giao tiếp với nhau một cách nhanh chóng và d ễ dàng h ơn thông qua các d ịch vụ Internet. Vì là m ột môi tr ường truy ền thông r ộng kh ắp th ế gi ới nên thông tin có th ể được gi ới thiệu tới từng người một cách nhanh chóng và thu ận lợi. Chính vì v ậy đã tạo điều kiện thuận lợi cho Thương mại điện tử thông qua Internet và Th ương mại điện tử nhanh chóng tr ở nên ph ổ biến trên th ế giới, trở thành một công cụ rất mạnh mẽ để bán hàng và qu ảng cáo hàng hoá c ủa các nhà cung c ấp. Đối với khách hàng, có th ể có th ể lựa chọn, so sánh hàng hoá phù h ợp cả về loại hàng hoá, dịch vụ giá cả, chất lượng và phương thức giao hàng cho khách hàng.
Có rất nhi ều ý ki ến cho r ằng Th ương mại điện tử là s ự thay đổi lớn nh ất
trong kinh doanh kể từ sau cuộc cách mạng công nghiệp.
Thương mại điện tử không ch ỉ mở ra nh ững cơ hội kinh doanh m ới, những sản phẩm và dịch vụ mới, những ngành ngh ề kinh doanh m ới mà bản thân nó thực sự là một phương thức kinh doanh mới: Phương thức kinh doanh điện tử. Thương mại điện tử chuyển hoá các ch ức năng kinh doanh, t ừ nghiên cứu thị trường và s ản xu ất sản ph ẩm đến bán hàng, d ịch vụ sau bán hàng t ừ ph ương thức kinh doanh truyền thống đến phương thức kinh doanh điện tử.
Trong khuôn kh ổ bài th ực tập này, chúng em đã xây dựng một website gi ới thiệu sản phẩm qua mạng (E – Catalogue), c ụ thể là website gi ới thiệu về mặt hàng bánh kẹo. Website được thiết kế bằng ngôn ngữ kịch bản PHP và hệ quản trị cơ sở dữ liệu MySQL.
Vì thời gian và trình độ có hạn nên bài báo cáo s ẽ không tránh kh ỏi sai sót. Mong thầy thông cảm , châm chước và giúp đỡ chúng em.
Sinh viên thực hiện Đỗ Nam Khánh Vũ Mạnh Linh
1
Chương I: Mục đích của đề tài
Mục đích: Đề tài thi ết kế Web giúp tìm hi ểu và th ực hi ện trang Web động với ngôn ngữ kịch bản PHP, các k ết nối với hệ qu ản tr ị cơ sở dữ li ệu MySQL, l ấy dữ liệu để hiển thị trên trang Web và cập nhật dữ liệu trở lại. Đề tài của chúng em là website giới thiệu sản phẩm bánh kẹo nên chức năng chính của website sẽ gồm những nội dung cơ bản sau:
- Giới thiệu về cửa hàng - Giới thiệu về các sản phẩm mà cửa hàng kinh doanh - Cho phép nhân viên của cửa hàng có thể cập nhật thông tin về sản phẩm một cách nhanh chóng.
Chương II: Tìm hiểu về ngôn ngữ kịch bản PHP và hệ quản trị CSDL MySQL
Trong th ực tế, ứng dụng Web luôn t ồn tại hai lo ại là trang Web t ĩnh và động. Trang Web t ĩnh là trang HTML không k ết nối cơ sở dữ liệu. Ngược lại, trang web động là trang Web có kết nối cơ sở dữ liệu. Điều này có nghĩa là mỗi khi trang Web động được nạp lại (refresh), d ữ li ệu trình bày trên trang Web được đọc từ cơ sở dữ liệu.
Do yêu cầu của đề tài thu ần túy là gi ới thiệu sản phẩm, không có các phép toán phức tạp để xử lý thông tin, mà chủ yếu chỉ là các phép toán truy tìm, trích lọc, sắp xếp thông tin tương đối đơn giản. Các dữ liệu của đề tài thuộc loại đơn giản, có th ể được tổ ch ức một cách d ễ dàng thành c ơ sở dữ li ệu bởi một hệ quản trị cơ sở dữ liệu do đó em chọn ngôn ngữ thực hiện chương trình là PHP và hệ quản trị cơ sở dữ liệu MySQL.
1. Giới thiệu và sử dụng PHP 1.1 - Giới thiệu a) Lịch sử ra đời: Năm 1995, Rasmus Lerdorf t ạo ra PHP nh ằm giải quyết việc viết lặp đi lặp lại cùng đoạn mã khi t ạo các trang. Ban đầu tác gi ả chỉ có ý định tạo bộ phân giải đơn giản để thay thế các thẻ lệnh trong file HTML b ằng các đoạn mã lệnh viết bằng C.
Ngôn ngữ
10/2000
Tỉ lệ phát triển
Thị phần
03/2002 157,4707,549,2304694%30%
48% 2% 20%
3,166,71011,958,185278% 24,435413,8271594% 936,2234,950,133429%
Php(php,php3,phtml) Asp Jsp Cfm (ColdFusion)
2
- Kiểu ASP: <% echo “Đây là kiểu ASP”; %> b) Gọi hàm trong PHP Để gọi hàm trong PHP, khai báo t ương tự như gọi hàm trong các ngôn ng ữ lập trình khác, hầu hết các hàm khi gọi cần truyền tham số và giá trị trả về. VD: Gọi hàm date()
echo “Hôm nay là: ”.date(“d/m/Y”); ?>
c) Truy cập biến Form Thông th ường khi c ần lấy dữ li ệu của ng ười dùng nh ập, chúng ta s ẽ dùng thẻ form trong trang web nhằm ràng buộc tất cả các thẻ input, selec, textarea...
Dữ liệu đến từ script đều là biến PHP, chúng ta có th ể nhận biết chúng bằng cách sử dụng dấu $ tr ước tên bi ến. Có hai cách để truy cập dữ liệu trên form thông qua biến. - Để ị của các th ẻ trong form theo d ạng POST:
lấy giá tr $_POST[‘tên_thẻ’] Để lấy giá trị của các thẻ trong form theo dạng GET: $_GET[‘tên_thẻ’]
- d) Khai báo biến: PHP Engine không c ần yêu cầu khai báo bi ến trước khi sử dụng, tuy nhiên nên tập thói quen khai báo và kh ởi tạo giá tr ị ban đầu cho bi ến tr ước khi s ử dụng chúng.
e) Gán giá trị cho biến Để gán giá tr ị cho bi ến, nếu biến đó chưa khai báo tr ước đó, biến này được coi như vừa khai báo và kh ởi tạo. Trong trường hợp biến đã khai báo, biến này chỉ thay đổi giá trị. VD: f) Kiểu dữ liệu của biến trong PHP PHP hỗ trợ 5 kiểu dữ liệu - Interger: Sử dụng hầu hết cho giá trị có kiểu dữ liệu là số. - Double: Sử dụng hầu hết cho giá trị có kiểu dữ liệu là số thực. - String: Sử dụng hầu hết cho giá trị có kiểu dữ liệu là chuỗi, ký tự.
4
- Array: Sử dụng hầu hết cho giá tr ị có ki ểu dữ liệu là mảng có các ph ần tử cùng kiểu dữ liệu.
- Object: Sử dụng hầu hết cho giá trị có kiểu dữ liệu là đối tượng của lớp. g) Toán tử trong PHP * Các phép toán số học
ụ
Cộng $a + $b; ừ $a - $b;
Toán tử Tên Ví d + - Tr * Nhân $a*$b; / Chia $a/$b; % Modulo $a%$b;
* Các phép toán gán kết hợp
Sử dụng Tương tự
Toán tử += $a+=$b $a=$a + $b; ++ $a++ $a=$a + 1; -= $a-=$b $a=$a - $b; -- $a-- $a=$a-1; *= $a*=$b $a=$a*$b; /= $a/=$b $a=$a/$b; %= $a%=$b $a=$a%$b; .= $a.=$b $a=$a.$b;
ĩa Ký hiệu Sử dụng Ý ngh * Các phép logic Phép toán
ủ định
! NOT !$a Phép toán ph && AND $a &&
$b Trả về true n ếu cả hai bi ến có giá tr ị true. Ngược lại là false
|| OR $a || $b Tr ả về true nếu $a hay $b hay c ả hai biến có
and AND $a and $b giá trị true Trả về true n ếu cả hai bi ến có giá tr ị true. Ngược lại là false
or OR $a or $b Tr ả về true nếu $a hay $b hay c ả hai biến có giá trị true
* Các phép toán so sánh
Sử dụng Ý ngh ĩa so sánh
Phép toán = = $a= =$b $a b ằng $b
5
ằng và cùng kiểu dữ liệu với $b
ằng $b ằng $b
ỏ hơn $b ỏ hơn hoặc bằng $b
= = = $a = = = $b $a b != $a!=$b $a không b <> $a<>$b $a không b < $a<$b $a nh <= $a<=$b $a nh > $a>$b $a l >= $a>=$b $a l ớn hơn $b ớn hơn hoặc bằng $b
h) Kiểm tra biến trong PHP - is_array(): Kiểm tra biến là array hay không. - is_double(): Kiểm tra biến là double hay không. - is_float(): Kiểm tra biến là float hay không. - is_real(): Kiểm tra biến là real hay không. - is_long(): Kiểm tra biến là long hay không. - is_int(): Kiểm tra biến là int hay không. - is_interger(): Kiểm tra biến là integer hay không. - is_string(): Kiểm tra biến là string hay không. - is_object(): Kiểm tra biến là object hay không. - isset(): Nếu biến tồn tại hàm trả về giá trị true, ngược lại trả về false. - empty(): Cho phép kiểm tra biến tồn tại và không rỗng, có chiều dài khác 0 trả về true, ngược lại là false. Để sử dụng tất cả các hàm trên, c ần ph ải truy ền vào hàm bi ến PHP d ưới dạng tham số.
i) Phát biểu có điều khiển
• Phát biểu If: Phát bi ểu if với một điều kiện, nếu điều kiện là true thì khối lệnh trong phát bi ểu If s ẽ được thực hiện, điều ki ện được khai báo trong dấu () VD: $a = 10; $b=6; if($a>$b) echo $a+$b;
Kh ối lệnh trong b ất kỳ phát bi ểu điều khi ển nào c ũng có th ể sử dụng dấu { và }. Có ngh ĩa là n ếu kh ối lệnh trong phát bi ểu lớn hơn 1 thì ph ải sử dụng hai dấu trên.
echo $a+$b;
• Phát biểu Else: phát bi ểu else luôn là tr ường hợp ngược lại của phát biểu if v ới một điều ki ện, nếu điều ki ện là true thì kh ối lệnh trong phát bi ểu if s ẽ được th ực hi ện, ng ược lại kh ối lệnh trong phát bi ểu else sẽ được thực hiện. VD: $a = 10; $b=6; if($a>$b) else $b=$a+1;
6
Tương tự nh ư trong tr ường hợp phát bi ểu if, n ếu kh ối lệnh trong phát biểu điều khiển else có h ơn 1 dòng l ệnh thì sẽ phải khai báo s ử dụng dấu { và }.
• Phát biểu Switch: tương tự như phát biểu if, nh ưng trong trường hợp có nhiều hơn hai tùy chọn cụ thể cho phép quyết định.
Điểm trung bình”; break; Điểm khá”; break; Điểm giỏi”; break; ập lại”;
VD: switch($diem) { case “5”: echo “ case “7”: echo “ case “10”: echo “ deafault: echo “Nh } Nếu đúng điều kiện case, cần khai báo phát bi ểu break nh ằm thoát ra kh ỏi phát biểu switch. Trong tr ường hợp không khai báo break trong m ỗi phát bi ểu case, nếu thỏa mãn điều kiện trong case nh ưng PHP vẫn tiếp tục thực hiện tiếp các phát biểu case sau đó.
• Phát biểu While: phát biểu vòng lặp đơn giản nhất trong PHP là vòng lặp while cho phép b ạn th ực thi kh ối lệnh trong while cho đến khi điều kiện của while là true như cú pháp
ệnh thực hiện; While (điều kiện) { câu l }
• Phát biểu do ... while: t ương tự như while nh ưng kiểm tra điều kiện sau khi thực hiện khối lệnh.
ệnh thực hiện;
do { câu l } while (điều kiện)
• Phát biểu vòng lặp for: tương tự như trong phát bi ểu while, có th ể sử
dụng vòng lặp for với 1 giới hạn chỉ định.
ối lệnh thực hiện;
for (giá tr ị khởi đầu; điều kiện giới hạn; giá tr ị lặp của vòng lặp for) { kh }
j) Lưu trữ và truy vấn dữ liệu bằng PHP
• Mở file bằng PHP:
o fopen(tên file, chế độ mở): mở file o fputs(), fwrite(): ghi file o fclose(): Đóng file
7
o feof(): Nhận giá trị true nếu con trỏ ở cuối file o file_exists(): Kiểm tra file có tồn tại o filesize(): kiểm tra dung lượng của file o unlink(): xóa file
Chế độ mở file:
Mở dưới dạng Read-Only Mở dưới dạng Read-Write Mở dưới dạng Write-Only
Mode Diễn giải R r+ w w+ Mở dưới dạng Write-Read. N ếu file này t ồn tại, nội dung s ẽ bị xóa,
a
a+
nếu không tồn tại chúng sẽ được tạo ra. Mở dưới dạng append d ữ li ệu (write), n ếu nội dung t ồn tại, bắt đầu cuối cùng c ủa nội dung, d ữ li ệu sẽ được ghi ti ếp ph ần cu ối, trong trường hợp file không tồn tại chúng sẽ được tạo ra. Mở dưới dạng append dữ liệu (write & read), nếu nội dung tồn tại, bắt đầu phần đầu của nội dung, dữ liệu sẽ được ghi ti ếp phần đầu, trong trường hợp file không tồn tại chúng sẽ được tạo ra.
• Thiết lập kết nối cơ sở dữ liệu
Để kết nối cơ sở dữ liệu MySQL, cần cung cấp tên Server hay IP (có th ể là localhost) của máy ch ứa cơ sở dữ li ệu MySQL, Username và Password để đăng nhập làm việc trên cơ sở dữ liệu được mở. - Thiết lập kết nối:
ết nối được với CSDL”); echo “Không k
Int mysql_pcconnect(“serverbname”, “username”, “password”); if(!$db) { } hoặc
$link = mysql_connect(“servername”, “username”, “password”) or die(“Không kết nối được với CSDL”);
- Mở một CSDL:
mysql_select_db(“database name”); hoặc mysql_select_db(“database name”, $link);
- Đóng kết nối cơ sở dữ liệu: mysql_close(database_connection); - Truy vấn cơ sở dữ liệu:
Int mysql_query(string sql); Int mysql_query(string sql, [int db_connect]); Int mysql_query(string database, string sql, [int db_connect]); - Số lượng mẩu tin : mysql_num_rows(); Cho bi ết số lượng mẩu tin câu truy vấn trả về
8
- Truy vấn dữ liệu:
Int mysql_fetch_array($result); Mysql_fetch_object($result);
- Dung lượng của tập mẩu tin: int mysql_free_result(int $result); 2. Giới thiệu MySQL 2.1 - MySQL là gì? MySQL là một hệ quản trị cơ sở dữ liệu mã nguồn mở dành cho máy tính cá nhân. MySQL còn đang trên đà phát tri ển, nhưng các lệnh cơ bản của SQL có thể thử nghiệm được trên cơ sở dữ liệu MySQL.
MySQL là cơ sở dữ liệu được sử dụng cho các ứng dụng Web có quy mô vừa và nh ỏ. Tuy không ph ải là m ột cơ sở dữ li ệu lớn nh ưng chúng c ũng có trình giao di ện trên Windows hay Linux, cho phép ng ười dùng có th ể thao tác các hành động liên quan đến cơ sở dữ liệu. Cũng giống như các h ệ cơ sở dữ liệu khác, khi làm việc với cơ sở dữ liệu MySQL bạn đăng ký kết nối, tạo cơ sở dữ liệu, quản lý người dù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.
2.2 - Nơi cung cấp MySQL? Có thể download tại website www.mysql.com qua mạng Internet phần mềm hệ quản trị cơ sở dữ liệu server/client đến các phần mềm tiện nghi và các ph ần mềm giao diện đẹp mắt và tiện dụng.
2.3 – Các kiểu dữ liệu trong cơ sở dữ liệu MySQL a) Loại dữ liệu numeric
S ễn giải ố nguyên rất nhỏ
Loại Range Bytes Di Tinyint -127 ->128 hay 0..255 1 Smallint -32768 -> 32767 hay Số nguyên nhỏ 2 0..65535
Mediumint -8388608 -> 838860 hay Số nguyên vừa 3 0..16777215
31 -> 231 hay 0..232-1 4 63 -> 263 hay 0..264-1 8 ụ thuộc số thập phân
Int -2 Bigint -2 Float ph S S S ố nguyên ố nguyên lớn ố th ập phân d ạng
Float(M,D) ±1.175494351E-38 4 ±3.40282346638
Double(M,D) ±1.7976931348623157308 8 ±2.2250738585072014E-308 Single hay Double Số th ập phân d ạng Single Số th ập phân d ạng Double
Float(M[,D]) S ố ch ấm động lưu dưới dạng char
9
b) Loại dữ liệu Date and Time
ễn giải ưới dạng YYYY-mm- Loại Range Di Date 1000-01-01 Date trình bày d
dd Time trình bày dưới dạng hh:mm:ss Time 00:00:00 23:59:59
ưới dạng DateTime 1000-01-01 Date và Time trình bày d YYY-mm-dd hh:mm:ss
ưới dạng 00:00:00 9999-12-31 23:59:59 TimeStamp[(M)] 1970-01-01 00:00:00
TimeStamp trình bày d YYYY-mm-dd hh:mm:ss Year trình bày dưới dạng 2 số hay 4 số Year[(2|4)] 1970-2069 1901-2155
Trình bày đại diện của TimeStamp
ển thị
Loại Hi TimeStamp YYYYMMDDHHMMSS TimeStamp(14) YYYYMMDDHHMMSS TimeStamp(12) YYMMDDHHMMSS TimeStamp(10) YYMMDDHHMM TimeStamp(8) YYYYMMDD TimeStamp(6) YYMMDD TimeStamp(4) YYMM TimeStamp(2) YY
(y = năm, m = tháng, d = ngày) c) Loại dữ liệu String
ự Chi Loại Range Di Char 1-255 ký t ễn giải ều dài của chuỗi lớn nhất 255 ký
tự
ự Chi Varchar 1-255 ký t ều dài của chuỗi lớn nhất 255 ký tự
Tinyblob 28-1 Khai báo cho Field ch ứa ki ểu đối tượng nhị phân cỡ 255 ký tự
Tinytext 28-1 Khai báo cho Field ch ứa ki ểu chu ỗi cỡ 255 ký tự
Blob 216-1 Khai báo cho Field ch ứa ki ểu blob cỡ 65535 ký tự
Text 216-1 Khai báo cho Field ch ứa ki ểu chu ỗi dạng văn bản cỡ 65535 ký tự
ứa ki ểu blob Mediumblob 224-1 Khai báo cho Field ch
10
vừa khoảng 16777215 ký tự
Mediumtext 224-1 Khai báo cho Field ch
Longblob ứa ki ểu chu ỗi dạng văn bản vừa khoảng 16777215 ký tự 232-1 Khai báo cho Field ch ứa ki ểu blob lớn khoảng 4294967295 ký tự
Longtext 232-1 Khai báo cho Field ch ứa ki ểu blob vừa khoảng 4294967295 ký tự
2.4 – Phát biểu SQL
Tạo cơ sở dữ liệu:
Create Database
Select
b) Phát biểu Insert
Insert into
Update
d) Phát biểu Delete
Delete from
Một số hàm thông dụng trong MySQL
11
Hàm AVG: Hàm tr ả về giá tr ị bình quân c ủa cột hay tr ường trong câu truy vấn
VD: select AVG(Amount) From tblOrder Hàm MIN: Hàm tr ả về giá tr ị nh ỏ nh ất của cột hay tr ường trong câu truy vấn
VD: select MIN(Amount) From tblOrder Hàm MAX: Hàm tr ả về giá tr ị lớn nh ất của cột hay tr ường trong câu truy vấn
VD: select MAX(Amount) From tblOrder Hàm Count: Hàm trả về số lượng mẩu tin trong câu truy vấn VD: select Count(*) From tblOrder Hàm Sum: Hàm trả về tống các giá trị của trường, cột trong câu truy vấn VD: select SUM(Amount) From tblOrder Hàm CurDate(): hàm trả về ngày, tháng, năm hiện hành của hệ thống VD: select curdate() as ‘Ngay hien tai’ Hàm CurTime(): Hàm trả về giờ phút giây hiện hành của hệ thống VD: select curtime() as ‘Thoi gian’
12
Chương III: Phân tích hệ thống Phân tích h ệ th ống theo ngh ĩa chung nh ất là kh ảo sát nh ận di ện và phân định các thành ph ần của một phức hợp và ch ỉ ra các m ối liên hệ giữa chúng. Theo nghĩa hẹp phân tích h ệ th ống là giai đoạn 2, đi sâu vào các thành ph ần của hệ thống.
Phân tích hệ thống bao gồm việc phân tích về chức năng xử lý và phân tích về dữ liệu (dữ liệu là đối tượng xử lý)
Phân tích hệ thống về xử lý Sự phân tích h ệ thống về mặt xử lý nh ằm mục đích lập mô hình x ử lý của hệ thống, để trả lời câu hỏi “Hệ thống làm gì?”, tức là đi sâu vào câu hỏi “Làm gì?” mà gạt bỏ câu hỏi “Làm như thế nào?” chỉ diễn tả mục đích, bản chất của quá trình xử lý mà b ỏ qua các yếu tố về thực hiện cài đặt (là các yếu tố về vật lý). Giai đoạn này gọi là giai đoạn thiết kế logic, phải được thực hiện một cách
hoàn chỉnh để chuẩn bị cho giai đoạn thiết kế vật lý.
Website giới thiệu bánh kẹo
Phục vụ Khách hàng Phục vụ quản trị
Quản lý sản phẩm Tìm kiếm sản phẩm theo yêu cầu Xem theo nhóm sản phẩm Quản lý người dùng Xem thông tin chi tiết từng sản phẩm Thống kê về danh mục sản phẩm hiện có
Biểu đồ phân cấp chức năng
13
Yêu cầu tìm kiếm
Yêu cầu xem thống kê
Xem thông tin
KQ thống kê
Đáp ứng yêu cầu
Đáp ứng yêu cầu
Kết quả tìm kiếm
Yêu cầu cập nhật
KHÁCH HÀNG NHÂN VIÊN Website giới thiệu sản phẩm bánh kẹo
Biểu đồ Luồng dữ liệu mức khung cảnh
Yêu cầu xem thông tin
Đáp ứng yêu cầu
Kết quả tìm kiếm
KHÁCH HÀNG
Yêu cầu tìm kiếm
NSD
Mặt hàng Lo
ại hàng
Đơn vị tính
Cập nhật loại hàng
Cập nhật mặt hàng
Cập nhật Đơn vị tính
Yêu cầu cập nhật
Cập nhật NSD
Đáp ứng yêu cầu
Phục vụ khách hàng
Phục vụ quản trị
Yêu cầu thống kê
KQ thống kê
NHÂN VIÊN
Biểu đồ Luồng dữ liệu mức đỉnh
14
Mặt hàng
Yêu cầu tìm kiếm
KQ tìm kiếm
Yêu cầu xem theo loại sản sản phẩm
Loại hàng
TÌM KIẾM
Đáp ứng Yêu cầu
Đơn vị tính
Yêu cầu xem chi tiết
XEM THEO LOẠI SẢN PHẨM KHÁCH HÀNG
XEM CHI TIẾT SẢN PHẨM
Biểu đồ luồng dữ liệu mức dưới đỉnh (Chức năng phục vụ khách hàng)
Yêu cầu cập nhật sản phẩm
Đơn vị tính
QUẢN LÝ SẢN PHẨM
Thông tin đáp ứng
Mặt hàng
Yêu cầu thống kê
Loại hàng
NHÂN VIÊN
KQ thống kê
Thông tin đáp ứng
Người sử dụng
THỐNG KÊ BÁO CÁO
Yêu cầu cập nhập người dùng
NHÂN VIÊN QUẢN LÝ NGƯỜI DÙNG
Biểu đồ luồng dữ liệu mức dưới đỉnh (Chức năng phục vụ quản trị)
15
Mô hình quan hệ thực thể liên kết
Chương IV: Thiết kế chương trình
I. Thiết kế cơ sở dữ liệu: Bảng chứa thông tin mặt hàng
Bảng chứa thông tin nhóm mặt hàng
16
Bảng chứa thông tin Đơn vị tính
Bảng chứa thông tin người dùng
Câu lệnh SQL tạo cơ sở dữ liệu: # Tạo bảng tbldonvitinh CREATE TABLE /*!32300 IF NOT EXISTS*/ tbldonvitinh ( MaDVT tinyint(3) unsigned NOT NULL auto_increment, TenDVT varchar(255) NOT NULL DEFAULT '' , PRIMARY KEY (MaDVT) ); # Tạo bảng tblmathangxuat CREATE TABLE /*!32300 IF NOT EXISTS*/ tblmathangxuat ( MaMatHangXuat tinyint(3) unsigned NOT NULL auto_increment, TenHang varchar(255) NOT NULL DEFAULT '' , MaNhomMatHang tinyint(3) unsigned NOT NULL DEFAULT '0' , MaDVT tinyint(4) NOT NULL DEFAULT '0' , Anh varchar(255) NOT NULL DEFAULT '' , GhiChu varchar(255) , TinhTrang tinyint(3) unsigned NOT NULL DEFAULT '1' , DonGia int(10) unsigned NOT NULL DEFAULT '0' , NgayNhap date NOT NULL DEFAULT '0000-00-00' , PRIMARY KEY (MaMatHangXuat) ); # Tạo bảng tblnhommathang CREATE TABLE /*!32300 IF NOT EXISTS*/ tblnhommathang ( MaNhomMatHang tinyint(3) unsigned NOT NULL auto_increment, TenNhomMatHang varchar(255) NOT NULL DEFAULT '' , PRIMARY KEY (MaNhomMatHang) );
17
# Tạo bảng tblnsd CREATE TABLE /*!32300 IF NOT EXISTS*/ tblnsd ( MaNSD tinyint(3) unsigned NOT NULL auto_increment, TenTruyNhap varchar(50) NOT NULL DEFAULT '' , MatKhau varchar(50) NOT NULL DEFAULT '' , Quyen tinyint(3) unsigned NOT NULL DEFAULT '0' , PRIMARY KEY (MaNSD) ); Hướng dẫn sử dụng chương trình - Ngôn ngữ sử dụng là PHP, webserver là IIS - Cài đặt PHP - Cài đặt hệ quản trị CSDL MySQL - Sau khi cài xong thì ch ạy tập tin mysqlfront.exe (ph ần mềm client kết nối với MySQL)
-Nhấp Connect sẽ hiện ra cửa sổ => Tools =>Creat Database => Đặt tên là
gioithieusp. Sau đó nhấp vào Tab Query => Load SQL => Chỉ đến tập tin banhkeo.sql => Chọn Run
- Cài đặt IIS => Start => Control Panel => Add or Remove Programs => Add/Remove Windows Components => Internet Infomation Services (IIS)
18
Các giao diện chương trình 1) Trang chủ
19
2) Trang liệt kê theo nhóm sản phẩm Khi người dùng chọn chức năng xem theo nhóm s ản phẩm thì các mặt hàng thuộc nhóm sản phẩm đó sẽ được liệt kê như hình dưới đây:
3) Trang xem chi tiết sản phẩm Khi mu ốn xem thông tin chi ti ết về sản ph ẩm nào đó, khách hàng ch ỉ cần nhấp vào link “Chi tiết”
20
4) Trang đăng nhập Để truy cập chức năng quản lý, người dùng phải đăng nhập với tên truy cập và mật khẩu. Giao diện như hình dưới đây:
5) Trang thêm sản phẩm mới
21
6) Trang danh sách sản phẩm
7) Trang sửa thông tin sản phẩm
22
8) Trang quản lý Nhóm sản phẩm
9) Trang quản lý Đơn vị tính
10) Trang quản lý người dùng
23
11) Trang thống kê sản phẩm
12) Trang thông báo lỗi khi người dùng không có quyền thao tác
24
Chương V: Viết Code
0) { session_unset('login'); //Hủy session có tên login while($row=mysql_fetch_array($result)) { //Đăng ký các biến Session
$_SESSION['username']=$row['TenTruyNhap']; $_SESSION['Quyen']=$row['Quyen'];
$_SESSION['login']="Y";
echo '';
echo '
Đăng nhập thành công!!!
'; echo '
'; echo 'Nhấp vào đây nếu trình duyệt không tự động chuyển
1) Đoạn mã kiểm tra đăng nhập
Tim theo ten hang & don gia (chon mac dinh)
Tim theo ten san pham
//Tim theo gia
switch($_POST['cboTimTheo']) { case "all": // $sql="select * from tblmathangxuat where TenHang like '%".$_POST['txtTukhoa']."%' or DonGia='".$_POST['txtTukhoa']."'"; break; case "tensp": // $sql="select * from tblmathangxuat where TenHang like '%".$_POST['txtTukhoa']."%'"; break; case "gia": $sql="select * from tblmathangxuat where DonGia between '".$_POST['txtGiaBegin']."' and '".$_POST['txtGiaEnd']."'"; break; } $result=mysql_query($sql,$link);
//Thực thi câu lệnh SQL
2) Đoạn mã trang kết quả tìm kiếm
25
Đếm tổng số bản ghi tìm
ết quả tìm kiếm
ếu ko tìm thấy
ấy sản phẩm
ặp đọc từng bản ghi
ết hàng';
$totalRows=mysql_num_rows($result); // thấy ........ //Trình bày k If($totalRows<0) //N { echo "
| STT | Tên sản phẩm | Đơn giá | Tình tr ạng |
ởi động session
3) Đoạn mã trang Cập nhật thông tin sản phẩm
26
ạn không được phép
ập tin kết nối CSDL
ử lý hành động
ường hợp thêm sản phẩm
ường hợp cập nhật sản phẩm
$sql_img="";
{ }
{
ệnh SQL cập nhật thông tin sản phẩm
ường hợp xóa sản phẩm
ếu chưa chọn mặt hàng nào để xóa thì thông báo lỗi
ạn chưa chọn Mặt Hàng nào!\nVui
echo '
B truy cập trang này!
'; else { require("../include/csdl.inc"); //chèn t $edit=$_POST['SubFormItem']; //x switch($edit) { case "Thêm": //Tr $uploaddir = '..\\images\\uploads\\'; $uploadfile = $uploaddir.basename($_FILES['imgAnhMatHang']['name']); #Copy file ảnh lên thư mục uploads move_uploaded_file($_FILES['imgAnhMatHang']['tmp_name'], $uploadfile); #Th ực hiện câu lệnh SQL thêm thông tin vào CSDL $sql="insert into tblmathangxuat(TenHang,MaNhomMatHang,MaDVT, Anh, GhiChu, DonGia,NgayNhap)"; $sql.=" values('".$_POST['txtTenMatHang']."','".$_POST['cboNhomMatHang']."',' ".$_POST['cboDonViTinh']."','".basename($_FILES['imgAnhMatHang']['nam e'])."','".$_POST['txtGhiChuMatHang']."','".$_POST['txtDonGiaMatHang' ]."','".date("Y-m-d")."')"; break; case "C ập nhật": //Tr $uploaddir = '..\\images\\uploads\\'; $uploadfile = $uploaddir.basename($_FILES['imgAnhMatHang']['name']); if($_FILES['imgAnhMatHang']['name']=="") else $sql_img="Anh='".basename($_FILES['imgAnhMatHang']['name'])."'," ; move_uploaded_file($_FILES['imgAnhMatHang']['tmp_name'], $uploadfile); } #Câu l $sql="Update tblmathangxuat set TenHang='".$_POST['txtTenMatHang']."', MaNhomMatHang='".$_POST['cboNhomMatHang']."',"; $sql.=" MaDVT='".$_POST['cboDonViTinh']."',".$sql_img."TinhTrang='".$_POST['c boTinhTrangMatHang']."', GhiChu='".$_POST['txtGhiChuMatHang']."',"; $sql.=" DonGia='".$_POST['txtDonGiaMatHang']."', NgayNhap='".$_POST['txtNgayNhap']."' where MaMatHangXuat='".$_POST['txtMaMatHangXuat']."'"; break; case "Xóa": //Tr #N if(empty($_POST['MatHangID'])) { echo '';ếu ko thì
ặp để lấy mã sản phẩm (trong trường hợp xóa nhiều
$id.=$value.',';
{ }
ảnh trong thư mục uploads
#Hàm xóa file unlink("..\\images\\uploads\\".$dodel['Anh']);
} # N else { if(is_array($_POST['MatHangID'])) { $id=""; #dùng vòng l sản phẩm) while(list($key,$value) = each($_POST['MatHangID'])) } #Định dạng các mã sp vừa lấy được cho phù hợp với câu lệnh SQL $id=str_replace(",","','", $id); #Câu lệnh SQL để xóa thông tin sản phẩm $sql="delete from tblmathangxuat where MaMatHangXuat IN ('".$id."')"; $del="select Anh from tblmathangxuat where MaMatHangXuat In ('".$id."')"; $del_result=mysql_query($del,$link); while($dodel=mysql_fetch_array($del_result)) { } } break; }
đóng kết nối csdl
#Thực thi phát biểu SQL $result=mysql_query($sql,$link); mysql_close(); // echo ''; } ?>
ập tin kết nối csdl
//l
ựa chọn hành động
ường hợp thêm người dùng
...... require("../include/csdl.inc"); //chèn t $act=$_POST['SubFormUser']; // switch($act) { case "Thêm": //tr #ki
ểm tra xem đã tồn tại tên truy nhập chưa?
$check="select * from tblnsd where
TenTruyNhap='".$_POST['txtTenTruyNhap']."'";
#nếu có rồi thì thông báo lỗi if(mysql_num_rows(mysql_query($check,$link))>0)
ập này đã tồn tại trong
echo ''; #n
ếu chưa thì
else #câu l
ệnh sql thêm người dùng
4) Đoạn mã cập nhật thông tin người dùng
28
$sql="insert into tblnsd(TenTruyNhap,MatKhau,Quyen)
break;
values('".$_POST['txtTenTruyNhap']."','".md5($_POST['txtMatkhau'])."' ,'".$_POST['cboQuyen']."')";
ường hợp cập nhật
case "Cập nhật": //tr #n
ếu người dùng ko thay đổi mật khẩu
if(empty($_POST['txtMatkhau'])) { #câu l
ệnh sql cập nhật quyền truy cập
#câu l
$sql="update tblnsd set Quyen='".$_POST['cboQuyen']."' where MaNSD='".$_POST['lstUser']."'"; } #nếu người dùng đổi mật khẩu else { ệnh sql cập nhật quyền & mật khẩu
$sql="update tblnsd set MatKhau =
}
'".md5($_POST['txtMatkhau'])."', Quyen='".$_POST['cboQuyen']."' where MaNSD='".$_POST['lstUser']."'"; break;
case "Xóa": //trường hợp xóa người dùng $sql="delete from tblnsd where MaNSD='".$_POST['lstUser']."'";
//thực thi câu lệnh sql //đóng kết nối csdl
break; } $result=mysql_query($sql,$link); mysql_close(); .... Các trang cập nhật Đơn vị tính, cập nhật Nhóm mặt hàng cũng tương tự trang này.
nếu ko có bản ghi nào
nếu có
#câu lệnh sql lấy thông tin mặt hàng & nhóm mặt hàng, sắp xếp theo tên nhóm mặt hàng $sql="select *,DATE_FORMAT(NgayNhap,'%d/%m/%Y') as Nhap from tblmathangxuat,tblnhommathang"; $sql.=" where tblmathangxuat.MaNhomMatHang=tblnhommathang.MaNhomMatHang"; $sql.=" order by TenNhomMatHang DESC"; #thực thi câu lệnh sql $truyvan=mysql_query($sql,$link); #đếm tổng số bản ghi $num=mysql_num_rows($truyvan); if($num==0) // { echo '
Không có s ản phẩm nào trong cơ sở dữ liệu!
5) Đoạn mã trang thống kê sản phẩm
29
#đọc từng bản ghi = vòng lặp while
while($row_truyvan=mysql_fetch_object($truyvan))
{ $i++; ?>
.........
#nếu đã đăng ký biến session thì if(session_is_registered('login')) { #hủy sessionn
//gán trạng thái chưa đăng nhập
ền = 0
session_unregister('login'); session_unregister('Quyen'); session_destroy(); $_SESSION['login']="N"; $_SESSION['Quyen']=0; //gán quy }
6) Đoạn mã trang Đăng xuất
Hướng phát triển chương trình
• Cung cấp khả năng mua hàng & thanh toán trực tuyến • Phát triển thêm một vài chức năng để website “động” hơn nữa
30
Kết luận:
Thời gian th ực tập vừa qua đã giúp chúng em ti ến bộ rất nhi ều trong vi ệc học hỏi, nghiên c ứu về công ngh ệ thông tin c ũng nh ư vi ệc thi ết kế Website. Không những thế, đợt thực tập này cũng giúp chúng em tìm ra được cách làm việc hiệu quả nhất đối với phương pháp làm việc theo nhóm.
Việc thiết kế Web này được dựa trên ngôn ngôn ng ữ lập trình PHP, HTML, và cơ sở dữ li ệu MySQL. Website được dùng để gi ới thi ệu sản ph ẩm trên mạng. Do còn nhi ều hạn chế về mặt thời gian, ki ến thức và kinh nghi ệm làm vi ệc nên bài th ực tập không th ể tránh kh ỏi những khiếm khuyết và sai sót. Vì v ậy, chúng em rất mong được sự đóng góp ý ki ến của thầy cô để chúng em có th ể hoàn thiện đề tài hơn nữa.
Cuối cùng, chúng em xin bày t ỏ lòng bi ết ơn sâu s ắc đến th ầy Đào Tr ần Minh đã tận tình hướng dẫn chúng em trong th ời gian hoàn thành bài th ực tập chuyên ngành này.
Hà Nội, ngày 1/3/2006 Sinh viên
Đỗ Nam Khánh Vũ Mạnh Linh
31
Tài liệu tham khảo
Các website:
1. http://diendantinhoc.org 2. http://www.manguon.com 3. http://www.php.net 4. http://javascript.internet.com/
Tài liệu
1. MySQL /PHP Database Applications 2. MySQL Manual 3. Xây dựng ứng dụng web bằng PHP & MySQL (Phạm Hữu Khang) 4. Hướng dẫn thi ết kế trang web t ương tác b ằng Javascript (Nguy ễn Trường Sinh)
32

