Báo cáo tốt nghiệp: Với sự phát triển không ngừng của hệ thống mạng máy tính rộng khắp toàn cầu, việc sử dụng các dịch vụ trao đổi qua mạng không còn mấy xa lạ đối với các bạn sinh viên nữa. Website nói chung và dịch vụ forum nói riêng là một trong những dịch vụ khá phổ biến. Hệ thống trao đổi thông tin trực tuyến là một phương tiện trợ giúp hữu hiệu cho con người nhất là trong thời đại bùng nổ thông tin như hiện nay. Hàng ngày có vô số cuộc trao đổi được gởi trên mạng, nhờ dịch vụ này các sinh viên có thể trao đổi thông tin học tập với nhau một cách nhanh chóng, tiện ích, và có tính chất kinh tế. Ngày nay Diễn đàn trên Web được ứng dụng rất nhiều nơi, ví dụ trong một trường học, diễn đàn sẽ giúp đỡ các học sinh, sinh viên trao đổi thảo luận với nhau qua mạng, hay trong mạng nội bộ của một cơ quan... Xuất phát từ lợi ích mà diễn đàn đem lại, với mong muốn tạo ra một ứng dụng trên mạng, giúp mọi người trao đổi thông tin với nhau nên em chọn đề tài: “Xây dựng diễn đàn học tập cho sinh viên trường Cao đẳng sư phạm Hòa Bình”.
Trang 1TRƯỜNG ĐẠI HỌC THÁI NGUYÊN TRUNG TÂM ĐÀO TẠO TỪ XA
BÁO CÁO TỐT NGHIỆP
ĐỀ TÀI:
XÂY DỰNG DIỄN ĐÀN HỌC TẬP CHO SINH VIÊN
Giảng viên hướng dẫn: BẠCH THỊ HUYÊN
Sinh viên thực hiện : NGUYỄN THỊ NGA QUỲNH Lớp: Kế toán K1 - Nhóm: 2
Đơn vị thực tập: Công ty cổ phần nước sạch Hòa Bình
tháng 5 năm 2016
Trang 2MỤC LỤC
MỤC LỤC 1
LỜI CAM ĐOAN 3
LỜI CẢM ƠN 4
LỜI NÓI ĐẦU 5
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 6
1.1 LỰA CHỌN CÔNG NGHỆ TRIỂN KHAI DIỄN ĐÀN HỌC TẬP 6
1.2 TÌM HIỂU NGÔN NGỮ PHP 6
1.2.1 Giới thiệu về PHP 6
1.2.2 Cú pháp cơ bản 8
1.2.3 Các kiểu dữ liệu chính 8
1.2.4 Biến 12
1.2.5 Biểu thức 12
1.2.6 Toán tử 15
1.2.7 Các câu lệnh điều khiển 17
1.2.8 Hàm 20
1.3 TÌM HIỂU VỀ MYSQL 22
1.3.1 Giới thiệu về MySQL 22
1.3.2 Câu lệnh SELECT 23
1.3.3 Mệnh đề WHERE 25
1.3.4 Toán tử logic AND và OR 27
1.3.5 Toán tử BETWEEN AND 28
1.3.6 Từ khoá DISTINCT 29
1.4 CÔNG CỤ THIẾT KẾ CHƯƠNG TRÌNH 30
1.4.1 Giới thiệu Appserv 30
1.4.2 Giới thiệu về vBullentin 30
CHƯƠNG 2: KHẢO SÁT VÀ PHÂN TÍCH THIẾT KẾ HỆ THỐNG 31
2.1 KHẢO SÁT HIỆN TRẠNG 31
2.1.1 Giới thiệu về Trường Cao đẳng sư phạm Hòa Bình 31
Trang 32.1.2 Hiện trạng nhà trường và bài toán đặt ra 31
2.2 PHÂN TÍCH YÊU CẦU ĐỀ TÀI 33
2.2.1 Yêu cầu chức năng của diễn đàn 33
2.2.2 Yêu cầu về hệ thống 34
2.3 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 35
2.3.1 Các yêu cầu khi xây dựng chương trình 35
2.3.2 Sơ đồ phân rã chức năng 41
2.3.3 Sơ đồ luồng dữ liệu mức đỉnh 42
2.3.4 Sơ đồ luồng dữ liệu mức dưới đỉnh 42
2.3.4 Sơ đồ luồng dữ liệu mức dưới đỉnh 43
2.3.6 Danh sách các bảng dữ liệu 47
2.3.7 Mô hình thực thể liên kết 49
CHƯƠNG 3: DIỄN ĐÀN HỌC TẬP SINH VIÊN TRƯỜNG CAO ĐẲNG SƯ PHẠM HÒA BÌNH 50
1 GIAO DIỆN CỦA DIỄN ĐÀN 50
2 GIAO DIỆN QUẢN LÝ 55
2 GIAO DIỆN QUẢN LÝ 56
KẾT LUẬN 58
1 CÁC KẾT QUẢ ĐẠT ĐƯỢC 58
2 HƯỚNG PHÁT TRIỂN 58
TÀI LIỆU THAM KHẢO 60
Trang 4LỜI CAM ĐOAN
Em xin cam đoan: Bản đồ án tốt nghiệp này là công trình nghiên cứu thực
sự của cá nhân, được thực hiện trên cơ sở lý thuyết, nghiên cứu khảo sát tình
hình thực tiễn dưới sự hướng dẫn khoa học của Th.s Quách Xuân Trưởng
Các số liệu, mô hình và kết quả trong đồ án là trung thực, các chiến lượcđưa ra xuất phát từ thực tiễn và kinh nghiệm Nội dung đồ án có tham khảo sửdụng các tài liệu, thông tin đăng tải trên các tạp chí và các trang web theo danhmục của đồ án
Một lần nữa em xin khẳng định về sự chung thực của lời cam kết trên.
Trang 5LỜI CẢM ƠN
Em xin cảm ơn thầy giáo Th.s Quách Xuân Trưởng đã tận tình hướng dẫn
và quý thầy cô Khoa công nghệ thông tin - Đại học công nghệ thông tin và truyền
thông Đã truyền dậy những kiến thức quý báu trong quá trình học đại học và
giúp đỡ kinh nghiệm cho đồ án hoàn thành được thuận lợi
Em xin cảm ơn các thầy cô giáo Trường Cao đẳng sư phạm Hòa Bình vàcác sinh viên trong trường đã nhiệt tình trao đổi góp ý kiến và cung cấp thông tin
tư liệu Em xin cảm ơn các thành viên trong lớp CNTT-K10B Hòa Bình đã tậntình giúp đỡ em hoàn thành tốt đồ án tốt nghiệp
Tuy nhiên, do giới hạn về thời gian và hạn chế về kiến thức cũng như kinhnghiệm của bản thân nên đồ án không tránh khỏi những thiếu sót Em rất mongnhận được sự góp ý của các thầy cô giáo để diễn đàn hoàn thiện hơn
Trang 6
LỜI NÓI ĐẦU
Với sự phát triển không ngừng của hệ thống mạng máy tính rộng khắptoàn cầu, việc sử dụng các dịch vụ trao đổi qua mạng không còn mấy xa lạ đốivới các bạn sinh viên nữa Website nói chung và dịch vụ forum nói riêng là mộttrong những dịch vụ khá phổ biến Hệ thống trao đổi thông tin trực tuyến là mộtphương tiện trợ giúp hữu hiệu cho con người nhất là trong thời đại bùng nổ thôngtin như hiện nay Hàng ngày có vô số cuộc trao đổi được gởi trên mạng, nhờ dịch
vụ này các sinh viên có thể trao đổi thông tin học tập với nhau một cách nhanhchóng, tiện ích, và có tính chất kinh tế
Ngày nay Diễn đàn trên Web được ứng dụng rất nhiều nơi, ví dụ trong mộttrường học, diễn đàn sẽ giúp đỡ các học sinh, sinh viên trao đổi thảo luận vớinhau qua mạng, hay trong mạng nội bộ của một cơ quan
Xuất phát từ lợi ích mà diễn đàn đem lại, với mong muốn tạo ra một ứngdụng trên mạng, giúp mọi người trao đổi thông tin với nhau nên em chọn đề tài:
“Xây dựng diễn đàn học tập cho sinh viên trường Cao đẳng sư phạm Hòa
Bình”.
Hiện nay Trường Cao đẳng sư phạm Hòa Bình đang có một mạng cục bộhiện đại, tuy nhiên em chưa thấy có nơi cho phép sinh viên truy nhập, tìm hiểunhững vấn đề phục vụ cho công việc học tập hay giải trí Chương trình Diễn đànhọc tập nếu được sử dụng trên mạng của trường mong sẽ góp một phần vào việctrao đổi thông tin của các bạn sinh viên, đem lại một hình thức trao đổi thông tinmới và chắc chắn sẽ hiệu quả
Với sự nỗ lực hết sức với mong muốn hoàn tất tốt mọi công việc đượcgiao nhưng do thời gian thực hiện không nhiều, lượng công việc tương đối lớn,trang thiết bị, tài liệu chưa đầy đủ và trình độ có hạn cho nên chắc chắn đề tài này
sẽ còn rất nhiều thiếu sót từ ý tưởng đến thực tế lập trình, từ phần văn bản lýthuyết đến phần thiết kế Vì vậy, em rất mong các ý kiến quý báu của thầy cô vàbạn bè
Trang 7CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 LỰA CHỌN CÔNG NGHỆ TRIỂN KHAI DIỄN ĐÀN HỌC TẬP.
Trong lập trình Website, các ngôn ngữ lập trình đều cho kết quả gần giốngnhau Thực tế có thể lựa chọn bất cứ ngôn ngữ lập trình web nào hiện có trên thịtrường để triển khai một dự án thiết kế Website Tuy nhiên sau quá trình nghiêncứu và khảo sát thực tế em đã quyết định lựa chọn ngôn ngữ lập trình PHP và cơ
sở dữ liệu MySQL để xây dựng Lý do của việc lựa chọn này là vì PHP có một số
ưu điểm vượt trội, cụ thể như sau:
- Tốc độ nhanh, dễ sử dụng
- Luôn được cải tiến và cập nhật
- Sử dụng cơ sở dữ liệu MySQL không yêu cầu bản quyền nên giá thành
để triển khai một dự án viết bằng PHP rẻ
- Có rất nhiều mã nguồn mở được viết bằng PHP, nên có thể nhanh chóngtriển khai một dự án với chi phí và thời gian là ít nhất
MySQL mặc dù rất phổ biến nhưng có nhiều đối thủ khác đang cạnh tranhvới nó và trội hơn MySQL về mặt nào đó Nhưng đối với phần đông mọi người
và phần lớn các ứng dụng, MySQL là sự lựa chọn không tồi bởi vì nó rất thíchhợp cho ứng dụng Web Bên cạnh đó, MySQL còn có một số ưu điểm như:
- Tốc độ xử lý tương đối nhanh
- Được cải tiến liên tục
Chính vì những lý do trên nên em đã lựa chọn xây dựng Diễn đàn bằngngôn ngữ PHP kết hợp với hệ quản trị cơ sở dữ liệu MySQL
1.2 TÌM HIỂU NGÔN NGỮ PHP
1.2.1 Giới thiệu về PHP
PHP (viết tắt hồi quy "PHP: Hypertext Preprocessor") là một ngôn ngữ lậptrì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 ứngdụ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íchhợp với web và có thể dễ dàng nhúng vào trang HTML Do được tối ưu hóa cho
Trang 8thờ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ênPHP đã nhanh chóng trở thành một ngôn ngữ lập trình web phổ biến nhất thếgiới.
Đoạn mã sau minh họa giúp cách viết PHP lồng vào các trang HTML dễ dàngnhư thế nào:
ra một môi trường chuyên nghiệp để đưa PHP phát triển ở quy mô xí nghiệp
PHP được phát triển từ một sản phẩm có tên là PHP/FI PHP/FI doRasmus Lerdorf tạo ra năm 1995, ban đầu được xem như là một tập con đơn giảncủa các mã kịch bản Perl để theo dõi tình hình truy cập đến bản sơ yếu lý lịch củaông trên mạng Ông đã đặt tên cho bộ mã kịch bản này là 'Personal Home PageTools' Khi cần đến các chức năng rộng hơn, Rasmus đã viết ra một bộ thực thibằng C lớn hơn để có thể truy vấn tới các cơ sở dữ liệu và giúp cho người sửdụng phát triển các ứng dụng web đơn giản Rasmus đã quyết định công bố mãnguồn của PHP/FI cho mọi người xem, sử dụng cũng như sửa các lỗi có trong nóđồng thời cải tiến mã nguồn
Trang 91.2.2 Cú pháp cơ bản
PHP chỉ phân tích các đoạn mã nằm trong những dấu giới hạn của nó Bất
cứ mã nào nằm ngoài những dấu giới hạn đều được xuất ra trực tiếp không thôngqua xử lý bởi PHP Các dấu giới hạn thường dùng nhất là <?php ?>, tương ứngvới dấu giới hạn mở và đóng Các dấu giới hạn <script language="php"> và
</script> cũng đôi khi được sử dụng Cách viết dấu giới hạn dạng thẻ ngắn cũng
có thể được dùng để thông báo bắt đầu đoạn mã PHP, đó là <? hay <?= với thẻthông báo kết thúc đoạn mã PHP là ?> Mục đích của những dấu giới hạn này làngăn cách mã PHP với những đoạn mã thuộc ngôn ngữ khác, gồm cả HTML.Mọi đoạn mã bên ngoài các dấu này đều bị hệ thống phân tích bỏ qua và đượcxuất ra một cách trực tiếp
PHP coi xuống dòng như một khoảng trắng theo kiểu như một ngôn ngữ
dạng tự do (free-form language) (trừ khi nó nằm trong trích dẫn xâu), và các phát
biểu được kết thúc bởi một dấu chấm phẩy PHP có ba kiểu cú pháp chú thích: /*
*/ cho phép một đoạn chú thích tùy ý, trong khi đó // và # cho phép chú thíchtrong phạm vi một dòng
1.2.3 Các kiểu dữ liệu chính
Các kiểu dữ liệu khác nhau chiếm dung lượng bộ nhớ khác nhau TrongPHP có 6 kiểu dữ liệu chính như sau:
Boolean True/ False Nhận giá trị True nếu đúng và
False nếu sai
liệu là đối tượng của lớp
Array Sử dụng cho các biến có kiểu
mảng và các phần tử có cùng
Trang 10Kiểu boolean mang 1 trong 2 giá trị TRUE (đúng) hoặc FALSE (sai).
Ví dụ:
<?php $a = TRUE;
$b = FALSE; //phép toán == kiểm tra xem 2 biểu thức có giá trị bằng
nhau hay không
$c = (1==2); //vì 1 khác 2 nên $c mang giá trị FALSE
$d = ("abc" == "def"); //$d mang giá trị TRUE
• chuỗi rỗng "", hoặc chuỗi "0",
• mảng rỗng (không chứa phần tử nào) Array(),
• đối tượng không chứa phần tử nào (chỉ đúng với PHP4),
Ví dụ:
<?php
$a = 1234;
$b = -123;
$c = 0123; //giá trị 123 ở hệ cơ số 8, tương đương với 83 ở hệ cơ số 10
$d = 0x1F; //giá trị 1F ở hệ cơ số 16, tương đương với 31 ở hệ cơ số 10?
>
Trang 11Kiểu Float (Double):
Kiểu float (hoặc double) là kiểu số thực, có thể mang bất cứ giá trị số thựcnào Trên hầu hết các hệ thống, kiểu số thực có kích thước 64 bit
Kiểu String (Kiểu chuỗi) :
Kiểu string lưu giữ 1 chuỗi ký tự, mỗi ký tự có kích thước 1 byte Nộidung string được đặt giữa 2 dấu nháy, nháy đơn (') hoặc nháy kép (")
Ví dụ:
<?php $a = 'Đây là 1 chuỗi được đặt giữa dấu nháy đơn';
$b = "Đây là 1 chuỗi được đặt giữa dấu nháy kép";
$c = 'Đây là 1 chuỗi được đặt giữa dấu nháy đơn với "vài dấu nháy kép
Trang 12$c = "Dùng ký tự \\ ở giữa câu \\ thì sao?"; //$c mang giá trị: Dùng ký tự \
ở giữa câu \ thì sao?
?>
Khi sử dụng dấu nháy đôi để bọc chuỗi, ngoài \', \" và \\, PHP có thể nhận dạng thêm một số chuỗi ký tự escape đặt biệc nữa:
• \n: ký tự xuống hàng LF (ký tự có mã 10 trong bảng mã ASCII)
• \r: ký tự về đầu dòng CR (ký tự có mã 13 trong bảng mã ASCII)
• \t: ký tự tab (ký tự có mã 9 trong bảng mã ASCII)
• \$: ký tự $
• \ooo: (với o là 1 chữ số từ 0 đến 7) biểu thị 1 ký tự có mã ASCII ooo trong hệ cơ số 8
Ví dụ \101 sẽ là ký tự 'A' (101 trong hệ cơ số 8 tương đương 65 trong hệ
cơ số 10, ký tự ASCII có mã 65 chính là ký tự 'A')
• \xhh: (với h là 1 chữ số từ 0 đến 9 hoặc 1 chữ cái từ A tời F) biểu thị 1
ký tự có mã ASCII hh trong hệ cơ số 16
Ví dụ \0x41 sẽ là ký tự 'A' (41 trong hệ cơ số 16 chính là 65 trong hệ cơ số10)
Ngoài ra, nếu bạn để 1 biến vào giữa 1 chuỗi được bọc với dấu nháy kép, giá trị của biến sẽ được thay thế vào trong chuỗi
Trang 13$b = Array( "a" => "Nguyễn", "b" => "Bá", "c" => "Thành");
echo $b["a"]; //in ra: Nguyễn
$a: biến có tên là a
$abc123: biến có tên là abc123
Tuy nhiên vẫn còn nhiều điều thú vị về biến đang chờ ta khám phá
Biến trong PHP phân biệt chữ hoa và chữ thường Tức $Abc và $abc là 2biến hoàn toàn khác nhau
Tên biến chỉ được bao gồm các ký tự chữ cái (a z hoặc A Z), chữ số(0 9) và ký tự gạch dưới (_); nhưng tên biến không được bắt đầu bằng ký tựgạch dưới hoặc chữ số Các tên biến sau là không hợp lệ!
$_abc Không hợp lệ! bắt đầu bằng ký tự gạch dưới
$1abc Không hợp lệ! bắt đầu bằng chữ số
$nguyễn Không hợp lệ! tên biến có ký tự đặt biệt (ễ)
1.2.5 Biểu thức
- Biểu thức điều kiện:
Là biểu thức dùng kiểm tra 1 sự kiện Nếu chúng thỏa điều kiện đó thì sẽthực thi một hành động Ngược lại sẽ là một hành động khác
Cú pháp:
If(Điều kiện)
{
hành động
Trang 15- Biểu thức switch case:
Là biểu thức sử dụng để giảm thiểu quá trình xử lý dữ liệu nếu có quánhiều phép toán if else
Trang 17- Toán tử logic:
Toán tử logic là các tổ hợp các giá trị boolean
Ví dụ: toán tử or trở về true nếu toán tử trái hoặc toán tử phải là true.True || false à true
Ta có bảng các toán tử như sau:
- Toán tử kết hợp:
Khi tạo mã PHP, chúng ta sẽ thường nhận thấy cần phải tăng hoặc giảmlượng biến một số nguyên nào đó Bạn sẽ thường thực hiện điều này khi chúng tađếm 1 giá trị nào đó trong vòng lặp
Trang 181.2.7 Các câu lệnh điều khiển
Câu lệnh if: Cú pháp đơn giản nhất của câu lệnh if có dạng như sau:
if ( biểu thức )
câu lệnh;
Câu lệnh if trên được diễn giải như sau: nếu biểu thức trả về giá trị TRUE(hoặc tương đương với TRUE sau khi chuyển đổi) thì câu lệnh sẽ được thực thi;ngược lại (khi biểu thức trả về giá trị FALSE) thì bỏ qua không thực thi câu lệnhnữa
Cú pháp nâng cao của câu lệnh if có dạng như sau:
Trang 19Nếu biểu thức 1 trả về giá trị FALSE thì câu lệnh 3 sẽ được thực hiện,ngược lại xét tiếp biểu thức 2: nếu biểu thức 2 trả về giá trị TRUE thì thực hiện câulệnh 1, ngược lại nếu biểu thức 2 trả về giá trị FALSE thì thực hiện câu lệnh 2.
Ngoài ra PHP còn cung cấp từ khoá elseif, chính là ghép giữa từ khoá else và if.Câu lệnh while: Câu lệnh while dùng để tạo 1 vòng lặp, cú pháp của câulệnh này như sau:
while ( biểu thức )
câu lệnh;
Được diễn giải như sau: trong khi biểu thức còn trả về giá trị TRUE thìtiếp tục thực hiện câu lệnh, sau khi thực hiện câu lệnh thì kiểm tra lại biểu thức,nếu vẫn còn trả về giá trị TRUE thì lại tiếp tục thực hiện câu lệnh cứ tiếp tụcnhư vậy cho tới khi nào biểu thức trả về giá trị FALSE thì ngưng
Một ví dụ in ra các số từ 1 tới 10 với câu lệnh while:
Trang 20Được diễn giải như sau:
- Đầu tiên biểu thức 1 được thực hiện
- Tiếp theo biểu thức 2 được kiểm tra
- Nếu trả về TRUE thì câu lệnh được thực hiện và sau đó thực hiện biểu thức 3
- Nếu trả về FALSE thì kết thúc câu lệnh for
- Kiểm tra lại biểu thức 2 và lặp lại quá trình như trên
- Một ví dụ in ra các số từ 1 tới 10 với câu lệnh for:
Trang 21Câu lệnh break: Câu lệnh break sẽ dừng việc thực thi của các vòng lặp for,foreach, while, do-while và switch.
Câu lệnh continue: Câu lệnh continue áp dụng lên các vòng lặp, lệnhcontinue sẽ bỏ qua lần lặp hiện thời và tiếp tục thực hiện các lần lặp tiếp theo
1.2.8 Hàm
Trong lập trình, có một số đoạn mã được dùng nhiều lần ở nhiều nơi khácnhau trong chương trình Sẽ rất phiền và khó sửa lỗi nếu như ta phải viết lặp đilặp lại 1 đoạn mã đó ở nhiều nơi PHP cung cấp một giải pháp đó là hàm dongười dùng định nghĩa Ta có thể đưa đoạn mã đó vào trong 1 hàm, và ở chỗ nàocần dùng đoạn mã đó ta chỉ cần gọi hàm, khi cần sửa đổi, ta chỉ cần sửa đổi 1 chỗduy nhất là nội dung của hàm chứ không cần phải sửa ở nhiều nơi trong chươngtrình
Cú pháp để tạo 1 hàm do người dùng định nghĩa như sau:
function tênHàm($tham_số1, $tham_số2, , $tham _sốn) {
Trang 22Lưu ý: Tên hàm cũng như tên biến chỉ bao gồm các ký tự chữ cái (a z,A Z), chữ số (0 9) và ký tự gạch dưới (_), ngoài ra tên hàm không được bắt đầubằng chữ số, nhưng được phép bắt đầu bằng ký tự gạch dưới (tên hàm khác vớitên biến chỗ này) Tên hàm trong PHP phân biệt chữ hoa và chữ thường, tức làtesting và Testing là 2 tên hàm khác nhau.
Tham số của hàm: Hàm có thể nhận vào các tham số, ví dụ:
Khi tham số tương ứng của hàm không được truyền, tham số đó sẽ nhận
giá trị mặc định Đoạn chương trình ví dụ ở trên khi chạy sẽ in ra dòng Tham số
Trang 23Đoạn chương trình trên khi chạy sẽ in ra số 4 Câu lệnh return biểu_thức; sẽ kết thúc hàm và trả về giá trị của biểu_thức cho nơi gọi.
1.3 TÌM HIỂU VỀ MYSQL
1.3.1 Giới thiệu về MySQL
MySQL được phổ biến và hỗ trợ bởi công ty MySQL AB của Thụy Điển.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 giaodiệ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 MySQL là một hệ thống quản lý cơ sở dữ liệu
quan hệ (RDBMS) hay còn được gọi là Relatinal Database Management
Systemo RDBMS là một trong những mô hình cơ sở dữ liệu quan hệ thông dụng
hiện nay
Cũng giống như các cơ sở dữ liệu, 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
Một CSDL thường bao gồm một hoặc nhiều bảng (table) Mỗi bảng đượcxác định thông qua một tên (ví dụ Customers hoặc Orders) Bảng chứa các mẩutin - dòng (record - row), là dữ liệu của bảng
Dưới đây là một ví dụ về một bảng có tên là Persons (người):
Bảng ở trên bao gồm 3 mẩu tin (dòng), mỗi mẩu tin tương ứng với mộtngười, và bốn cột (LastName, FirstName, Address và City)
Với SQL ta có thể truy vấn CSDL và nhận lấy kết quả trả về thông quacác câu truy vấn
Một câu truy vấn như sau:
SELECT LastName FROM Persons
Sẽ trả về kết quả như sau:
Trang 24Lưu ý: Một số hệ thống CSDL đòi hỏi câu lệnh SQL phải kết thúc bằng một
dấu chấm phảy (;) Chúng ta sẽ không dùng dấu chấm phảy trong bài viết này.
SQL là ngôn ngữ thao tác dữ liệu (DML - Data Manipulation Language),SQL là cú pháp để thực thi các câu truy vấn SQL cũng bao gồm cú pháp để cậpnhật - sửa đổi, chèn thêm và xoá các mẩu tin
Sau đây là danh sách các lệnh và truy vấn dạng DML của SQL:
SELECT - lấy dữ liệu từ một bảng CSDL
UPDATE - cập nhật/sửa đổi dữ liệu trong bảng
DELETE - xoá dữ liệu trong bảng
INSERT INTO - thêm dữ liệu mới vào bảng
SQL là ngôn ngữ định nghĩa dữ liệu (DDL - Data Definition Language),Phần DDL của SQL cho phép tạo ra hoặc xoá các bảng Chúng ta cũng có thểđịnh nghĩa các khoá (key), chỉ mục (index), chỉ định các liên kết giữa các bảng
và thiết lập các quan hệ ràng buộc giữa các bảng trong CSDL
Các lệnh DDL quan trọng nhất của SQL là:
CREATE TABLE - tạo ra một bảng mới
ALTER TABLE - thay đổi cấu trúc của bảng
DROP TABLE - xoá một bảng
CREATE INDEX - tạo chỉ mục (khoá để tìm kiếm - search key)
DROP INDEX - xoá chỉ mục đã được tạo
1.3.2 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 1 bảng, gọi là bảng kết quả - result table(còn được gọi là tập kết quả - result set)
Cú pháp của câu lệnh SELECT như sau:
SELECT tên_các_cột
FROM tên_bảng
Truy xuất nhiều cột: Để truy xuất các cột mang tên LastName và
FirstName, ta dùng một câu lệnh SELECT như sau:
SELECT LastName, FirstName FROM Persons
Bảng Persons:
Trang 25Dấu chẩm phảy là một cách chuẩn để phân cách các câu lệnh SQL nếunhư hệ thống CSDL cho phép nhiều câu lệnh SQL được thực thi thông qua mộtlời gọi duy nhất.
Các câu lệnh SQL trong bài viết này đều là các câu lệnh đơn (mỗi câulệnh là một và chỉ một lệnh SQL) MS Access và MS SQL Server không đỏi hỏiphải có dấu chấm phảy ngay sau mỗi câu lệnh SQL, nhưng một số chương trìnhCSDL khác có thể bắt buộc bạn phải thêm dấu chấm phảy sau mỗi câu lệnh SQL(cho dù đó là câu lệnh đơn) Xin nhắc lại, trong bài viết này chúng ta sẽ khôngdùng dấu chấm phảy ở cuối câu lệnh SQL
1.3.3 Mệnh đề WHERE
Để truy xuất dữ liệu trong bảng theo các điều kiện nào đó, một mệnh đề
WHERE có thể được thêm vào câu lệnh SELECT.
Cú pháp mệnh đề WHERE trong câu lệnh SELECT như sau:
Trang 26Trong mệnh đề WHERE, các phép toán được sử dụng là
BETWEEN Nằm giữa một khoảng
LIKE So sánh mẫu chuỗi
Lưu ý: Trong một số phiên bản của SQL, phép toán <> có thể được viết dưới dạng !=
Sử dụng mệnh đề WHERE: Để lấy danh sách những người sống ở thànhphố Sandnes, ta sử dụng mệnh đề WHERE trong câu lệnh SELECT như sau:
SELECT * FROM Persons
WHERE City = 'Sandnes'
Bảng Persons:
Kết quả trả về:
Sử dụng dấu nháy: Lưu ý rằng ở ví dụ trên ta đã sử dụng hai dấu nháy đơn(') bao quanh giá trị điều kiện 'Sandnes'
SQL sử dụng dấu nháy đơn bao quanh các giá trị ở dạng chuỗi văn bản
(text) Nhiều hệ CSDL còn cho phép sử dụng dấu nháy kép (") Các giá trị ở
dạng số không dùng dấu nháy để bao quanh
Với dữ liệu dạng chuỗi văn bản:
Trang 27Với dữ liệu dạng số:
Câu lệnh đúng:
SELECT * FROM Persons WHERE Year > 1965
Câu lệnh sai:
SELECT * FROM Persons WHERE Year > '1965'
Phép toán điều kiện LIKE: Phép toán LIKE được dùng để tìm kiếm một
chuỗi mẫu văn bản trên một cột
Cú pháp của phép toán LIKE như sau:
SELECT tên_cột FROM tên_bảng
WHERE tên_cột LIKE mẫu
Một ký hiệu % có thể được sử dụng để định nghĩa các ký tự đại diện % có
thể được đặt trước và/hoặc sau mẫu
Sử dụng LIKE: Câu lệnh SQL sau sẽ trả về danh sách những người có tênbắt đầu bằng chữ O:
SELECT * FROM Persons
WHERE FirstName LIKE 'O%'
Câu lệnh SQL sau sẽ trả về danh sách những người có tên kết thúc bằng chữ a:
SELECT * FROM Persons
WHERE FirstName LIKE '%a'
Câu lệnh SQL sau sẽ trả về danh sách những người có tên chứa chuỗi la:
SELECT * FROM Persons
WHERE FirstName LIKE '%la%'
1.3.4 Toán tử logic AND và OR
Hai toán tử AND và OR nối hai hoặc nhiều điều kiện trong mệnh đề
WHERE lại với nhau
Toán tử AND sẽ hiển thị 1 dòng nếu TẤT CẢ các điều kiện đều thoả mãn Toán tử OR hiển thị một dòng nếu BẤT KỲ điều kiện nào được thoả.
Bảng dữ liệu dùng trong ví dụ
Trang 28Ví dụ 1:Sử dụng AND để tìm những người có tên là Tove và họ là
Svendson:
SELECT * FROM Persons
WHERE FirstName = 'Tove'
AND LastName = 'Svendson'
Kết quả trả về:
Ví dụ 2: Sử dụng OR để tìm những người có tên là Tove hoặc họ là
Svendson:
SELECT * FROM Persons
WHERE firstname = 'Tove'
OR lastname = 'Svendson'
Kết quả trả về:
Ví dụ 3: Bạn cũng có thể sử dụng kết hợp AND và OR cùng với dấu
ngoặc đơn để tạo nên các câu truy vấn phức tạp:
SELECT * FROM Persons WHERE
(FirstName = 'Tove' OR FirstName = 'Stephen')
AND LastName = 'Svendson'
Trang 29Ví dụ 1: Tìm tất cả những người có họ (sắp xếp theo ABC) nằm giữaHansen (tính luôn Hansen) và Pettersen (không tính Pettersen):
SELECT * FROM Persons WHERE LastName
BETWEEN 'Hansen' AND 'Pettersen'
Kết quả trả về:
Lưu ý quan trọng: Toán tử BETWEEN END sẽ trả về những kết quảkhác nhau trên các hệ CSDL khác nhau Với một số hệ CSDL, toán tửBETWEEN END sẽ trả về các dòng mà có giá trị thực sự "nằm giữa" haikhoảng giá trị (tức là bỏ qua không tính đến các giá trị trùng với giá trị của haiđầu mút) Một số hệ CSDL thì sẽ tính luôn các giá trị trùng với hai đầu mút.Trong khi đó một số hệ CSDL khác lại chỉ tính các giá trị trùng với đầu mút thứnhất mà không tính đầu mút thứ hai (như ở ví dụ phía trên) Do vậy, bạn phảikiểm tra lại hệ CSDL mà bạn đang dùng khi sử dụng toán tử BETWEEN AND
Ví dụ 2: Để tìm những người có họ (sắp xếp theo ABC) nằm ngoàikhoảng hai giá trị ở ví dụ 1, ta dùng thêm toán tử NOT:
SELECT * FROM Persons WHERE LastName
NOT BETWEEN 'Hansen' AND 'Pettersen'
Kết quả trả về:
1.3.6 Từ khoá DISTINCT
Từ khoá DISTINCT được dùng để lọc ra các giá trị khác nhau
Câu lệnh SELECT sẽ trả về thông tin về các cột trong bảng Nhưng nếu
chúng ta không muốn lấy về các giá trị trùng nhau thì sau?
Với SQL, ta chỉ cần thêm từ khoá DISTINCT vào câu lệnh SELECT theo
Trang 30SELECT DISTINCT tên_cột FROM tên_bảng
Trang 311.4 CÔNG CỤ THIẾT KẾ CHƯƠNG TRÌNH
1.4.1 Giới thiệu Appserv
AppServ là dự án tích hợp, cài đặt nhanh chóng, đơn giản các mô phỏngmáy chủ web như Apache, PHP, MySQL trên nền hệ điều hành Windows – rấtthuận tiện cho việc nghiên cứu, phát triển và kiểm tra các ứng dụng web lập trìnhbằng PHP
Ưu điểm: Gọn nhẹ, tương thích cao & đầyđủ các chức năng để chạy PHP
1.4.2 Giới thiệu về vBullentin
vBulletin Board - viết tắt là vB -là một giải pháp dùng để xây dựng cộngđồng trên internet (forum) Ưu điểm của nó là giao diện đẹp, tính bảo mật cao,quản lí dễ dàng, nhiều chức năng vB được viết bằng PHP và sử dụng cơ sở dữliệu chủ yếu là MySQL
Là một mã nguồn được cung cấp bởi hãng: Jelsoft Enterprises Limited,Website: http://vBulletin.com Hiện nay trên Internet có khá nhiều phiên bảnđược hack NULL dành cho những ai không có khả năng mua bản quyền, nhất là
HS, SV Việt Nam Về việc cài đặt một diễn đàn mới chúng ta nên cài đặt một bộ
mã nguồn mới, không nên dùng lại mã nguồn người khác Share với tiêu đề nhưShare Vbb 3.64 Full Mod + Skin , với những phiên bản vbb share kiểu này rấtrắc rối & phiền phức cho những ai mới sử dụng vB, với lại vB là một phiên bảnriêng biệt với MOD và Skin, nên tự hack Mod sẽ hay hơn tránh những lỗi &những dư thừa, vì chả biết người ta đã hack Mod gì, tác dụng Mod đấy? Liệu cóchạy tốt không ? v.v…