LỜI CẢM ƠN
Chúng em xin gửi lời cảm ơn chân thành đến Thầy giáo Huỳnh Tấn Khải, người tận tình hướng dẫn, giúp đỡ chúng em hoàn thành báo cáo tiểu luận này.
Xin tri ân tất cả các Thầy Cô, những người dày công dạy dỗ, truyền cho chúng em rất nhiều tri thức quý báu.
Cảm ơn tất cả bạn bè của chúng tôi, những người đã sát cánh, chia sẻ những khó khăn của chúng tôi và giúp đỡ chúng tôi rất nhiều trong quá trình thực hiện báo cáo này.
Do vốn kiến thức và lượng thời gian có hạn nhóm em không thể tránh khỏi những thiếu sót, rất mong nhận được sự đóng góp ý kiến của Thầy, Cô và các bạn!
Sinh viên thực hiện
MỞ ĐẦU
Ngày nay, khoa học công nghệ đã có những bước phát triển mạnh mẽ cả về chiều rộng lẫn chiều sâu. Máy tính điện tử không chỉ được coi là một thứ phương tiện quý hiếm mà nay đã trở thành một công cụ làm việc, giải trí thông dụng của con người không những ở công sở mà thậm chí còn ở ngay trong gia đình.
Với sự bùng nổ của công nghệ thông tin và với vai trò không thể thiếu của ngành khoa học này, các tổ chức và các doanh nghiệp lớn và nhỏ đều tìm mọi biện pháp để xây dựng và củng cố một cách hoàn thiện hệ thống thông tin của mình nhằm tin học hóa các hoạt động tác nghiệp của đơn vị.
Hiện nay trên thế giới cũng như ở Việt Nam, các cơ quan, các tổ chức cũng như các trường học đều không ngừng đầu tư vào việc xây dựng và cải thiện các giải pháp cũng như các kênh giao tiếp để cung cấp thông tin nhanh chóng đến người sử dụng nói chung một cách nhanh chóng. Chúng ta cũng dễ dàng nhận ra tầm quan trọng và tính tất yếu của trang thông tin điện tử nói chung và cổng giao tiếp tin tức nói riêng giữa các cơ quan và người dùng. Với bất kỳ thiết bị điện tử có kết nối internet nào, từ điện thoại di động đến máy tính bảng, máy tính cá nhân, người dùng mọi lúc mọi nơi đều có thể truy cập và nắm bắt được các thông tin cần thiết về một cơ quan hay một mục đích nào đó. Điều này hoàn toàn giải quyết được bằng một website đủ mạnh, cơ động (hỗ trợ được nhiều loại thiết bị truy cập) và đầy đủ tính năng.
Ở Việt Nam, nhiều trường học cũng đã tiến hành xây dựng website riêng cho từng trường để phổ biến các tin tức của nhà trường đến học sinh và phụ huynh. Tuy nhiên, các trang web này còn nhiều hạn chế như chỉ hỗ trợ hiển thị tốt trên màn hình máy tính (kích thước lớn) chứ chưa hiển thị tốt được trên các loại thiết bị khác nhau, đặc biệt là trên điện thoại di động, loại thiết bị được sử dụng để truy cập mạng internet ngày càng phổ biến hơn cả máy tính. Ngoài ra, các chức năng của trang web còn khá ít, chưa cung cấp đủ các tính năng cần thiết trong việc phổ biến tin tức đến học sinh và phụ huynh như vấn đề quản lý thời khóa biểu, quản lý thi đua giữa các lớp,...
Nhằm nghiên cứu và góp phần phát triển một website khắc phục các nhược điểm nêu trên, cụ thể là trang web phải đảm bảo tính năng responsive – nghĩa là trang web cho phép hiển thị tốt trên các loại thiết bị khác nhau với các kích thước màn hình khác nhau, đặc biệt là trên màn hình nhỏ của điện thoại di động, nhóm chúng em đã tìm hiểu và thực hiện đề tài “Thiết kế và xây dựng Website trường THPT Trần Phú – Hiệp Đức”. Trang web cung cấp các chức năng trong việc đưa thông tin đến học sinh và phụ huynh một cách kịp thời và đầy đủ nhất.
TRƯỜNG ĐẠI HỌC QUẢNG NAM
KHOA CÔNG NGHỆ THÔNG TIN
-------------o0o------------
ĐỀ TÀI
THIẾT KẾ VÀ XÂY DỰNG WEBSITE
TRƯỜNG THPT TRẦN PHÚ – HIỆP ĐỨC
Giáo viên hướng dẫn: ThS. HUỲNH TẤN KHẢI
Sinh viên thực hiện:
1. Nguyễn Hữu Vũ
2. Hồ Thanh Tùng
Lớp:
DV 16 CTT01
Tam kỳ, tháng 10 năm 2017
LỜI CẢM ƠN
Chúng em xin gửi lời cảm ơn chân thành đến Thầy giáo Huỳnh Tấn Khải, người tận
tình hướng dẫn, giúp đỡ chúng em hoàn thành báo cáo tiểu luận này.
Xin tri ân tất cả các Thầy Cô, những người dày công dạy dỗ, truyền cho chúng em
rất nhiều tri thức quý báu.
Cảm ơn tất cả bạn bè của chúng tôi, những người đã sát cánh, chia sẻ những khó
khăn của chúng tôi và giúp đỡ chúng tôi rất nhiều trong quá trình thực hiện báo cáo này.
Do vốn kiến thức và lượng thời gian có hạn nhóm em không thể tránh khỏi những
thiếu sót, rất mong nhận được sự đóng góp ý kiến của Thầy, Cô và các bạn!
Sinh viên thực hiện
MỞ ĐẦU
Ngày nay, khoa học công nghệ đã có những bước phát triển mạnh mẽ cả về chiều
rộng lẫn chiều sâu. Máy tính điện tử không chỉ được coi là một thứ phương tiện quý hiếm
mà nay đã trở thành một công cụ làm việc, giải trí thông dụng của con người không
những ở công sở mà thậm chí còn ở ngay trong gia đình.
Với sự bùng nổ của công nghệ thông tin và với vai trò không thể thiếu của ngành
khoa học này, các tổ chức và các doanh nghiệp lớn và nhỏ đều tìm mọi biện pháp để xây
dựng và củng cố một cách hoàn thiện hệ thống thông tin của mình nhằm tin học hóa các hoạt
động tác nghiệp của đơn vị.
Hiện nay trên thế giới cũng như ở Việt Nam, các cơ quan, các tổ chức cũng như các
trường học đều không ngừng đầu tư vào việc xây dựng và cải thiện các giải pháp cũng
như các kênh giao tiếp để cung cấp thông tin nhanh chóng đến người sử dụng nói chung
một cách nhanh chóng. Chúng ta cũng dễ dàng nhận ra tầm quan trọng và tính tất yếu của
trang thông tin điện tử nói chung và cổng giao tiếp tin tức nói riêng giữa các cơ quan và
người dùng. Với bất kỳ thiết bị điện tử có kết nối internet nào, từ điện thoại di động đến
máy tính bảng, máy tính cá nhân, người dùng mọi lúc mọi nơi đều có thể truy cập và nắm
bắt được các thông tin cần thiết về một cơ quan hay một mục đích nào đó. Điều này hoàn
toàn giải quyết được bằng một website đủ mạnh, cơ động (hỗ trợ được nhiều loại thiết bị
truy cập) và đầy đủ tính năng.
Ở Việt Nam, nhiều trường học cũng đã tiến hành xây dựng website riêng cho từng
trường để phổ biến các tin tức của nhà trường đến học sinh và phụ huynh. Tuy nhiên, các
trang web này còn nhiều hạn chế như chỉ hỗ trợ hiển thị tốt trên màn hình máy tính (kích
thước lớn) chứ chưa hiển thị tốt được trên các loại thiết bị khác nhau, đặc biệt là trên điện
thoại di động, loại thiết bị được sử dụng để truy cập mạng internet ngày càng phổ biến
hơn cả máy tính. Ngoài ra, các chức năng của trang web còn khá ít, chưa cung cấp đủ các
tính năng cần thiết trong việc phổ biến tin tức đến học sinh và phụ huynh như vấn đề quản
lý thời khóa biểu, quản lý thi đua giữa các lớp,...
1
Nhằm nghiên cứu và góp phần phát triển một website khắc phục các nhược điểm nêu trên,
cụ thể là trang web phải đảm bảo tính năng responsive – nghĩa là trang web cho phép hiển thị tốt
trên các loại thiết bị khác nhau với các kích thước màn hình khác nhau, đặc biệt là trên màn hình
nhỏ của điện thoại di động, nhóm chúng em đã tìm hiểu và thực hiện đề tài “Thiết kế và xây
dựng Website trường THPT Trần Phú – Hiệp Đức”. Trang web cung cấp các chức năng trong
việc đưa thông tin đến học sinh và phụ huynh một cách kịp thời và đầy đủ nhất.
2
TÓM TẮT ĐỀ TÀI
Với mức độ phức tạp và quy mô ứng dụng, cộng thêm vấn đề thời gian cho nên đề
tài “Thiết kế và xây dựng Website trường THPT Trần Phú – Hiệp Đức” chỉ dừng ở
mức tìm hiểu ngôn ngữ lập trình Web PHP & MYSQL, và áp dụng xây dựng ứng dụng
thực nghiệm trang Web trường học trên mạng.
Website với mục đích cung cấp cho các em học sinh và phụ huynh các thông tin
chính xác về thông tin nhà trường ( Lịch học, thời gian biểu, tin tức, hình ảnh, hoạt động,
kết quả học tập.v.v.). Các thông tin được cập nhật thường xuyên và nhanh chóng. Vì vậy,
rút ngắn được khoảng cách giữa phu huynh học sinh và nhà trường, đưa thông tin nhà
trường đến với bậc quý phụ huynh và học sinh một cách nhanh chóng và thuận lợi hơn.
Nhằm ứng dụng tin học hóa nói chung và thương mại điện tử nói riêng trong lĩnh
vực giáo dục, việc xây dựng một website cung cấp thông tin cho trường học là rất cần
thiết trong thời đại ngày nay, khi mà vấn đề cung cấp thông tin và giao tiếp giữa nhà
trường và phụ huynh là điều hết sức quan trọng. Vì vậy, đề tài có một số tính mới như
sau:
Website cung cấp tính năng Responsive cho phép hiển thị tốt với các loại thiết bị
với các kích thước màn hình khác nhau.
Website mở rộng bộ cung cấp nội dung (Content Management System – CMS)
NukeViet với việc phát triển thêm các module chức năng như sau:
-
Module Quản lý Thời khóa biểu
-
Module Quản lý Xếp hạng thi đua giữa các lớp
-
Module Quản lý Công văn, Văn bản
Mục tiêu của đề tài
Nghiên cứu và xây dựng hoàn chỉnh một website tin tức cho trường THPT Trần Phú
– Hiệp Đức với các tính năng hiện đại như Responsive và cung cấp các chức năng mở
3
rộng, hỗ trợ cho việc quản lý, trao đổi thông tin giữa nhà trường và phụ huynh, học sinh
như Quản lý Thời khóa biểu, Quản lý Xếp hạng, thi đua giữa các lớp, …
Đối tượng và phạm vi nghiên cứu
Đối tượng của đề tài:
-
Mọi người trên toàn quốc có nhu cầu xem thông tin, tin tức của nhà trường.
-
Các bậc phụ huynh, học sinh có em em học tại trường muốn tìm hiểu thêm
thông tin về nhà trường khi cần liên hệ một vấn đề nào đó.
-
Trao đổi thông tin nội bộ trong nhà trường giữa CB,GV,NV.
Phạm vi nghiên cứu của đề tài:
-
Tìm hiểu kỹ thuật lập trình ngôn ngữ PHP.
-
Sử dụng mã nguồn mở NuKeViet.
-
Hiểu được cách lưu trữ dữ liệu của hệ quản trị cơ sở dữ liệu MySQL.
Phương pháp nghiên cứu
- Tìm hiểu và nghiên cứu ngôn ngữ lập trình PHP, CSS, HTML…
- Khảo sát thực tế hoạt động tính năng của trang web.
- Phân tích, thiết kế website và các chức năng sẽ đề ra.
- Thực thi ứng dụng.
- Thay đổi, bổ sung, khắc phục sự cố và sẽ đưa ra website sử dụng trực tuyến.
4
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
Hiện nay có rất nhiều ngôn ngữ lập trình trên mạng: ASP, FOXWEB, JSP, PHP, …
cùng với chúng cũng có rất nhiều hệ quản trị CSDL như: MySQL, DB2, SQL Server, …
Trong hệ thống này em chọn ngôn ngữ lập trình PHP và hệ quản trị cơ sở dữ liệu MySQL.
1. GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH PHP
1.1. Giới thiệu
PHP được dùng để thay thế cho Hypertext Preprocessor (Bộ tiền xử lý siêu văn bản)
là một ngôn ngữ kịch bản nhúng HTML phía server. Phần lớn cú pháp của nó mượn của
C, Java, Perl. Ngoài ra, nó cũng có thêm một số đặc trưng riêng. Ngôn ngữ PHP cho phép
người pháp triển web động một cách nhanh chóng. Chúng ta hãy xem một ví dụ đơn giản
Example
Khác với kịch bản CGI được viết trong một số ngôn ngữ khác như Perl hoặc C# thay
vào việc một chương trình với nhiều lệnh để xuất html, bạn chỉ cần viết một kịch bản
html với một vài mã nhúng để làm một việc gì đó ( trong ví dụ trên là xuất ra câu “Đây là
một ví dụ về PHP”). Mã nguồn của PHP được đặt trong một cặp thẻ đặc biệt (‘’). Đặc điểm phân biệt PHP với một số ngôn ngữ khác như Java script là mã của nó
được thực hiện phía server. Các đoạn mã PHP sẽ được thực hiện trên server trước khi
truyền kết quả cho máy client, do đó người dùng phía client sẽ không thể biết được đoạn
mã thật của PHP. Đây cũng là một giải pháp khá hay cho việc bảo mật mã nguồn của
PHP.
5
1.1.1.
PHP có thể làm gì?
Ở mức đơn giản nhất PHP có thể làm được bất cứ điều gì mà một chương trình CGI
có thể làm như lấy các form dữ liệu, sinh nội dung các trang động hoặc gửi và nhận các
cookie.
Có lẽ đặc tính mạnh mẽ nhất và quan trọng nhất của PHP là nó hỗ trợ những CSDL
có phạm vi rộng. Việc viết những trang Web có CSDL hết sức đơn giản. Những CSDL
được PHP hỗ trợ:
Adabas D
dBase
Empress
FilePro
Hyperware
IBM DB2
Informix
Ingres
InterBase
FrontBase
mSQL
Direct MS-SQL
My SQL
ODBC
Oracle
Ovrimos
PostgreSQL
Solid
Sybase
Velocis
Unix dbm
PHP cũng hỗ trợ việc liên kết với các dịch vụ khác sử dụng giao thức như IMAP,
SNMP, NNTP, POP3…thậm chí cả HTTP bạn cũng có thể sử dụng những socket mạng
thô với các giao thức khác nhau.
1.1.2.
Những nét lịch sử chính của PHP
PHP bắt đầu được hình thành vào mùa thu năm 1994 bởi Rasmus Lerdorf. Phiên bản
đầu tiên non_released được sử dụng trên mạng chủ của ông để lưu giữ dấu vết những
người xem trực tuyến lý lịch của ông. Phiên bản này được sử dụng rộng rãi vào đầu năm
1995 và được biết đến như là công cụ xây dựng trang chủ cá nhân( Personal Home Page
Tools). Nó có một bộ phận tích cú pháp khá đơn giản tuy nhiên nó chỉ có thể hiểu một số
ít macro đặc biệt. Sau đó được nâng cấp lên cao hơn và có thể hiểu thêm một số các tiện
ích dùng chung trên các trang chủ. Bộ phận tích cú pháp được viết lại năm 1995 và được
đặt tên là phiên bản 2 PHP/FI. Trong phiên bản này các hàm FI( gọi là hàm thông dịch
form-Form Interpreter) được Rasmus viết riêng trong một gói khác để thông dịch các
form dữ liệu html. Ông đã tổ hợp các thẻ công cụ xây dựng trang chủ với các hàm FI và
thêm một số hỗ trợ mSQL. PHP/FI phát triển một cách kinh ngạc và mọi người bắt đầu
đóng góp mã nguồn cho nó.
6
Thật khó có thể đưa ra một sự thống kê chính xác nhưng có thể ước lượng được
khoảng 15000 website sử dụng PHP/FI vào cuối năm 1996 trên thế giới. Đến giữa năm
1997 con số này đã lên tới 50000 website, giữa năm 1997 cũng cho thấy sự thay đổi trong
việc phát triển PHP. Bộ cú phân tích cú pháp đã được viết lại để trở thành phiên bản
PHP3. Phần lớn các mã nguồn của PHP/FI được sử dụng trong PHP3 tuy nhiên nhiều
phần của nó cũng được viết lại hoàn toàn.
Phiên bản PHP4 ra đời đáp ứng hầu hết các chức năng của PHP3 ngoài ra chùng còn
được hỗ trợ ở mức cao hơn như cho phép tích hợp một dãy các thư viện và các hàm mở
rộng… Ngày nay cả PHP3 và PHP4 đều được sử dụng rất nhiều trong các sản phẩm
thương mại lớn như web server StrongHold của Red Had. Một sự ước lượng dè dặt dựa
trên phép ngoại suy từ những con số được cung cấp bởi NetCrafg là trên 5100000 site trên
thế giới sử dụng PHP và càng triển vọng hơn khi càng có nhiều site chạy server IIS của
Microsoft trên internet.
1.2. Một số cú pháp cơ bản của PHP
1.2.1.
Các thẻ chứa đoạn mã PHP
Có 4 cách để viết một đoạn mã PHP trong một trang web
Cách thứ nhất: đoạn mã PHP được chứa trong cặp thể ‘’ cách này chỉ
thực hiện được khi thuộc tính cho phép dùng thẻ ngắn trong file cấu hình của PHP được
thiết lập là enable (thuộc tính này thường được để mặc định là enable).
Ví dụ:
echo “Đây là cách thứ nhất”; ?>
Cách thứ hai: đoạn mã PHP được chứa trong cặp thẻ ‘’. Đây là cách
đầy đủ nhất của PHP.
Ví dụ:
Cách thứ ba: đoạn mã PHP được chứa trong cặp thẻ ‘’cách này được đặt mặc định giống như các ngôn ngữ nhúng khác trong các
trang html.
7
Ví dụ:
Cách thứ tư: đoạn mã PHP được chứa trong cặp thẻ ‘<%>’hoặc ‘<%=’ và ‘%’. Cách
này chỉ có tác dụng khi thuộc tính sử dụng các thẻ kiểu ASP được thiết lập là enable trong
file cấu hình của PHP.
Ví dụ:
<% echo “Đây là cách thứ tư”; %>
<%= echo “Đây là cách thứ tư” ; %>
1.2.2. Ngăn cách các lệnh
Các lệnh trong PHP được ngăn cách nhau bởi dấu chấm phẩy ’;’ giống như trong
ngôn ngữ C. Thẻ đóng đoạn mã PHP (‘?>’) cũng có tác dụng kết thúc câu lệnh như dấu
‘;’. Trong hai câu lệnh sau đều đúng:
1.2.3. Chú thích
PHP hỗ trợ các chú thích giống như C, C++ và các chú giải kiểu shell trong Unix.
Có hai cách chú thích:
Chú thích trên một dòng được bắt đầu bằng dấu ‘//’ các ký tự phía sau cặp ký hiệu
này đều được coi là phần chú thích.
Ví dụ:
Chú thích trên nhiều dòng được ký hiệu bởi cặp dấu bắt đầu ‘/*’ và kết thúc ‘*/’ mọi
ký tự trong cặp dấu này đều được coi là phần chú thích.
Ví dụ:
1.3. Kiểu
PHP hỗ trợ một số các kiểu sau:
1.3.1. Kiểu mảng
Có hai loại kiểu mảng: mảng một chiểu và mảng nhiều chiều
Một số hàm hỗ trợ liên quan đến mảng trong PHP:
Các hàm tạo mảng: list(), arrway()
Các hàm sắp xếp mảng: asort(), arsorrt(), ksort(), …
Hàm đếm số phần tử mảng: count()
Các hàm duyệt mảng: next(), prev(), each().
…..
1.3.2. Các kiểu số
Các kiểu số con trỏ động có kích thước về độ lớn khác nhau. Độ lớn tối đa của
chúng xấp xỉ 1.8e308
Các kiếu số nguyên:PHP có các kiểu số nguyên giống như C. Tuy nhiên kích thước
của chúng đều là các số 32 bit.
Một số hàm liên quan đến kiểu số:
Các hàm lượng giác:sin(), cos(), tan(), acos(),...
Các hàm số học: abs(), exp(), pow(), log(), …
Các hàm về cơ số: base_convert(), bindec(), decbin()…
Các hàm làm tròn: ceil(), floor()…
Các hàm khác: getrandmax(), rand()…
1.3.3. Các kiểu đối tượng
9
PHP cũng hỗ trợ việc khai báo các đối tượng giống như C++ các đối tượng được
khai báo như sau:
Class tên_lớp{
Khai báo các thuộc tính
Khai báo các phương thức
}
Để tạo một biến đối tượng sử dụng từ khóa new
1.3.4. Kiểu sâu
Đây là kiểu hay dùng nhất trong PHP. Các quy tắc về xâu trong PHP giống như trong
C. Các xâu được đặt trong cặp dấu ‘’ hoặc “”. Một số hàm liên quan đến xâu:
Các hàm in xâu: echo(), print(), printf(), flush().
Các hàm xóa ký tự trắng: chop(), trim(), rtrim()
Các hàm xử lý xâu: strcmp(), substr(), str_replace()…
Các hàm tìm kiếm xâu: strchr(), strstr(), stristr()..
Hàm lấy độ dài xâu: strlen()
…........
1.4. Cấu trúc điều khiển
PHP có các cấu trúc điều khiển tương tự như C. Nó bao gồm:
1.4.1. Cấu trúc rẽ nhánh
PHP có hai kiểu cấu trúc rẽ nhánh:
Cấu trúc if:
if (biểu thức) {
[ Khối lệnh ]
}
hoặc
if (biểu thức) {
[ Khối lệnh 1]
10
}else {
[ Khối lệnh 2]
}
Cấu trúc switch…case
switch (tên biến)
{
case giá trị 1: [Khối lệnh 1]
case giá trị 2: [ Khối lệnh 2]
……….
}
hoặc
switch (tên biến) {
case giá trị 1:[ Khối lệnh 1]
case giá trị 2:[Khối lệnh 2]
…………
defaut:[Khối lệnh]
}
1.4.2. Cấu trúc lặp
Có các kiểu lặp sau:
Cấu trúc while
while (biểu thức) {
[ Khối lệnh ]
}
Cấu trúc do…while
do {
[Khối lệnh ]
} while (biểu thức)
Cấu trúc foreach:
foreach (biểu thức mảng as biến giá trị) {
[ Khối lệnh ]
}
11
hoặc
foreach ( biểu thức mảng as biến khóa => biến giá trị) {
[ Khối lệnh ]
}
Cấu trúc for:
for (biểu thức 1; biểu thức 2; biểu thức 3) {
[ Khối lệnh ]
}
1.4.3. Cấu trúc khác
Require(): Thay thế vị trí của câu lệnh này bằng mã lệnh của file cụ thể. Hàm này
giống như ký hiệu tiền xử lý trong C là #include
Include(): Giống như hàm require nhưng nó còn làm thêm một thao tác nữa là xác
định file đó trước khi thay thế đoạn mã lệnh.
Require_once(): Giống như hàm require() nhưng nó chỉ thay thế mã lệnh của file
một lần.
Include_once(): Giống như hàm include() nhưng nó chỉ thay thế mã lệnh của file
một lần.
2. GIỚI THIỆU VỀ CƠ SỞ DỮ LIỆU MYSQL
2.1. Giới thiệu về MySQL
Trước đây người ta thường dùng mSQL để kết thao tác cơ sở dữ liệu qua các thủ tục.
Mặc dù mSQL có thể cung cấp hầu hết các chức năng phục vụ cho việc khai thác dữ liệu
nhưng sau một thời gian kiểm thử dần dần xuất hiện các vấn đề về nó. mSQL không đủ
nhanh và linh hoạt như yêu cầu. Do đó, người ta đã nghĩ tới một phiên bản SQL mới.
MySQL ra đời ngay từ phiên bản đầu tiên nó đáp ứng gần như khá hoàn hảo các yêu cầu
của người sử dụng. MySQL được xây dựng chủ yếu dựa trên các hàm API giống như
trong mSQL. Người ta sử dụng trực tiếp các hàm API truy cập hệ thống chứ không dùng
các hàm trung gian của các công ty thứ ba giống như trong mSQL do đó tốc độ của
MySQL vượt xã so với mSQL trước đây. Do nó có mã nguồn mở nên phiên bản MySQL
12
phát triển rất nhanh. Nó được cung cấp các tính năng ngày càng mạnh hơn, linh hoạt hơn
phiên bản đầu tiên rất nhiều.
2.2. Các đặc trưng của MySQL
MySQL là một hệ quản trị cơ sở dữ liệu: Một CSDL là một tập hợp dữ liệu có cấu
trúc. Nó có thể là bất cứ thứ gì từ danh sách các loại hàng hóa đơn giản đến một triển lãm
tranh hay là một lượng lớn thông tin trên mạng. Để truy cập và xử lý dữ liệu được lưu trữ
trong cơ sở dữ liệu máy tính bạn cần phải có một hệ quản trị CSDL như MySQL. Từ khi
các máy tính trở thành một phương tiện khá tốt trong việc điều khiển một lượng lớn dữ
liệu, việc quản trị cơ sở dữ liệu đóng vai trò trung tâm trong tính toán. Nó giống như một
tiện ích độc lập hay một phần của các ứng dụng khác.
MySQL là một hệ quản trị cơ sở dữ liệu quan hệ: Một cơ sở dữ liệu quan hệ lưu trữ
dữ liệu trong các bảng tách rời nhau thì thích hợp hơn là đưa tất cả dữ liệu vào một nơi
lưu trữ lớn. Điều này làm tăng tốc độ và tính mềm dẻo. Các bảng được liên kết bởi các
quan hệ được định nghĩa làm cho nó có thể kết nối dữ liệu ở các bảng khác nhau trong
một yêu cầu. SQL là một phần của MySQL. Nó là ngôn ngữ được chuẩn hóa và được sử
dụng phổ biến nhất để truy cập cơ sở dữ liệu.
MySQL là phần mềm có mã nguồn mở: Một phần mềm có mã nguồn mở là phần
mềm được dùng miễn phí cho mọi người. Do đó mọi người có thể nghiên cứu mà nguồn
và thay đổi nó cho phù hợp với nhu cầu sử dụng của từng người. Hiện nay MySQL có
một tập các chức năng rất lớn và đa dạng. Ngoài ra nó còn được bổ sung các tính năng
khá mạnh khác như: khả năng kết nối và khả năng bảo mật…
MySQL là một phần mềm thân thiện: MySQL là một hệ quản trị cơ sở dữ liệu có tốc
độ xử lý khá nhanh và rất đáng tin cậy. Nó cung cấp một số công cụ cho phép bạn tìm
kiếm thông tin một cách hiệu quả hơn nhiều so với các hệ quản trị cơ sở dữ liệu khác.
Theo một thống kê cho thấy dung lượng và tốc độ xử lý của MySQL chỉ đứng sau Oracle
tuy nhiên nó lại chiếm ưu thế hơn Oracle ở chỗ kích thước của nó lại rất nhỏ hơn rất nhiều
rất phù hợp với các ứng dụng vừa và nhỏ.
Các đặc tính kỹ thuật của MySQL: MySQL là một hệ thống có mô hình client/server
chứa server SQL đa luồng hỗ trợ các chương trình ứng dụng phía sau( trong mạng cục bộ,
13
backend là các chương trình được lưu trữ trên máy chủ dùng để hoàn thành các nhiệm vụ
xử lý mà chương trình đó được thiết kế để thực hiện, còn fontend là các chương trình phía
trước dùng để điều khiển giao tiếp với từng user ở các client) hỗ trợ các thư viện chương
trình client khác nhau các công cụ quản trị và giao diện lập trình.
2.3. Một số kiểu cơ sở dữ liệu trong MySQL
2.3.1. Kiểu xâu
Xâu là một tập hợp các ký tự liên tiếp nhau và được đặt trong cặp dấu “” hoặc ‘’ các
quy tắc về xâu giống như trong ngôn ngữ C. MySQL hỗ trợ một số hàm thao tác xâu:
Các hàm về ký tự: ascii(), ord(), char()…
Các hàm cắt trắng: Trim(), ltrim(), rtrim()..
Các hàm về thao tác xâu: concat(), left(), right(), mid(),..
Các hàm về kiểu chữ: ucase(), upper(), lcase()..
Các hàm khác: repeat(), elt()…
Kích thước của mỗi xâu là 255 để lưu trữ các xâu có kích thước lớn hơn ta có thể
dùng các kiểu khác như: text, blob..
2.3.2. Kiểu số
MySQL hỗ trợ các kiểu số sau:
Các kiểu số nguyên: int, smallint, tinyint..
Các kiểu số thực: float, double, real, numeric, decimal..
Các hàm lượng giác: sin(), cos(), tan()..
Các hàm số học: abs(), exp(), pow()..
Các hàm làm tròn: ceiling(), round(), floor()..
2.3.3. Kiểu ngày tháng
MySQL hỗ trợ các kiểu ngày tháng sau:
Tên kiểu
Miêu tả
14
Datetime
‘0000-00-00 00:00:00’
Date
‘0000-00-00’
Time
‘0000:00’
Year
‘0000’
2.3.4. Các kiểu khác
Ngoài các kiểu cơ bản trên MySQL còn hỗ trợ thêm một số kiểu khác dựa trên việc
xây dựng từ các kiểu cơ bản nói trên như: set, enum….
2.4. Các lệnh thao tác CSDL
2.4.1. Tạo một CSDL
Cú pháp:
CREATE
DATABASE [IF NOT EXISTS] db_name
Câu lệnh trên dùng để tạo một CSDL mới chưa có dữ liệu tên là db_name. CSDL
trong MySQL tương tự như những thư mục chứa các file tương ứng với các bảng. Khi tạo
một CSDL MySQL sẽ tạo luôn một thư mục cùng tên với tên của CSDL để chứa các file
tương ứng với các bảng của nó. Lệnh trên sẽ có lỗi nếu có một CSDL cùng tên đã tồn tại
và bạn không thêm chỉ lệnh [IF NOT EXISTS].
2.4.2. Xóa một CSDL
Cú pháp:
DROP DATABASE [IF EXISTS] db_name
Câu lệnh trên dùng để xóa một CSDL có tên là db_name. Khi xóa toàn bộ dữ liệu
trong CSDL này cũng bị xóa. Nếu bạn xóa một CSDL có biểu tượng liên kết thì cả liên
kết và CSDL cũng bị xóa theo do đó bạn phải thật cẩn thận khi dùng lệnh này. Bạn có thể
dùng chỉ lệnh [IF EXISTS] để ngăn chặn lỗi không tồn tại CSDL.
Kết quả của lệnh này là số file mà bạn xóa khỏi thư mục CSDL đó. Thông thường số
file đưa ra gấp ba lần số bảng bởi vì mỗi bảng trong CSDL tương ứng với ba file có tên
trùng tên bảng nhưng có phần mở rộng khác nhau:’.MYD’, ‘.MYI’, ‘.FRM’
2.4.3. Tạo một bảng
15
Cú pháp:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
(create_definition,..)][table_options] [select_statement]
2.4.4. Thay đổi thông tin một bảng
Cú pháp:
ALTER [IGNORE] TABLE
tbl_name alter_spec [, alter_spec..]
alter_specification: ADD[COLUMN] create_definition[FIRST
AFTER column_name]
Lệnh này dùng để thay đổi các thuộc tính của bảng như: đổi tên cột, thay đổi các
kiểu cột..
2.4.5. Đổi tên bảng
Cú pháp:
RENAME TABLE old_table TO backup_table, new_table TO
old_table
Lệnh này dùng để đổi tên bảng old_table thành tên new_table.
2.4.6. Xóa bảng
Cú pháp:
DROP TABLE [IF EXISTS] tbl_name [,tbl_name,..] [RESTRICT/
ASCADE]
Lệnh này dùng để xóa một hay nhiều bảng cùng một lúc. Chỉ dẫn [IF EXISTS] dùng
để ngăn chặn lỗi khi không có bảng.
2.5. Các hàm PHP thao tác với CSDL MySQL
Các hàm này cho phép chúng ta truy cập các server CSDL MySQL. Để dùng các
hàm này, chúng ta phải biên dịch PHP với hỗ trợ MySQL bằng cách sử dụng lựa chọn
-with-mysql. Nếu chúng ta sử dụng lựa chọn này mà không chỉ rõ đường dẫn tới MySQL,
PHP sẽ sử dụng các thư viện client đã được xây dựng sẵn. Các user chạy các ứng dụng
khác có sử dụng MySQL nên chỉ rõ đường dẫn tới MySQL: -with-mySQL =
/path/to/MySQL.
16
mysql_affected_rows.
int mysql_affected_rows([int linhk_identifier])
Trả về số các dòng của thao tác MySQL trước đó. Nó trả về số dòng bị ảnh hưởng
bởi các câu truy vấn:INSERT, UPDATE hoặc DELETE trên server kết gắn với một chỉ số
liên kết cụ thể. Nếu chỉ số liên kết không được chỉ rõ liên kết mở cuối cùng sẽ được chọn.
Nếu câu truy vấn cuối cùng là DELETE không có mênh đề WHERE tất cả các bản ghi sẽ
bị xóa khỏi bảng nhưng hàm này lại trả về 0.
Lệnh này không có hiệu quả với lệnh SELECT chỉ trên các lệnh sửa đổi bản ghi. Để
thu được số các cột trả về từ lệnh SELECT sử dụng mysql_num_rows()
mysql_change_user
int mysql_change_user(string user, strinh password[,string
database [,int linhk_identifie]])
Thay đổi sự cập nhật của người dùng trong kết nối tích cực hiện tại hoặc kết nối
được truyền tham số lựa chọn linh_identifier. Nếu một CSDL được chỉ rõ nó sẽ mặc định
CSDL hiện tại sau khi người dùng thay đổi
mysql_close
int mysql_close([int identifier])
Đóng kết nối MySQL hiện tại. Nó trả về true nếu thành công ngược lại trả về fasle.
Việc sử dụng mysql_close() thường là không cần thiết, khi các liên kết mở không cố định
vì nó sẽ tác động đóng ở cuối kịch bản, mysql_close() sẽ không đóng các liên kết cố định
được tạo bởi mysql_pconnect()
mysql_connect
int mysql_connect([strinh hostname [:post] [:/path/to/sokect]
[,string username [,string password]]])
Mở một kết nối tới một MySQL Server, giá trị trả về là một liên kết tích cực nếu
thành công ngược lại sẽ có một thông báo lỗi. Hàm này thiết lập một kết nối tới một
MySQL Server, các tham số có giá trị mặc định như sau:
Host: post
= ‘localhost:3306’
Usernamw = tên của người dùng trên server
17
Password = ‘’_để trống
Xây hostname có thể chứa một số hiệu cổng ”hostname:post” hoặc một đường dẫn
tới một socket “:/path/to/socket” đối với localhost
Nếu có một lời gọi hàm thứ hai với các tham số tương tự sẽ không tạo ra liên kết
mới mà nó thay thế liên kết cũ bằng liên kết mới. Liên kết sẽ đóng ngay sau khi kịch bản
thực hiện xong trừ khi nó được đóng trước khi kịch bản kết thúc bằng lệnh mysql_close().
mysql_create_db
int mysql_create_db( string db_name[,int link_identifier])
Tạo một cơ sở dữ liệu MySQL hàm này thử tạo một CSDL mới trên server được liên
kết với link_identifier.
mysql_data_seek
int mysql_data_seek( int result_identifier, int row_number)
Dịch chuyển con trỏ kết quả bên trong, trả về true nếu thành công, fasle ngược lại.
Hàm này dịch chuyển con trỏ hàng bên trong kết quả MySQL liên kết với result_identifier
để trỏ tới hàng row_number lời gọi tiếp theo của hàm mysql_fetch_row() sẽ trả về giá trị
bằng row_number bắt đầu từ 0.
mysql_db_name
int mysql_db_name( int result, int row[,mixed field])
Lấy dữ liệu kết quả. Hàm này lấy tham số đầu tiên của nó từ lời gọi hàm
mysql_list_dbs(). Tham số row là một chỉ số tập hợp kết quả. Nếu xuất hiện lỗi giá trị trả
về false, sử dụng mysql_errno() và mysql_error() để lấy lỗi.
mysql_query()
int mysql_query( string query[,int link_identifier])
Gửi một lệnh truy vấn tới server, nếu link_identifier không được chỉ rõ liên kết cuối
cùng sẽ được sử dụng, nếu không có liên kết nào được mở hàm sẽ thiết lập một liên kết
giống như hàm mysql_connect() được gọi không tham số và dùng nó.
Hàm trả về true hoặc fasle để xác định xem câu truy vấn có thành công hay không.
True có nghĩa là hợp lệ và có thể thực hiện được.
18
- Xem thêm -