ỨNG DỤNG PHP, MYSQL VÀ JAVASCRIPT XÂY DỰNG TRANG WEB TIN TỨC CHO LỚP 53K1
Nghệ An, 01/2017
Nguyễn Thị Lan - Lớp 53K1 – Khoa CNTT
Trang 1
Đồ án tốt nghiệp đại học
TRƢỜNG ĐẠI HỌC VINH KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
ỨNG DỤNG PHP, MYSQL VÀ JAVASCRIPT XÂY DỰNG TRANG WEB TIN TỨC CHO LỚP 53K1
Sinh viên thực hiện:
Nguyễn Thị Lan
Mã số sinh viên:
1251071540
Giáo viên hướng dẫn:
TS. Cao ThanhSơn
Nghệ An, 01/2017
Nguyễn Thị Lan - Lớp 53K1 – Khoa CNTT
Trang 2
Đồ án tốt nghiệp đại học
LỜI CẢM ƠN Để hoàn thiện được đồ án này, ngoài sự nỗ lực của bản thân. Em xin gửi lời cảm ơn chân thành đến tất cả quý thầy cô trong khoa Khoa Công nghệ Thông tin đã giảng dạy, truyền đạt kiến thức cho em trong suốt thời gian vừa qua. Em xin chân thành cảm ơn Thầy giáo TS. Cao Thanh Sơn đã nhiệt tình và hết lịng giúp đỡ em trong suốt q trình thực hiện đồ án này. Cho em bày tỏ lòng biết ơn tới gia đình thân u, những người bạn thân đã ln quan tâm, ủng hộ, tin tưởng, giúp đỡ em trong thời gian qua. Trong quá trình thực hiện đồ án, tuy đã nỗ lực hết mình nhưng đồ án của em khó tránh khỏi những thiếu sót. Em rất mong nhận được sự thơng cảm và góp ý tận tình của q thầy cơ để có thể hồn thiện tốt hơn đồ án này.
Nghệ An, ngày 6 tháng 1 năm 2017 Sinh viên
Nguyễn Thị Lan
Nguyễn Thị Lan - Lớp 53K1 – Khoa CNTT
Trang 3
Đồ án tốt nghiệp đại học
MỤC LỤC LỜI CẢM ƠN ......................................................................................................... 3 LỜI MỞ ĐẦU ......................................................................................................... 6 CHƢƠNG 1 CƠ SỞ LÍ THUYẾT ....................................................................... 8 1.1 Giới thiệu HTML, CSS .................................................................................. 8 1.2 Tổng quan về ngôn ngữ PHP ......................................................................... 8 1.2.1 Giới thiệu về PHP .................................................................................. 8 1.2.2 Cú pháp PHP ......................................................................................... 9 1.2.3 Khái niệm biến, hằng và chuỗi trong PHP .......................................... 11 1.2.4 Các kiểu dữ liệu trong PHP................................................................. 12 1.2.5 Các phép toán trong PHP.................................................................... 12 1.2.6 Các cấu trúc điều khiển trong PHP..................................................... 14 1.2.7 Truy cập đến FORM ............................................................................ 16 1.2.8 Session và Cookie ................................................................................ 16 1.3 Tổng quan về hệ quản trị cơ sở dữ liệu MySQL ......................................... 18 1.3.1 Giới thiệu về MySQL ........................................................................... 18 1.3.2 Kiểu dữ liệu trong MySQL ................................................................... 19 1.3.3 Các phát biểu SQL ............................................................................... 21
1.3.4 Một số ví dụ ......................................................................................... 21 1.4 JavaScript .................................................................................................... 20 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5
Giới thiệu về JavaScript ...................................................................... 20 Chèn JavaScript vào trang HTML....................................................... 20 Biến và phân loại biến ......................................................................... 21 Các hàm cơ bản ................................................................................... 21 Hàm Function ...................................................................................... 22
CHƢƠNG 2 PHÂN TÍCH HỆ THỐNG VÀ THIẾT KẾ CHỨC NĂNG ..... 26 2.1 Phát biểu bài toán ......................................................................................... 26 2.2 Các quy trình trên Website .......................................................................... 26 2.2.1 Quy trình đăng kí thành viên ................................................................. 26 2.2.2 Quy trình đăng nhập ............................................................................. 27 2.2.3 Quy trình cập nhật dữ liệu .................................................................... 28 2.2.4 Quy trình tìm kiếm ................................................................................. 29 2.3 Yêu cầu hệ thống ......................................................................................... 29 2.3.1 Yêu cầu chức năng ................................................................................ 29
Nguyễn Thị Lan - Lớp 53K1 – Khoa CNTT
Trang 4
Đồ án tốt nghiệp đại học
2.3.2 Yêu cầu phi chức năng .......................................................................... 31 2.4 Mơ hình hóa chức năng ............................................................................... 31 2.5 Mơ hình hóa dữ liệu ..................................................................................... 33 CHƢƠNG 3 XÂY DỰNG WEBSITE THÔNG TIN LỚP 53K1 .................... 39 3.1 Xây dựng cơ sở dữ liệu ................................................................................ 39 3.2 Xây dựng các trang chức năng .................................................................... 43 3.3 Xây dựng các trang quản lý ......................................................................... 47 KẾT LUẬN ........................................................................................................... 50 TÀI LIỆU THAM KHẢO ..................................................................................... 51
Nguyễn Thị Lan - Lớp 53K1 – Khoa CNTT
Trang 5
Đồ án tốt nghiệp đại học
LỜI MỞ ĐẦ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 ứ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 tin tức, trao đổ i thông tin 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à cu ̣ thể là website tin tức nói riêng mang lại, em đã chọn đề tài “Ứng dụng PHP, MySQL và JavaScript xây dựng trang web tin tức cho lớp 53K1” với mục đích ta ̣o ra những thuận lơ ̣i trong viê ̣c trao đổ i thông tin, chia sẻ tài liệu học tập giữa các thành viên trong lớp. 2. Mục tiêu và nhiệm vụ nghiên cứu
Mục tiêu : Ứng dụng ngôn ngữ PHP, hệ quản trị sơ sở dữ liệu MySQL và JavaScript để xây dựng được một website hồ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 vu ̣ nghiên cứu: - Tìm hiểu những lơ ̣i ić h mà website thơng tin mang lại; - Tìm hiểu về ngôn ngữ PHP, hê ̣ quản tri ̣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ơ ̣t website phù hơ ̣p và đá p ứng đươ ̣c nhu cầ u sử du ̣ng; - Xây dựng và hoàn thiện website, có sử dụng kết nối cơ sở dữ liệu. 3. Đối tƣợng và phạm vi nghiên cứu Đối tượng nghiên cứu: - Tấ t cả thành viên trong lớp 53K1 và những người quan tâm đến website; - Ngôn ngữ PHP; - Hệ cơ sở dữ liệu MySQL; - JavaScript. Phạm vi nghiên cứu:
Nguyễn Thị Lan - Lớp 53K1 – Khoa CNTT
Trang 6
Đồ án tốt nghiệp đại học
- Nghiên cứu về cách tiế p câ ̣n cũng như trao đổ i th ông tin của người dùng trên Internet, những yêu cầ u chức năng mà người dù
ng đă ̣t ra khi sử du ̣ng
website giúp ho ̣ 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ệ quản trị cơ sở dữ liệu MySQL. 4. 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ữ PHP và hệ quản trị cơ sở dữ liệu MySQL; - Khảo sát thực tế, tham khảo ý kiến của những người sử dụng để đặt ra được những yêu cầu, chức năng cần thiết của website; - Xây dựng website đáp ứng được nhu cầu sử dụng dựa trên kết quả khảo sát thực tế. 5. Ý nghĩa khoa học và thực tiễn Tổ ng hơ ̣p, áp du ̣ng đươ ̣c những kiế n thực đã nắ m đươ ̣c trong quá trin ̀ h ho ̣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ại trong 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 cho viê ̣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ệm thời gian, công sức và tiề n ba ̣c. 6. Bố cục đồ án Ngoài lời mở đầu và phần kết luận, bố cục của đồ án bao gồm 3 chương, cụ thể: Chƣơng 1. CƠ SỞ LÍ THUYẾT Chương này trình bày các hiểu biết về ngôn ngữ PHP, các kiến thức cơ bản của MySQL và JavaScript. Chƣơng 2. PHÂN TÍCH HỆ THỐNG VÀ THIẾT KẾ CHỨC NĂNG Chương này giới thiệu các quy trình trên website, phát biểu và phân tích bài tốn website thông tin lớp 53K1. Chƣơng 3. XÂY DỰNG WEBSITE
Các bước xây dựng cơ sở dữ liệu, các trang chức năng và các trang quản lí của trang web sẽ được trình bày chi tiết trong chương này.
Nguyễn Thị Lan - Lớp 53K1 – Khoa CNTT
Trang 7
Đồ án tốt nghiệp đại học
CHƢƠNG 1. CƠ SỞ LÍ THUYẾT Chương này gồm có 3 phần nhằm khái quát các kiến thức tìm hiểu được về PHP, MySQL và JavaScript. Xuất phát ở mục 1.1 là tổng quan, lịch sử phát triển và các ưu điểm của PHP. Tiếp theo là cách khai báo cú pháp, cách sử dụng biến và hằng, cơ bản về các toán tử, truy cập trến Form và khái niệm Session-Cookie. Mục 1.2 trình bày tổng quan về hệ quản trị cơ sở dữ liệu MySQL, các kiểu dữ liệu trong MySQL để sử dụng chính xác cũng như cú pháp câu lệnh sử dụng trong MySQL. Cuối cùng là cách sử dụng JavaScript trong các thẻ HTML, các đặc điểm của JavaScript, cách chèn JavaScript vào trang HTML và cách sử dụng các hàm cơ bản. 1.1 Tổng quan về ngôn ngữ lập trình PHP 1.1.1 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ủ (Server side) 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 hay Intranet tương tác với mọi cơ sở dữ liệu như: Informix, MySQL, PostgreSQL, Oracle, Sybase, SQL Server, … Các tệp 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át triển phần mềm Rasmus Lerdorf [1].
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 1997, phiên bản PHP 3.0 ra đời bởi Andi Gutmans và Zeev Suraski sau khi viết lại tồ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ố
Nguyễn Thị Lan - Lớp 53K1 – Khoa CNTT
Trang 8
Đồ án tốt nghiệp đại học
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. Phiên bản PHP 7 được cập nhật vào ngày 12/12/2014. Phiên bản này hỗ trợ tốt trên nền hệ điều hành Windows 64-bit. PHP 7 giới thiệu 4 kiểu khai báo mới cho các kiểu vô hướng: int, float, string và bool và cho phép sử dụng các lớp vơ danh (anonymous) [6].
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à mộ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, 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. 1.1.2 Cú pháp PHP 1.1.2.1 Cấu trúc cơ bản PHP cũng có thẻ bắt đầu và kết thúc giống với ngơn ngữ HTML. Chỉ khác, đối với PHP chúng ta có nhiều cách để thể hiện. Cách 1: Cú pháp chính: <?php Mã lệnh PHP ?>
Nguyễn Thị Lan - Lớp 53K1 – Khoa CNTT
Trang 9
Đồ án tốt nghiệp đại học
Cách 2: Cú pháp ngắn gọn: <? Mã lệnh PHP ?>
Cách 3: Cú pháp giống với ASP: <% Mã lệnh PHP %>
Cách 4: Cú pháp bắt đầu bằng script: <script language=php> ... </script>
Mặc dù có bốn cách thể hiện. Nhưng đối với một lập trình viên có kinh nghiệm thì việc sử dụng cách 1 vẫn là lựa chọn tối ưu. Trong PHP để kết thúc một dòng lệnh chúng ta sử dụng dấu ";" Để chú thích một đ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. echo "LOP53K1"; // Day la vi du ve code PHP /* Voi cu phap nay chung ta Co the chu thich 1 cum ma lenh */ ?>
1.1.2.2 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 … echo "Xin chào"; printf " <font color=red> lớp 53K1</font>"; ?>
Nếu giữa hai chuỗi muốn liên kết với nhau ta sử dụng dấu "." echo "Xin chào "."lớp 53K1"; ?>
Nguyễn Thị Lan - Lớp 53K1 – Khoa CNTT
Trang 10
Đồ án tốt nghiệp đại học
1.1.3 Khái niệm biến, hằng và chuỗi trong PHP 1.1.3.1 Biến trong PHP Biến được xem là vùng nhớ dữ liệu tạm thời. Và giá trị có thể thay đổi được. Biến được bắt đầu bằng ký hiệu "$". Và theo sau chúng là một từ, một cụm từ nhưng phải viết liền hoặc có gạch dưới. Một 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ố hay dấ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 một biến chúng ta thường phải khai báo trước, tuy nhiên đối vớ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ủa người lập trình mong muốn trên chúng [1]. Một số ví dụ về biến: $a = 100
// biến a ở đây có giá trị là // 100
$a = "Lop53K1"
// biến a ở đây có giá trị là // "Lop53K1".
biena = 123
// Cõ lỗi vì bắt đầu 1 biến // phải có dấu $.
$123a = "Lop53K1"
// Cõ lỗi vì phần tên bắt đầu // của biến là dạng số.
?>
1.1.3.2 Hằng trong PHP Nếu biến có thể thay đổi được thì ngược lại đối với hằng, chúng ta không thể thay đổi được. Hằng trong PHP được định nghĩa bởi hàm define theo cú pháp: define (string tên_hằng, giá_trị_hằng) [1]. Cũng giống với biến hằng được xem là hợp lệ thì chúng phải đáp ứng một số yếu tố: Hằng khơng có dấu "$" ở trước tên.
Nguyễn Thị Lan - Lớp 53K1 – Khoa CNTT
Trang 11
Đồ án tốt nghiệp đại học
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 một lần. Hằng thường viết bằng chữ in để phân biệt với biến . Ví dụ : define ("C","COMPANY"); define ("YELLOW","ffff00"); echo " Gia tri cua C la ". C; ?>
1.1.3.3 Khái niệm về chuỗi 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ấu nháy. Ví dụ: '53K1CNTT' "Xin chào lớp 53K1CNTT"
Để tạo một biễn chuỗi, chúng ta phải gán giá trị chuỗi cho một biến hợp lệ. Ví dụ: $fisrt_name = "Nguyen"; $last_name = 'Thi Lan';
Để liên kết một chuỗi và một biến chúng ta thường sử dụng dấu "." 1.1.4 Các kiểu dữ liệu PHP Php hỗ trợ các 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. 1.1.5 Các phép toán trong PHP 1.1.5.1 Các phép toán số học Là dạng phép tính giản đơn cộng, trừ, nhân, chia trong số học. Ngồi ra cịn có phép chia lấy dư (%). Được sử dụng để lấy ra đơn vị dư của một phép toán.
Nguyễn Thị Lan - Lớp 53K1 – Khoa CNTT
Trang 12
Đồ án tốt nghiệp đại học
Tố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
Bảng 1.1: Các phép toán số học 1.1.5.2 Các phép toán 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 tốn == != === > >= < <=
Giải thích
Tên
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 Vế trái nhỏ hơn hoặc bằng vế phải $a <= 10 bằng Bảng 1.2: Các phép toán so sánh
1.1.5.3 Các phép toán logic Toán tử logic là các tổ hợp các giá trị boolean. Các phép toán logic trả về giá trị true hoặc false. Tốn tử
Tên
Ví dụ
&&
And (và)
$a && $b
||
Or (hoặc)
$a or $b
!
Not (phủ định)
!$c
Bảng 1.3: Các phép toán logic
Nguyễn Thị Lan - Lớp 53K1 – Khoa CNTT
Trang 13
Đồ án tốt nghiệp đại học
1.1.5.4 Phép toán trên chuỗi Để cộng (ghép) hai chuỗi lại với nhau ta sử dụng dấu chấm (.). Ví dụ: $string1="Nguyễn"; $string2="Lan"; echo $string1 . " " . $string2; //-> Nguyễn Lan ?>
1.1.5.5 Các phép toán tự tăng giả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 đó. Thực hiện điều này khi đếm một giá trị nào đó trong vịng lặp. Phép tố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 1.1.6 Các cấu trúc điều khiển trong PHP 1.1.6.1 Cấu trúc rẽ nhánh Cấu trúc if : if(điều_kiện) câu lệnh; if(điều kiện) câu lệnh 1; else câu lệnh 2; $Tên_biến = điều_kiện?giá_trị_1:giá_trị_2;
Nguyễn Thị Lan - Lớp 53K1 – Khoa CNTT
Trang 14
Đồ án tốt nghiệp đại học
Cấu trúc switch: Sử dụng khi có nhiều lựa chọn, cú pháp: switch($biến) { case(giá_trị_1): {các_lệnh_1;break;} case(giả_trị_2): {các_lệnh_2;break;} … case(giả_trị_n): {các_lệnh_n;break;} default: các_lệnh_khác; }
1.1.6.2 Cấu trúc lặp Cấu trúc while: Phép lặp này yêu cầu phải thỏa mãn điều kiện thì mới thực thi được vịng lặp. while(điều_kiện) { các_lệnh; }
Cấu trúc do … while: Phép lặp này sẽ thực thi hành động ít nhất là một lần. Sau đó mới tiến hành
kiểm tra điều kiện. do { các_lệnh; } while(điều_kiện)
Cấu trúc for: Phép lặp này là phép tốn gộp các tham số. Giúp người lập trình giảm thiểu thời gian phải khai báo biến và các tham số khi thực thi việc lặp dữ liệu.
1.1.7 Truy cập đến FORM Form cùng với các thuộc tính của nó là nơi người sử dụng nhập dữ liệu vào, để có thể sử dụng được dữ liệu đó thì chúng ta phải kết nối đến form. Khi làm việc với form thì các phần tử trên form trên trang HTML sẽ tự động trở thành biến trong đoạn mã PHP. Để lấy giá trị từ các phần tử form thì ta sử dụng $_GET hoặc $_POST [1]. 1.1.7.1 Hàm GET 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 thanh địa chỉ trình duyệt, 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ử"] 1.1.7.2 Hàm POST Cũng như hàm GET, hàm POST cũng dùng để lấy giá trị từ FORM nhưng hàm POST không hiển thị thông tin trên thanh địa chỉ trình duyệt nên khơng thể nhìn thấy thơng tin đang truyền. Cú pháp: $_POST["tên_phần_tử"] 1.1.8 Session và Cookie Session và Cookie là hai phương pháp sử dụng để quản lý các phiên làm việc giữa người sử dụng và hệ thống. Việc quản lý phiên làm việc này sẽ giúp tạo
ra sự chứng thực hiệu quả bởi việc xác nhận thông tin trước khi truy cập vào một phân vùng cố định. Ngoài ra, việc quản lý tốt phiên làm việc cũng giúp người
Nguyễn Thị Lan - Lớp 53K1 – Khoa CNTT
Trang 16
Đồ án tốt nghiệp đại học
truy cập cảm thấy dễ dàng sử dụng dịch vụ của trang web cho những lần truy cập sau. Bởi cơ chế quản lý phiên làm việc ghi nhận lại quá trình truy cập của người sử dụng khi họ duyệt trang web lần đầu [1]. 1.1.8.1 Session Đối tượng Session được xem như là một đối tượng cho phép truyền truyền giá trị từ trang PHP này sang trang PHP trong cùng một website. Session được sinh ra và mất đi khi người sử dụng hủy chúng, thời gian sống của chúng đã hết, hoặc người sử dụng đóng trình duyệt. Khi muốn sử dụng Session thì chúng ta phải khởi tạo chúng trong trang PHP mà chúng ta muốn sử dụng và đặt ở đầu trang bằng hàm: session_start();
Tuy nhiên, có thể cấu hình trong trang php.ini. session.auto_start = 0;
Khai báo và gán giá trị cho biến Session. $_SESSION ["chỉ số"] = giá_trị;
Sau khi khởi động và lưu thơng tin, các Session này có hiệu lực trên mọi trang PHP mà người dùng truy cập website tương ứng với trình duyệt đang mở.
Để hủy Session chúng ta dùng hàm session_unser() hoặc session_destroy().
Hàm session_unser(): Dùng hủy bỏ các biến Session đang có hiệu lực. Ngồi ra muốn hủy bỏ một biến nào đó thì ta phải truyền tham số cho hàm. Hàm session_destroy(): Kết thúc tất các các Session và dữ liệu trong đó. 1.1.8.2 Cookie Cookie thường được sử dụng để xác định người sử dụng, nó cũng được xem là Session nhưng nó lưu thơng tin trên trình khách (client). Tại một thời điểm nào đó, máy tính u cầu một trang web cùng với trình duyệt thì nó cũng gửi cookie đi kèm [1]. Thiết lập Cookie: Muốn thiết lập Cookie ta sử dụng hàm setcookie để gán giá trị cho Cookie theo cú pháp: setcookie("tên
cookie","giá
trị",
thời
gian
sống);
Nguyễn Thị Lan - Lớp 53K1 – Khoa CNTT
Trang 17
Đồ án tốt nghiệp đại học
Tên Cookie là tên mà chúng ta đặt cho phiên làm việc. Giá trị là thông số của tên Cookie. Ví dụ: setcookie("username","admin", time() + 3600);
Như ví dụ trên ta thấy với tên là username và giá trị là admin, có thời gian sống là 1 giờ tính từ thời điểm thiết lập. Chú ý: Kịch bản Cookie phải đặt trên mọi giá trị trả về bao gồm thẻ HTML và lệnh echo. Sử dụng Cookie: Để sử dụng lại Cookie vừa thiết lập, chúng ta sử dụng cú pháp: $_COOKIE["tên cookies"]
Tên Cookie là tên mà chúng ta thiết lập phía trên. Hủy Cookie: Để hủy một Cookie đã được tạo ta có thể dùng 1 trong 2 cách sau: + Cú pháp: setcookie("Tên cookie") Gọi hàm setcookie với chỉ duy nhất tên Cookie mà thôi. + Dùng thời gian hết hạn Cookie là thời điểm trong quá khứ. Ví dụ: setcookie("name","LAP TRINH",time() - 3600); 1.2 Tổng quan về hệ quan về hệ quản trị cơ sở dữ liệu MySQL 1.2.1 Giới thiệu về MySQL MySQL là một hệ quản trị cơ sở dữ liệu quan hệ miễn phí. Để 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ười dùng, phân quyề n sử dụng, thiế t kế đố i tươ ̣ng, bảng 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ử du ̣ng giao diê ̣n đờ họa hoặc dạng dịng lệnh (Command line) [1]. MySQL là 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… MySQL là hệ quản trị 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ó
Nguyễn Thị Lan - Lớp 53K1 – Khoa CNTT
Trang 18
Đồ án tốt nghiệp đại học
truy cập CSDL trên Internet. MySQL hoạt động trong các hệ thống nhúng hoặc client/server [1]. 1.2.2 Kiểu dữ liệu trong MySQL Kiểu dữ liệu String Kiểu dữ liệu
Mơ tả Cố định chiều dài chuỗi (có thể chứa chữ cái, số và
CHAR (size)
ký tự đặc biệt). Cố định kích thước trong ngoặc đơ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ự. Khi định nghĩa một field kiểu này, tức là, ta đã chỉ ra
một danh sách các đối tượng mà field phải nhận (có
ENUM
thể là Null). Ví dụ, nếu ta muốn một field nào đó chỉ nhận một trong các giá trị "A" hoặc "B" hoặc "C" thì ta phải định nghĩa kiểu ENUM cho nó như sau: ENUM ('A', 'B', 'C'). Nhắc ENUM ngoại trừ SET có thể chứa lên đến 64
SET
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 đến 32.767.
Nguyễn Thị Lan - Lớp 53K1 – Khoa CNTT
Trang 19
Đồ án tốt nghiệp đại học
Phạm vi đó là để 8.388.607 đến 8.388.608.
MEDIUMINT (size)
Phạm vi từ -2.147.483.648 đến
INT (size)
2.147.483.647. Phạm vi từ -9.223.372.036.854.775.808 đến
Số lượng chính xác dấu chấm động. Floating-point gấp đơi độ chính xác của Float. 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ả Dữ liệu kiểu ngày được thể hiện ở dạng yyyy-mm-dd.
DATE ()
Từ 1000-01-01 đến 9999-12-31. Ví dụ, ngày 25 tháng 12 năm 2015 sẽ được lưu ở dạng 2015-12-25.được lưu trữ như là: 1973-12-30. Dữ liệu kiểu ngày-giờ được thể hiện ở dạng yyyy-
DATETIME()
mm-dd hh:mm:ss. Từ 1000-01-01 00:00:00 đến 999912-31 23:59:59. Ví dụ, 3:30 chiều ngày 25 tháng 12, năm 2015 sẽ được lưu ở dạng 2015-12-25 15:30:00.
TIME()
Dữ liệu kiểu giờ được thể hiện ở dạng hh:mm:ss. Lưu 1 năm trong định dạng 2 chữ số hoặc 4 chữ số. Nếu độ dài được xác định là 2 (ví dụ: YEAR(2)),
YEAR ()
YEAR có thể từ 1970 tới 2069 (70 tới 69). Nếu độ dài được xác định là 4, YEAR có thể từ 1901 tới 2155. Độ dài mặc định là 4.
Bảng 1.7: Kiểu dữ liệu date và time
Nguyễn Thị Lan - Lớp 53K1 – Khoa CNTT
Trang 20
Đồ án tốt nghiệp đại học
1.2.3 Các phát biểu SQL (Structured Query Language) 1.2.3.1 Cậu lệnh SELECT 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 một bảng, gọi là bảng kết quả. Cú pháp: SELECT <Danh sách các cột/biểu thức> [FROM <danh sách các bảng>] [WHERE <các điều kiện>] [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 <cột sắp xếp>] [LIMIT FromNumber | ToNumber] 1.2.3.2 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. Cú pháp: INSERT INTO <tên_bảng>(<danh_sách_cột>) VALUES <(giá_trị_1, giá_trị_2,…)> 1.2.3.3 Câu lệnh UPDATE Câu lệnh UPDATE được dùng để thay đổi giá trị của một tập hợp các bản ghi trong một bảng. Cú pháp:
UPDATE <tên_bảng> SET <tên_cột = tên_giá_trị_mới> WHERE <tên_cột = điều_kiện> 1.2.3.4 Câu lệnh DELETE 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 = điều_kiện>
Nguyễn Thị Lan - Lớp 53K1 – Khoa CNTT
Trang 21
Đồ án tốt nghiệp đại học
1.3 JavaScript 1.3.1 Giới thiệu về JavaScript Javscipt là ngôn ngữ kịch bản (scripting language) dùng để tương tác với các trang HTML dựa trên đối tượng được hãng Netscape Communication phát triển. Chủ yếu dùng cho kĩ thuật ở phía client. Các mã của JavaScript thường được nhúng trực tuyến và tích hợp vào trang web [4]. Có một số đặc điểm sau: JavaScript là một ngôn ngữ thông dịch, chương trình nguồn của nó được thơng dịch trong trang HTML sau khi toàn bộ trang được nạp nhưng trước khi trang được hiển thị; Đơn giản; Lập trình theo cấu trúc (Structured programming ); Có phân biệt chưa hoa và chữ thường [4]. Các ứng dụng client chạy trên một trình duyệt như Netscape Navigator hoặc
Internet Explorer,… 1.3.2 Chèn JavaScript vào trang HTML Có thể nhúng JavaScript vào một file HTML theo một trong các cách sau đây: Sử dụng thẻ Script: <script language = "JavaScript"> //--> </script>
Sử dụng một file JavaScript ở ngoài: <scrip language = "JavaScript" src = "filename.js"> </script> Sử dụng các biểu thức JavaScript trong các giá trị thuộc tính của thẻ. Sử dụng trong các trình điều khiển sự kiện.
Ví dụ: <HTML>
Nguyễn Thị Lan - Lớp 53K1 – Khoa CNTT
Trang 22
Đồ án tốt nghiệp đại học
<HEAD> <SCRIPT LANGUAGE = "JavaScript"> confirm("Bạn có chắc chắn muốn xóa khơng?"); alert("Đồng ý");
1.3.3 Biến và phân loại biến Tên biến trong JavaScript phải bắt đầu bằng chữ hay dấu gạch dưới. Các chữ số không được sử dụng để mở đầu tên một biến nhưng có thể sử dụng sau kí tự đầu tiên. Biến có hai kiểu:s Biến tồn cục: Có thể được truy cập từ bất kì đâu của ứng dụng. Được khai báo như sau: x = 0;
Biến cục bộ: Chỉ được truy cập trong pham vi chương trình mà nó khai báo. Khai báo như sau: var x = 0;
1.3.4 Các hàm cơ bản JavaScript có một số hàm có sẵn, gắn trực tiếp vào chính ngơn ngữ và khơng nằm trong đối tượng nào: eval parseInt parseFloat 1.3.4.1 Eval Hàm này được sử dụng để đánh giá các biểu thức hay lệnh. Biểu thức, lệnh hay các đối tượng của thuộc tính đều có thể được đánh giá và thi hành như là mã JavaScript. Cú pháp: eval("chuỗi")
1.3.4.2 ParseInt Hàm này chuyển một số chuỗi thành số nguyên với cơ số là tham số thứ 2 (tham số này không bắt buộc). Chỉ phân tích số đầu tiên và nếu khơng chuyển được, trả về NaN (Not a Number). Cú pháp: parseInt("chuỗi" [<cơ số>]) Ví dụ: document.write(parseInt("3") + " ");
//-> 3
document.write(parseInt("10.33") + " ");
//->10
document.write(parseInt("2 4 6") + " ");
//->2
document.write(parseInt("60") + " ");
//->60
document.write(parseInt("30 ngày") + " ");
//->30
document.write(parseInt("Tôi 20") + " ");
//->NaN
1.3.4.3 PaseFloat Tương tự hàm paseInt nhưng trả về số thực. Cú pháp: parseFloat("chuỗi") Ví dụ: document.write(parseFloat("10.33") + " ");
//->10.33
document.write(parseFloat("23 4 6") + " ");
//->23
document.write(parseFloat("60") + " ");
//->60
document.write(parseFloat("30 ngày") + " ");
//->30
document.write(parseFloat("Tôi 20") + " ");
//-> NaN
1.3.5 Hàm (Function) JavaScript cũng cho phép sử dụng các hàm. Mặc dù không nhất thiết phải có, song các hàm có thể có một hay nhiều tham số truyền vào và một giá trị trả về. Khai báo: hàm có thể được khai báo thẻ <head> hoặc <body> hoặc trong tập tin *.js
Nguyễn Thị Lan - Lớp 53K1 – Khoa CNTT
Trang 24
Đồ án tốt nghiệp đại học
function <tên hàm>( [ tham số 1, tham số 2, … ]) { /* khối lệnh xử lý */ [ return <giá trị trả về >]
} Ví dụ: function dt_hinhchunhat(chieudai,chieurong) { return chieudai*chieurong; }