1
MỤC LỤC
MỤC LỤC 1
PHẦN 1 : CƠ SỞ LÝ THUYẾT 2
!
"
#$%&
'()
*
%+'
, /012345
PHẦN 2 : XÂY DỰNG HỆ THỐNG 37
.67089%:;<.=;.>08
)
1.5Các dạng trắc nghiệm ngoại ngữ có thể thực hiện: 42
"?@(A( *BCDEFG(( *BCHI,
"?@(HI(,
",?@(H( 2J,
""?@(K*H(,
"&?@(LMNOPMQHRS,
.67089 T0;U..=;.>08
,"
2.1PHÂN TÍCH CHỨC NĂNG 45
%4(VJWS9,)
,CHXDXY1D("
"Z[4MQ!VJ\O"5
2.2.PHÂN TÍCH DỮ LIỆU 64
%\]&,
Z[44Y1D(&"
.67089;.^_;`_abcTd#e08.6708;fg0.
5
3.1THIẾT KẾ KIỂM SOÁT (PHÂN NHÓM NGƯỜI DÙNG): 83
cH3h4Mi95
-?H3AMBj(Yk95,
+H3] RAMBj(Yk5,
3.2THIẾT KẾ CƠ SỞ DỮ LIỆU VẬY LÝ: 85
c?YE4Cl1D(m%+'95"
'BnHX]#(M9o
3.3 THIẾT KẾ GIAO DIỆN: 92
2piqYr9o
%YDO9o
(VJso
KẾT LUẬN 103
LỜI CẢM ƠN 104
TÀI LIỆU THAM KHẢO 105
2
PHẦN 1 : CƠ SỞ LÝ THUYẾT
CHƯƠNG 1: MỘT SỐ CÔNG NGHỆ WEB
1.1Giới thiệu về web 2.0 và công nghệ Ajax
1.1.1. Web 2.0.
Web 2.0 hội tụ 7 đặc tính sau
1. Web có vai trò nền tảng, có thể chạy mọi ứng dụng
2. Tập hợp trí tuệ cộng đồng
3. Dữ liệu có vai trò then chốt
4. Phần mềm được cung cấp ở dạng dịch vụ web và được cập nhật không
ngừng
5. Phát triển ứng dụng dễ dàng và nhanh chóng
6. Phần mềm có thể chạy trên nhiều thiết bị
7. Giao diện ứng dụng phong phú
Kiến trúc công nghệ của Web 2.0 hiện vẫn đang phát triển nhưng cơ
bản bao gồm: phần mềm máy chủ, cơ chế cung cấp nội dung, giao thức
truyền thông, trình duyệt và ứng dụng.
Cung cấp nội dung
Sử dụng các giao thức chuẩn hoá để cho phép người dùng sử dụng
thông tin theo cách của mình (nghĩa là có khả năng tùy biến thông tin). Có
nhiều giao thức được phát triển để cung cấp nội dung như RSS, RDF và
Atom, tất cả đều dựa trên XML. Ngoài ra còn có các giao thức đặc biệt
như FOAF và XFN dùng để mở rộng tính năng của website hay cho phép
người dùng tương tác.
Dịch vụ WEB
Các giao thức truyền thông 2 chiều là một trong những thành phần then
chốt của kiến trúc Web 2.0. Có hai loại giao thức chính là REST và
SOAP. REST (Representation State Transfer) là dạng yêu cầu dịch vụ
3
web mà máy khách truyền đi trạng thái của tất cả giao dịch; còn SOAP
(Simple Object Access Protocol) thì phụ thuộc máy chủ trong việc duy trì
thông tin trạng thái. Với cả hai loại, dịch vụ web đều được gọi qua API.
Ngôn ngữ chung của dịch vụ web là XML, nhưng có ngoại lệ.
Phần mềm máy chủ
Web 2.0 được xây dựng trên kiến trúc web thế hệ trước nhưng chú
trọng hơn đến phần mềm làm việc ở background. Cơ chế cung cấp nội
dung chỉ khác phương thức cấp phát nội dung động (của Web 1.0) về
danh nghĩa, tuy nhiên dịch vụ web yêu cầu tiến trình làm việc và dữ liệu
chặt chẽ hơn.
Các giải pháp phát triển theo hướng Web 2.0 hiện nay có thể phân làm
hai loại: hoặc xây dựng hầu hết tính năng trên một nền tảng máy chủ duy
nhất; hoặc xây dựng ứng dụng "gắn thêm" cho máy chủ web, có sử dụng
giao tiếp API.
1.1.2. Công nghệ Ajax.
Ajax là tập hợp của nhiều công nghệ với thế mạnh của riêng mình để
tạo thành một sức mạnh mới. AJAX bao gồm:
• Thể hiện web theo tiêu chuẩn XHTML và CSS.
• Nâng cao tính năng động và phản hồi bằng DOM (Document
Object Model)
• Trao đổi và xử lý dữ liệu bằng XML và XSLT
• Truy cập dữ liệu theo kiểu bất đồng bộ (asynchronous) bằng
XMLHttpRequest
• Và tất cả các công nghệ trên được liên kết lại với nhau bằng
JavaScript.
1.1.3. So sánh công nghệ Ajax và công nghệ web truyền thống
Điểm khác biệt cơ bản nhất của công nghệ Ajax và cách công nghệ web
truyền thống là việc xử lý thông tin được thực hiện trên máy khách
(Client) thay vì máy phục vụ (Server) như cách truyền thống. Máy chủ chỉ
4
làm một việc đơn giản là nhận thông tin từ máy khách và trả các dữ liệu
về cho máy khách. Máy khách xử lý sơ bộ thông tin của người dùng nhập
vào, sau đó chuyển về máy chủ rồi nhận dữ liệu từ máy chủ và xử lý để
hiển thị cho người dùng.
So sánh ứng dụng web truyền thống và Ajax
Các ứng dụng Ajax phần lớn trông giống như thể chúng được đặt trên
máy của người sử dụng hơn là được đặt trên một máy phục vụ thông qua
Internet. Lý do: các trang được cập nhật nhưng không nạp lại (refresh)
toàn bộ. "Mọi thao tác của người sử dụng sẽ gửi mẫu của một lời gọi
JavaScript tới bộ xử lý (engine) Ajax thay vì tạo ra một yêu cầu HTTP
(HTTP request)".
5
Sự tương tác đồng bộ trong ứng dụng web truyền thống và dị bộ trong ứng dụng
Ajax
1.2.Các công nghệ trong Ajax
JAX là một tập hợp các công nghệ bổ sung lẫn nhau. JavaScript có vai
trò chất keo kết dính các ứng dụng lại với nhau. Giao diện người dùng
được tạo và tái nạp bằng cách dùng JavaScript để điều khiển Document
Object Model, tạo và tổ chức biểu diễn dữ liệu cho người dùng, đồng thời
xử lí các tương tác trên chuột và bàn phím.
1.2.1. CSS
Cascading Style Sheets (CSS) cung cấp một sự nhất quán trên cảm
quan “look and feel” cho ứng dụng và khả năng thao tác mạnh mẽ với
DOM. Đối tượng XMLHttpRequest (hay một cơ chế tương đương nào đó)
được dùng để liên lạc một cách bất đồng bộ với server, đảm bảo việc gửi
yêu cầu người dùng và tái nạp dữ liệu trong khi người dùng vẫn làm việc.
Cascading Style Sheet – tạm dịch là bảng kiểu xếp chồng - là một phần
không thể thiếu trong thiết kế Web, nó được dùng rất nhiều trong các ứng
6
dụng Web truyền thống cũng như trong Ajax. Một stylesheet đưa ra cách
kiểm soát các loại định dạng trực quan, nó có thể được áp dụng cho các
thành phần riêng lẻ trên các trang.
Cú pháp của CSS gồm ba thành phấn:
• Thành phần lựa chọn (thường là một thẻ HTML) (Selector)
• Thuộc tính (Property)
• Giá trị (Value)
Thể hiện của cú pháp CSS
Selector {
Property1: Value1;
Property2: Value2;
}
Ưu điểm của CSS trong thiết kế web
• Giúp tiết kiệm được thời gian và công sức cho việc thiết kế web
• Cho phép điều khiển cách định dạng và cách bố trí của cùng lúc
nhiều trang web với chỉ duy nhất một lần thay đổi tại một vị trí.
• Có thể định nghĩa nhiều style vào một thẻ HTML
1.2.2. DOM
Document Object Model (DOM) giúp phân tích một tài liệu (một trang
web chẳng hạn) phục vụ cho cơ chế của JavaScript. Sử dụng DOM, cấu
trúc của tài liệu có thể được phân rã theo cấu trúc cây và thao tác theo các
nút. Đây là một khả năng đặc biệt hữu ích để viết một ứng dụng Ajax.
Trong các ứng dụng web truyền thống, trình duyệt phải tái nạp các
trang HTML theo một luồng từ server. Trong một ứng dụng AJAX, sự
thay đổi giao diện người dùng chủ yếu được tạo ra bởi DOM. Các thẻ
HTML trong trang web được tổ chức theo cấu trúc cây. Gốc của cây là
thẻ <HTML>, để biểu diễn tài liệu. Trong đó thẻ <BODY> biểu diễn
phần thân của tài liệu, là gốc của phần hiển thị của tài liệu. Trong thân của
7
tài liệu, có các bảng, paragraph, list, và các loại thẻ khác với các thẻ ở
mức thấp hơn nữa.
Một biểu diễn theo mô hình DOM của một trang web là một cấu trúc
cây, có các phần tử là các nút, rồi nó chứa các nút con trong nó, và cứ tiếp
tục một cách đệ qui như thế. JavaScript làm việc với nút gốc của trang
web hiện thời qua một biến toàn cục gọi là document, biến này là điểm
bắt đầu của mọi thao tác trên DOM. Phần tử DOM đã được đặc tả bởi
W3C. Mỗi phần tử DOM có một phần tử cha duy nhất, có hoặc không có
các phần tử con, và có một số bất kỳ các thuộc tính, chúng được lưu trữ
trong mảng móc nối. Mối quan hệ giữa các phần tử DOM có thể được đối
chiếu bởi danh sách các thành phần HTML. Mối quan hệ này là hai chiều.
Sửa đổi mô hình DOM sẽ thay đổi cấu trúc HTML và dẫn đến thay đổi
cách biểu diễn một trang web
CHƯƠNG 2: CÔNG NGHỆ WEB LAMP
2.1Giới thiệu công nghệ Web LAMP
L.A.M.P là một thuật ngữ được dùng khá phổ biến hiện nay, là một
hệ thống đáp ứng đầy đủ những tính năng khó nhất của ứng dụng web
như: Database, Mail, SOAP.
L.A.M.P là cụm từ viết tắt từ những từ: Linux, Apache, Mysql,
PHP/Perl/Python- là một hệ thống hoàn toàn mở và miễn phí.
2.2Các thành phần cơ bản của LAMP
2.2.1 Linux
- Linux là gì?
Linux là hệ điều hành. Về mặt nguyên tắc hệ điều hành cũng là một
phần mềm; nhưng đây là một phầm mềm đặc biệt – được dùng để quản lý,
điều phối các tài nguyên của hệ thống (bao gồm cả phần cứng và các phần
8
mềm khác). Linux còn được gọi là Open Source Unix (OSU), Unix-like
Kernel, clone of the UNIX operating system.
Hiện nay, Linux là một hệ điều hành với mã nguồn mở và miễn phí
dưới bản quyền của tổ chức GNU (Gnu’s Not Unix).
Khởi đầu, Linux được thiết kế để hoạt động trên nền tảng của kiến trúc
i386 Intel với khả năng đa tác vụ. Tuy nhiên ngày nay, Linux đã có các
phiên bản trên các họ chip khác chẳng hạn như chip Alpha.
Linux có nguyên lý hoạt động tương tự hệ điều hành Unix (Unix-like).
Mặc dù Linux không phải là Unix nhưng người ta vẫn xem Linux như là
phiên bản Unix trên PC (PC version of Unix OS).
Do là Unix-like; Linux có đầy đủ tất cả các đặc tính của Unix (fully
functional). Ngoài ra nó còn hỗ trợ thêm một số tính năng mà trên Unix
không có, như long file name (tên file có ký tự space “ ”).
Hiện tại có nhiều hãng, nhiều tổ chức, nhiều nhóm khác nhau cùng phát
triển Linux. Tất cả các phiên bản Linux đều có chung phần kernel (phần
nhân của hệ điều hành) và hầu hết các tính năng đặc trưng, tuy nhiên các
công cụ và tiện ích có đôi chút dị biệt. Có rất nhiều các ứng dụng cho
Linux, tuy nhiên hầu hết các ứng dụng cho Linux hiện có đều là các ứng
dụng mang tính chuyên dụng. Để đưa Linux vào từng gia đình, các tổ
chức, các hãng đang cố gắng phát triển các ứng dụng mang tính phổ cập
trên Linux chẳng hạn hãng SUN đưa ra phiên bản Star Office tương tự
như MS Office – và cũng tương thích với MS Office - cho những người
sử dụng Linux ở gia đình, văn phòng.
Hãng Borland (nay là hãng Inprise) đang phát triển một dự án có tên là
KyLix, nhằm đưa ra một môi trường lập trình cấp cao trên Linux, đồng
thời các ứng dụng trên Windows được viết bằng Delphi/C++Builder sẽ dễ
dàng compile (biên dịch) lại dưới Linux bằng KyLix. Hiện tại Kylix đã có
phiên bản thử nghiệm (beta). Dự án này hứa hẹn một loạt các ứng dụng
thông thường đã có trên MS Windows sẽ mau chóng được chuyển sang
9
Linux, và điều này sẽ giúp cho hệ điều hành Linux dễ dàng thâm nhập
vào thị trường PC nhanh chóng hơn. Các ứng dụng được viết trên Linux
đều có thể hoạt động trên các hệ thống UNIX.
Các phiên bản hiện nay gồm có:
− RedHat Linux (Fedora Core)
− Mandrake Linux
− Slackware Linux
− S.u.S.E. Linux
− Free BSD Linux
− Corel Linux
− Open Linux
- Những ứng dụng văn phòng:
Những ứng dụng văn phòng của Linux rất đa dạng như chương trình xử
lý văn bản mức chuyên nghiệp, chuơng trình tính toán, chương trình vẽ…
Những bộ office văn phòng hiện nay của Linux cũng rất đa dạng được
cung cấp bởi nhiều công ty khác nhau. Mỗi một bộ office văn phòng của
Linux đều có những đặc tính riêng nhằm cung cấp cho người sử dụng
những ứng dụng cần thiết, những bộ office được biết đến như:
OpenOffice, KOffice, StarOffice, CrossOver Office, Ximian Desktop and
office applications, GNOME Office…Có một số bộ office cơ bản như
sau:
− OpenOffice
− Koffice
− StarOffice
- Những ứng dụng trong việc quản lý cơ sở dữ liệu:
Những hệ thống quản lý cơ sở dữ liệu được sử dụng trong hệ điều hành
Linux rất đa dạng như: Oracle, Sybase, và DB2 của hãng IBM… Red Hat
cũng đã cung cấp cho Linux những hệ thống quản lý cơ sở dữ liệu lớn như
10
MySQL và PostgreSQL. Tuy nhiên ngoài những hệ thống quản lý cơ sở
dữ liệu ở mức lớn, Linux còn được cung cấp những hệ thống quản lý dữ
liệu vừa và nhỏ như KDE và GNOME. Ngoài ra Linux còn cung cấp
những phần mềm sẵn sàng cho những cơ sở dữ liệu truy nhập với ngôn
ngữ lập trình như Xbase. Tất cả các hệ quản trị cơ sở dữ liệu đểu miễn
phí. Có các loại quản trị cơ sở dữ liệu như sau:
− Oracle
− Sybase
− DB2
− MySQL
− PostgreSQL.
- Hệ điều hành mạng và những ứng dụng của hệ điều hành mạng:
Có thể nói các ứng dụng mạng là tập hợp những ứng dụng nổi bật nhất
của hệ điều hành Linux, những khả năng mà các ứng dụng mạng trên
Linux có thể thực hiện được làm cho hệ điều hành này vượt trội hơn so
với hệ điều hành Window. Linux cho phép người dùng có thể cấu hình
một server với đầy đủ các ứng dụng cơ bản nhất của internet:
Domain Name Service (DNS)
− Web Server
− Web Proxy Server
− Routing
− SMTP Server
− Pop3 Server
− Firewall
Một mạng máy tính của Linux bao gồm:
− Linux file server
− Linux backup
− Linux firewall
11
− Các client (có thể chạy nhiều hệ điều hành khác nhau Unix, Macintosh
và Windows)
− Linux print server
− Linux Apache
− Linux database
− Linux-Based DNS ( Domain Name System )
2.2.2 Apache
Tương tự như IIS. Apache là một chương trình dùng để chạy Web
Server. Tuy nhiên có một khác biệt quan trọng đó là sử dụng miễn phí.
Apache có thể cho phép người dùng cấu hình trực tiếp vào các thư viện
của nó. Điều mà IIS không làm được. Chúng ta có thể thêm modul tùy ý
hoặc loại bỏ để tối ưu cho Web Sever mà mình sử dụng.
Apache hay là chương trình máy chủ HTTP là một chương trình dành
cho máy chủ đối thoại qua giao thức HTTP. Apache chạy trên các hệ điều
hành tương tự như Unix, Microsoft Windows, Novell Netware và các hệ
điều hành khác. Apache đóng một vai trò quan trọng trong quà trình phát
triển của mạng web thế giới (tiếng Anh: World Wide Web).
Khi được phát hành lần đầu, Apache là chương trình máy chủ mã
nguồn mở duy nhất có khả năng cạnh tranh với chương trình máy chủ
tương tự của Netscape Communications Corporation mà ngày nay được
biết đến qua tên thương mại Sun Java System Web Server. Từ đó trở đi,
Apache đã không ngừng tiến triển và trở thành một phần mềm có sức
cạnh tranh mạnh so với các chưong trình máy chủ khác về mặt hiệu suất
và tính nãng phong phú. Từ tháng 4 nãm 1996, Apache trở thành một
chương trình máy chủ HTTP thông dụng nhất. Hơn nữa, Apache thường
được dùng để so sánh với các phần mềm khác có chức năng tương tự.
Tính đến tháng 1 năm 2007 thì Apache chiếm đến 60% thị trường các
chưong trình phân phối trang web.
12
Apache được phát triển và duy trì bở một cộng đồng mã nguồn mở
dưới sự bảo trợ của Apache Software Foundation. Apache được phát hành
với giấy phép Apache License và là một phần mềm tự do và miễn phí.
2.2.3 MySQL
- MySQL là gì?
MySQL là hệ quản trị cơ sở dữ liệu mã nguồn mở phổ biến nhất thế
giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển
ứng dụng. MySQL miễn phí hoàn toàn cho nên bạn có thể tải về MySQL
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,
MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ
liệu quan hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL).
MySQL được sử dụng cho việc bổ trợ PHP, Perl, và nhiều ngôn ngữ
khác, nó làm nơi lưu trữ những thông tin trên các trang web viết bằng
PHP hay Perl,
- Tại sao lại sử dụng MySQL:
MySQL từ lâu đã là hệ CSDL được dùng phổ biến nhất với PHP vì tính
gọn nhẹ, nhanh, miễn phí và được PHP hỗ trợ sẵn. Ổn định, bảo mật, truy
xuất cơ sở dữ liệu nhanh, dễ cài đặt, dễ sử dụng, phù hợp với những phần
mềm cơ sở dữ liệu nhỏ, các website thông thường. Hiện nay trong số các
Website có lưu lượng truy cập lớn thuộc hàng nhất trên Internet, có rất
nhiều Website sử dụng liên minh LAMP này. "Liên minh" mã mở LAMP
đang được coi là một đối trọng với các sản phẩm mã đóng của Microsoft
(Windows, IIS, SQL Server, ASP/ASP.NET).
- Một số đặc điểm của MySQL
13
MySQL là một phần mềm quản trị CSDL dạng server-based (gần tương
đương với SQL Server của Microsoft). MySQL quản lý dữ liệu thông qua
các CSDL, mỗi CSDL có thể có nhiều bảng quan hệ chứa dữ liệu.
MySQL có cơ chế phân quyền người sử dụng riêng, mỗi người dùng có
thể được quản lý một hoặc nhiều CSDL khác nhau, mỗi người dùng có
một tên truy cập (user name) và mật khẩu tương ứng để truy xuất đến
CSDL. Khi ta truy vấn tới CSDL MySQL, ta phải cung cấp tên truy cập
và mật khẩu của tài khỏan có quyền sử dụng CSDL đó.
+ Kết nối vào cơ sở dữ liệu
PHP cung cấp hàm mysql_connect để kết nối vèo MySQL server. Cú
pháp của hàm này như sau: mysql_connect($server_address, $username,
$password).
$server_address là địa chỉ của MySQL server, có thể là domain name
hoặc IP address, các ví dụ trong bài viết này sẽ dùng giá trị "localhost"
cho $server_address.
$username là tên account dùng để login vào MySQL server, các ví dụ
trong bài viết sẽ sử dụng giá trị "root" cho $username.
$password là mật mã để kết nối vào MySQL server, các ví dụ trong bài
viết sẽ sử dụng "aaa" làm mật mã. Hàm mysql_connect sẽ trả về 1 kết nối
đến MySQL server nếu như quá trình kết nối thành công, hoặc trả về giá
trị FALSE nếu như kết nối không được. Để đóng kết nối tới MySQL
server, PHP cung cấp hàm mysql_close.
<?php
$SERVER = "localhost";
$USERNAME = "root";
$PASSWORD = "aaa";
$conn = mysql_connect($SERVER, $USERNAME, $PASSWORD);
14
if ( !$conn ) {
//Không kết nối được, thoát ra và báo lỗi
die("không nết nối được vào MySQL server");
} //end if
//đóng kết nối
mysql_close($conn);?>
Chọn cơ sở dữ liệu để làm việc.
Sau khi connet vào MySQL server, thao tác tiếp theo là chọn CSDL để
làm việc. PHP cung cấp cho ta hàm mysql_select_db để làm việc này. Cú
pháp của hàm này như sau:
mysql_select_db($db_name[, $conn])
Với $db_name là tên CSDL cần chọn, $conn là kết nối được thực hiện
qua lệnh mysql_connect.
+ Thực thi một câu lệnh select và lấy kết quả trả về
PHP cung cấp cho ta 3 hàm hữu dụng để thực hiện công việc này:
$result = mysql_query($sql, $conn): thực hiện câu lệnh SQL được cung
cấp qua tham số $sql và trả về 1 kết quả kiểu $result (hàm này trả về
FALSE nếu như câu lệnh thực hiện không thành công).
mysql_num_rows($result): hàm này trả về số lượng row lấy được qua
câu lệnh SELECT (được thực thi bởi hàm mysql_query) trước đó.
$row = mysql_fetch_row($result), $row = mysql_fetch_assoc($result):
trả về dòng kết quả hiện thời của câu lệnh select và chuyển con trỏ tới
dòng tiếp theo (như vậy lệnh gọi mysql_fetch_row hoặc
mysql_fetch_assoc tiếp đó sẽ trả về dòng tiếp theo); hoặc giá trị FALSE
nếu như không còn dòng nào để trả về nữa. Kết quả trả về từ hai hàm này
là một mảng.
15
mysql_error($conn): trả về thông báo lỗi của MySQL server nếu như
một lệnh trước đó có lỗi. Để hiểu rõ hơn công dụng của các hàm trên,
đồng thời phân biệt sự khác nhau giữa 2 hàm mysql_fetch_row và
mysql_fetch_assoc, ta cung xem xét các ví dụ sau. Các ví dụ của ta sẽ sử
dụng table có tên là mk_managers với các trường và dữ liệu như sau:
useranem, password.
Hàm mysql_fetch_row() sẽ trả về 1 array mà phần tử thứ [0] sẽ tương
ứng với cột đầu tiên của table, phần tử thứ [1] sẽ tương ứng với cột thứ
hai của table Chương trình trên sẽ in ra ra 4 dòng:
Username = abc
Password = 123
Username = def
Password = 456
Ví dụ :
<?php
$SERVER = "localhost";
$USERNAME = "root";
$PASSWORD = "aaa";
$DBNAME = "mmk_marklearn";
$conn = mysql_connect($SERVER, $USERNAME, $PASSWORD);
if ( !$conn ) {
//Không kết nối được, thoát ra và báo lỗi
die("không nết nối được vào MySQL server:
".mysql_error($conn));
} //end if
//chọn CSDL để làm việc
mysql_select_db($DBNAME, $conn)
or die("Không thể chọn được CSDL: ".mysql_error($conn));
$sql = "SELECT * FROM `mk_managers`";
16
$result = mysql_query($sql, $conn);
if ( !$result )
die("Không thể thực hiện được câu lệnh SQL:
".mysql_error($conn));
echo "Số lượng row tìm được: ".mysql_num_rows($result)."<br>\n";
while ( $row = mysql_fetch_assoc($result) ) {
echo "Username = ".$row['username']."<br>\n";
echo "Password = ".$row['password']."<br>\n";
} //end while
//nên luôn giải phóng bộ nhớ sau khi lấy hết các row trả về từ câu lệnh
SELECT
mysql_free_result($result);
//đóng kết nối
mysql_close($conn);
?>
Hàm mysql_fetch_assoc() sẽ trả về 1 array mà các phần tử sẽ được truy
cập qua tên, với tên được lấy từ tên các cột của table. Chương trình ví dụ
2 cũng sẽ in ra ra 4 dòng:
Username = abc
Password = 123
Username = def
Password = 456
2.3.3.3. Thực thi câu lệnh update, insert hoặc delete
Hàm mysql_query cũng được dùng để thực thi các câu lệnh DELETE,
INSERT hoặc UPDATE, nhưng lúc này hàm sẽ trả về TRUE nếu câu lệnh
thực hiện thành công và FALSE trong trường hợp ngược lại. Để lấy số
lượng các row được chèn với lệnh INSERT hoặc bị thay đổi bởi lệnh
UPDATE, PHP cung cấp cho ta hàm mysql_affected_rows. Ta hãy xem
ví dụ sau:
17
<?php
$SERVER = "localhost";
$USERNAME = "root";
$PASSWORD = "aaa";
$DBNAME = "mmk_marklearn";
$conn = mysql_connect($SERVER, $USERNAME, $PASSWORD);
if ( !$conn ) {
//Không kết nối được, thoát ra và báo lỗi
die("không nết nối được vào MySQL server:
".mysql_error($conn));
} //end if
//chọn CSDL để làm việc
mysql_select_db($DBNAME, $conn)
or die("Không thể chọn được CSDL: ".mysql_error($conn));
$sql = "INSERT INTO `mk_managers` (username, password) VALUES
('xyz', '000')";
$result = mysql_query($sql, $conn); //chèn thêm 1 dòng vào table
if ( !$result )
die("Không thể thực hiện được câu lệnh SQL:
".mysql_error($conn));
echo "Số lượng row được chèn:
".mysql_affected_rows($conn)."<br>\n";
//ta chỉ chèn 1 dòng nên hàm mysql_affected_rows sẽ trả về 1
$sql = "UPDATE `mk_managers` SET password='111' WHERE
username='xyz'";
$result = mysql_query($sql, $conn); //đổi password của accoutn xyz
if ( !$result )
die("Không thể thực hiện được câu lệnh SQL:
".mysql_error($conn));
18
echo "Số lượng row được thay đổi:
".mysql_affected_rows($conn)."<br>\n";
//ta thay đổi 1 dòng nên hàm mysql_affected_rows sẽ trả về 1
$sql = "DELETE FROM `mk_managers`";
$result = mysql_query($sql, $conn); //xoá hết tất cả các account
if ( !$result )
die("Không thể thực hiện được câu lệnh SQL:
".mysql_error($conn));
echo "Số lượng row được xoá:
".mysql_affected_rows($conn)."<br>\n";
//ta xoá tất cả 3 dòng nên hàm mysql_affected_rows sẽ trả về 3
//đóng kết nối
mysql_close($conn);?>
2.2.4 PHP-Ngôn ngữ kịch bản
- PHP là gì?
PHP (viết tắt hồi quy "PHP: Hypertext Preprocessor") là một ngôn ngữ
lập trình kịch bản hay một loại mã lệnh chủ yếu được dùng để phát triển
các ứng dụng viết cho máy chủ, mã nguồn mở, dùng cho mục đích tổng
quát. Nó rất thích hợp với web và có thể dễ dàng nhúng vào trang HTML.
Do được tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn, cú
pháp giống C và Java, dễ học và thời gian xây dựng sản phẩm tương đối
ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành
một ngôn ngữ lập trình web phổ biến nhất thế giới.
PHP được xây dựng bởi cộng đồng mã nguồn mở và có sự đóng góp rất
lớn của Zend Inc., công ty do các nhà phát triển cốt lõi của PHP lập nên
19
nhằm tạo ra một môi trường chuyên nghiệp để đưa PHP phát triển ở quy
mô xí nghiệp.
- Lịch sử ra đời của PHP
PHP được phát triển từ một sản phẩm có tên là PHP/FI do Rasmus
Lerdorf tạo ra năm 1995. 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 cho PHP như ta đã
biết đến chúng ngày nay.
Vào 1997, PHP/FI 2.0, lần viết lại thứ hai của phiên bản C. PHP/FI 2.0
được chính thức công bố vào tháng 11 năm 1997, sau một thời gian khá
dài chỉ được công bố dưới dạng các bản beta.
PHP 3.0 là phiên bản đầu tiên được Andi Gutmans và Zeev Suraski – 2
nhà phát triển người Israel tạo ra. Ngoài khả năng cung cấp cho người
dùng cuối một cơ sở hạ tầng chặt chẽ dùng cho nhiều cơ sở dữ liệu, giao
thức và API khác nhau, các tính năng mở rộng của PHP 3.0 đã thu hút rất
nhiều nhà phát triển tham gia và đề xuất các modul mở rộng mới. Và nó
được đặt tên ngắn gọn là PHP, một kiểu viết tắt hồi quy của "PHP:
Hypertext Preprocessor".
PHP 4: Vào năm 1998 PHP 4.0 ra đời đem đến các tính năng chủ yếu
khác gồm có sự hỗ trợ nhiều máy chủ Web hơn, hỗ trợ phiên làm việc
HTTP, tạo bộ đệm thông tin đầu ra, nhiều cách xử lý thông tin người sử
dụng nhập vào bảo mật hơn và cung cấp một vài các cấu trúc ngôn ngữ
mới.
PHP 5: Ngày 29 tháng 6 năm 2003, PHP 5 Beta 1 đã chính thức được
công bố để cộng đồng kiểm nghiệm. Đó cũng là phiên bản đầu tiên của
Zend Engine 2.0. PHP 5 Beta 3 đã được công bố để kiểm tra với việc
phân phối kèm với Tidy, bỏ hỗ trợ Windows 95, khả năng gọi các hàm
PHP bên trong XSLT, sửa chữa nhiều lỗi và thêm khá nhiều hàm mới.
PHP 5 bản chính thức đã ra mắt ngày 13 tháng 7 năm 2004 sau một chuỗi
20
khá dài các bản kiểm tra thử bao gồm Beta 4, RC 1, RC2, RC3. Ngày 14
tháng 7 năm 2005, PHP 5.1 Beta 3 ra đời.
Cho đến nay thì PHP đã được công bố tới phiên bản 5.2.5 và càng ngày
càng hoàn hảo và dễ sử dụng. Đến nay PHP vẫn là một dịch vụ hàng đâu
miễn phí. Tuy nhiên không giống như một số ngôn ngứ khác càng ngày
nó càng trở thành một xu hướng vì rất nhiều các trang Web hiện nay được
làm bằng PHP.
- Ưu điểm của PHP
Được thiết kế đặc biệt chuyên dụng trong các ứng dụng Web. PHP là
một mã nguồn thông tin mở. Bởi vì mã nguồn của PHP sẵn có nên cộng
đồng các nhà phát triển Web luôn có ý thức cải tiến nó, nâng cao để khắc
phục các lỗi trong chương trình này. PHP rất ổn định và tương hợp, mới
đây PHP đã vận hành khá ổn định trên các hệ điều hành gồm cả Linux,
Unix, windown Đồng thời nó cũng nối với một số máy chủ như IIS hay
Apache.
PHP là ngôn ngữ dễ học, dễ tiếp xúc, PHP không theo 1 trình tự cụ thể.
Nghĩa là code thế nào cũng được chỉ cần ra 1 kết quả thì xem như thành
công. PHP tuy lý thuyết rất nhiều và rất dài. Nhưng rất dễ học, thực hành.
Thủ thuật viết PHP hiện nay cũng rất phong phú và được chia sẻ rất nhiều
trên mạng.
PHP hoàn toàn miễn phí cho mọi người sử dụng.
Với những ưu điểm về chi phí, khi dễ dàng sử dụng, là mã nguồn mở
nên PHP ngày càng được nhiều người quan tâm, sử dụng và cùng xây
dựng để hoàn thiện.
- Các kiến thức cơ bản về PHP
+ Sử dụng PHP:
Có 4 cách:
21
- <? echo ("this is the simplest, an SGML processing
instructionn"); ?>
- <?php echo("if you want to serve XML documents, do like
thisn"); ?>
- <script language="php">
echo ("some editors (like FrontPage) don't like processing
instructions")
</script>
- <% echo ("You may optionally use ASP-style tags"); %>
<%= $variable; # This is a shortcut for "<%echo " %>
Chú ý: Cách 1 chỉ có thể sử dụng nếu những tag ngắn được cho phép sử
dụng. Có thể sửa short_open_tag trong cấu hình của php hoặc biên dịch
file php với lựa chọn cho phép dùng các tag ngắn. Tương tự như vậy, cách
thứ 4 chỉ có tác dụng nếu asp_tag được đặt trong file cáu hình của PHP.
PHP cho phép hỗ trợ các kiểu chú thích của cả C, C++ và Unix shell.
VD:
<?php
echo "This is a test"; // comment 1 dòng
/* comment nhiều dòng */
echo "Another Test"; # comment 1 dòng?>
+ Các kiểu dữ liệu:
• Số nguyên :
VD: $a = 34;
# decimal number $a = -123;
# a negative number $a = 0123;
• Số thực:
VD :$a = 1.234; $a = 1.2e3;
• Xâu:
22
Có 2 cách để xác định 1 xâu: Đặt giữa 2 dấu ngoặc kép (") hoặc giữa 2
dấu ngoặc đơn ('). Chú ý: Các biến giá trị sẽ không được khai triển trong
xâu giữa 2 dấu ngoặc đơn.
• Mảng:
Mảng là một dạng của biến trong đó có chứa nhiều giá trị. Ví dụ
một dạng đơn giản của mảng:
$thang = array("Gieng", "Hai", "Ba", "Bon", "Nam", "Sau", "Bay",
"Tam", "Chin", "Muoi", "Muoi Mot", "Muoi Hai");
Để truy xuất được tất cả các phần tử trong mảng, bạn có thể tính ra
chiều dài của mảng và thực hiện vòng lặp:
for ($i=0; $i<count($months); $i++)
{ echo $thang[$i] . "<br>\n" ; }
Mảng liên hợp:
Cũng giống như các ngôn ngữ khác, PHP tận dụng khả năng của mảng
liên hợp (associative array). Có thể bạn cảm thấy mới mẻ với khái niệm
này. Mỗi phần tử trong mảng liên hợp mang khoá riêng. Các phần tử của
mảng sẽ được truy cập thông qua khoá. Điều này giống như cách thức
truy xuất trong các query khi làm việc với Database. Trong ví dụ sau, bạn
sẽ thấy các phần tử first_name, last_name, e-mail sử dụng các key:
$person = array (
"first_name" => "Jay",
"last_name" => "Greenspan",
"e-mail" => ""
);
- Tất cả các mảng trong PHP đều là mảng liên hợp.
PHP cũng sẽ tự động gán cho chúng các key. Ví dụ: $x= array ("pug",
"poodle"), PHP sẽ tự gán cho $x các khoá là các con số nguyên theo thứ
tự bắt đầu từ số 0.
Mảng đa chiều:
23
Mảng đa chiều thường sử dụng nhất đó là mảng hai chiều. Chúng chứa
thông tin dựa trên hai khoá. Chúng ta sẽ xác lập một mảng $people. Trong
mảng $people lại chứa mảng cho từng cá nhân:
$people = array (
"khai" => array ("ho_lot" => "tongphuoc", "tuoi" => 30),
"minh" => array ("ho_lot" => "leanh" , "tuoi" => 52) );
Có thể truy cập tất cả các phần tử trong mảng hai chiều bằng cách
sử dụng vòng lặp trên cả hai chiều của mảng:
while(list($person, $person_array) = each($people))
{
echo "<b>Ban biet gi ve $person</b><br>\n";
while(list($person_attribute, $value) = each($person_array))
{
echo "$person_attribute = $value<br>\n";
}}
• Cookies
Cookie là những file nhỏ chứa một số các thông tin truy cập Web. Các
cookie do Websever phát sinh, lưu giữ lại, sau đó sẽ được đọc ở những
lần truy cập về sau. Cookie đơn thuần chỉ là thông tin ghi nhận lại những
động tác truy cập web của khách. Khi tồn tại trên đĩa cứng, cookie trở
thành các thỉnh cầu của giao thức HTTP, được gởi đến Webserver. Để có
thể phát sinh một cookie cần phải sử dụng hàm setcookie() như sau:
setcookie(name, value, time_to_expire, path, domain, security, setting);
setcookie("my_cookie", "my_id",time()
+(60*60*24*30),"/",".mydomain.com", 0)
Lệnh trên sẽ phát sinh một cookie với các chức năng sau:
− Chứa một biến tên là my_cookie
− Giá trị của mycookie my_id
24
Cookie tồn tại trong vòng 30 ngày kể từ ngày nó phát sinh (time()
+(30*24*60*60) ngày giờ hiện tại + 30 ngày được quy ra giây).
Cookie có tác dụng đến tất cả các trang trong domain. Bạn có thể hạn
chế lại bằng các chỉ ra đường dẫn đến một số trang nào đó trong domain.
Nó sẽ hiện diện trong tất cả các website có địa chỉ
Không có xác lập đặc biệt nào về bảo mật.
Một khi cookie được xác lập, các biến phát sinh từ cookie có tác dụng
giống như biến phát sinh từ form mà chúng ta đã bàn trước đây. Chúng sẽ
hiện diện với chức năng là biến global. Sau khi script PHP xác lập cookie,
các script khác trong domain có thể truy cập cookie một cách tự động.
Cẩn thận hơn để $mycookie không xung đột với một biến nào khác cũng
có tên $mycookie, bạn có thể truy xuất nó thông qua mảng
HTTP_COOKIE_VARS và sử dụng lệnh:
HTTP_COOKIE_VARS["mycookie"]. Bạn có thể xác lập cookie cung
cấp khả năng truy xuất như là một mảng:
setcookie("mycookie[first]","dddd",time()+2592000,"/","192.168.1.1",
0);
setcookie("mycookie[second]","my_second_id",time()
+2592000,"/","192.168.1.1", 0);
Cả hai biến trên đều có thể truy cập đến như là một mảng liên hợp.
• Sessions
Sessions đơn giản nó chỉ là một cách thức để duy trì và truyền biến
trong khi chuyển tiếp giữa các trang web. Chương trình khai báo một
session được bắt đầu với hàm start_session(). PHP đăng ký một
SesssionID duy nhất, và thường thì ID này được gởi đến user thông qua
một cookie. PHP sau đó tạo một tập tin trên server để theo dõi sự thay đổi
của biến. Tập tin này có tên giống như tên của SessionID. Một khi session
được tạo, bạn có thể đăng ký bất kỳ số lượng biến. Các giá trị của những
25
biến này được lưu giữ trong tập tin trên server. Cũng như sự tồn tại của
cookie, các biến trong session sẽ hiện diện trên bất kỳ trang nào được truy
cập đến trong phạm vi một domain. Việc xác lập này rất thuận tiện hơn là
chuyển tiếp các biến từ trang này sang trang khác thông qua các phần tử
ẩn trong form hay cookie.
Ví dụ: <? session_start();
session_register("my_var");
$my_var = "hello world";?>
Sau khi chạy chương trình này, chọn refresh trên trình duyệt. Bạn
sẽ thấy script sẽ nhớ được rằng bạn là ai. Các hàm setcookie() và
session_start() nên ở vị trí gần đầu tập tin. Nếu bạn thử chuyển đến trình
duyệt trước để xác lập một cookie bạn sẽ nhận được một thông báo lỗi.
• Biến
Gán từ trình duyệt (web browser)
Thông thường các thông tin này được nhập vào thông qua một form
HTML. Nhưng cũng có thể chúng xuất phát từ các nguồn khác như:
HTML, cookie, session.
Biến từ Form của HTML
<form action=mypage.php action=post>
<input type=”text” name=”email”>
<input type=”text” name=”first_name”>
<input type=”submit” name=”submit” value=”OK”>
<input type=” reset” name=”reset” value=”Cancel”>
</form>
Sau khi submit dữ liệu lên sever thì các giá trị lấy lên từ form là
first_name, email được gọi là biến từ form. Các biến cũng có thể được
truy xuất thông qua mảng $HTTP_POST_VARS hoặc