MỤC LỤC MỤC LỤC...................................................................................................................1 HÌNH ẢNH.................................................................................................................. 2 TĨM TẮT...................................................................................................................3 ABSTRACT................................................................................................................3 KÍ HIỆU VÀ VIẾT TẮT............................................................................................4 CHƯƠNG 1: TỔNG QUAN......................................................................................5 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT..........................................................................7 CHƯƠNG 3: NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU....................................29 TỔNG KẾT...............................................................................................................57 PHỤ LỤC..................................................................................................................58 TÀI LIỆU THAM KHẢO........................................................................................68
SVTH: Nguyễn Tấn Phát
Trang 1
Báo cáo khóa luận tốt nghiệp đại học 2011
HÌNH ẢNH Hình 2.1. Cấu trúc một phần tử XML.....................................................................19 Hình 3.1. Mơ hình dữ liệu quan niệm (CDM).........................................................31 Hình 3.2. DFD mức 0................................................................................................32 Hình 3.3. DFD mức 1................................................................................................32 Hình 3.4. DFD tiến trình “xử lý mượn trả sách”....................................................33 Hình 3.5. Sơ đồ cơ sở dữ liệu....................................................................................34 Hình 3.6. Trang đăng nhập admin..........................................................................37 Hình 3.7. Menu điều khiển.......................................................................................38
Hình 3.8. Trang quản lý thơng tin sách...................................................................41 Hình 3.9. Ảnh bìa mặc định.....................................................................................42 Hình 3.10. Form tạo tài khoản.................................................................................42 Hình 3.11. Yêu cầu mượn sách................................................................................43 Hình 3.12. Xác nhận trả sách...................................................................................44 Hình 3.13. Danh mục phiếu cũ.................................................................................45 Hình 3.14. Giao diện trang chủ...............................................................................47 Hình 3.15. Module thơng tin đăng nhập..................................................................50 Hình 3.16. Chức năng đặt mượn được mở..............................................................50 Hình 3.17. Chức năng tra cứu..................................................................................51 Hình 3.18. Chức năng kiểm tra sách đã đặt............................................................52 Hình 3.19. Module sách mượn nhiều nhất..............................................................54
SVTH: Nguyễn Tấn Phát
Trang 2
Báo cáo khóa luận tốt nghiệp đại học 2011
TĨM TẮT Thư viện trong một trường Đại Học là nơi các sinh viên dành nhiều thời gian để thực hiện việc nghiên cứu, học tập, cũng như tìm thấy những quyển sách hay để trau dồi kiến thức của mình. Do đó việc phát triển và quản lý tốt thư viện là hết sức cần thiết cho việc tự học của sinh viên. Từ lâu, việc ứng dụng công nghệ thông tin trong quản lý đã trở thành xu hướng bởi nó khơng chỉ mang lại hiệu quả vượt trội mà còn tiết kiệm nhân lực, tiền bạc và thời gian hơn hẳn. Nhưng đối với một thư viện điện tử, nếu chỉ dừng lại ở quản lý sách trong thư viện thì vẫn cịn chưa đủ. Trong thời đại internet bùng nổ như hiện nay, việc tích hợp tính năng tra cứu và đặt mượn sách trực tuyến hứa hẹn khả năng phục
vụ sinh viên mọi lúc, mọi nơi, và cũng tối ưu hóa vai trị của một thư viện điện tử. Đề tài : “Xây dựng website quản lý thư viện cho một khoa ở một trường Đại Học hoặc Cao Đẳng” được đề ra nhằm mục đích trên. Dựa trên ngôn ngữ mã nguồn mở PHP cùng với hệ quản trị cơ sở dữ liệu MySQL, sinh viên thực hiện đề tài đã hoàn thành website trên, với thư viện Khoa Kỹ Thuật Cơng Nghệ trường Đại Học Tây Đơ là hình mẫu cho dự án.
ABSTRACT A library in an university is the place where students spend most of their time for researching, as well as finding good books to enrich their knowledge. For that reason, the development and management of a library is very important to students’ self-studying. For a long time, applying information technology into management has become quite a tendency because it brings not only outstanding effeciency but also saves a great deal of manpower, money and time. But, to an electronic library, it wouldn’t be called a success if we stop at management only. These days, when internet usage has become a blast, the integration of books searching and booking feature promises the ability of serving students everytime, everywhere, as well as optimizes the role of an electronic library. The project : “Develop a library management website for a department in an university or a college” is then proposed for that purpose. Basing on the open-source language PHP and the database management system MySQL, the developer has completed the mentioned website, with the library of Tay Do University’s Technology Department as a sample for this project. SVTH: Nguyễn Tấn Phát
Trang 3
Báo cáo khóa luận tốt nghiệp đại học 2011
KÍ HIỆU VÀ VIẾT TẮT Kí hiệu CSDL CSS DBMS DOM DTD HTML OOP PHP SGML SQL WYSIWYG XHTML XML
Ý nghĩa Cơ Sở Dữ Liệu Cascading Style Sheet Database Management System Document Object Model Document Type Definition Hyper Text Markup Language Object-Oriented Programming PHP Hypertext Preprocessor Standard Generalized Markup Language Structure Query Language What You See Is What You Get eXtensible Hyper Text Markup Language
eXtensible Markup Language
SVTH: Nguyễn Tấn Phát
Trang 4
Báo cáo khóa luận tốt nghiệp đại học 2011
CHƯƠNG 1: TỔNG QUAN
1.1. ĐẶT VẤN ĐỀ : Thư viện là nơi lưu trữ một khối lượng kiến thức đồ sộ và hết sức quý giá đối với việc học tập, nghiên cứu của sinh viên và giảng viên. Nhưng hiện nay, việc quản lý thư viện theo cách truyền thống ít nhiều đã gây khó khăn cho độc giả lẫn người quản lý. Về phía độc giả, họ không thể nắm được danh mục sách tại thư viện đó, cũng như khơng có gì đảm bảo cho việc họ có thể mượn được quyển sách ưng ý khi đến thư viện. Cịn về phía người quản lý thư viện, công việc quản lý mượn sách một cách thủ công chiếm của họ khá nhiều thời gian, sức lực và vật chất. Chính những lý do trên đã khiến cho việc tin học hóa các cơng tác văn phịng, thủ tục hành chính trở thành một xu thế tất yếu. Những thiết bị lưu trữ, hệ thống thông tin đang dần thay thế những tủ hồ sơ khổng lồ. Trước những lợi ích mà công nghệ thông tin mang lại, việc thay đổi cách thức quản lý thư viện đã trở thành một nhu cầu thực tiễn và hoàn toàn nằm trong tầm tay.
1.2. LỊCH SỬ GIẢI QUYẾT ĐỀ TÀI : Việc xây dựng hệ thống thông tin và ứng dụng phục vụ quản lý thư viện đã được nhiều sinh viên nghiên cứu, thực hiện trước đây. Những dự án đó gần như đã hồn thiện các nhu cầu về quản lý sách thư viện, chỉ cịn tồn tại duy nhất một vấn đề. Đó là tính cục bộ, vốn là đặc điểm của các phần mềm. Chúng khó có thể phục vụ rộng
rãi cho nhiều loại đối tượng. Một số dự án đã được nâng cao hơn, với hướng phát triển theo mơ hình server - client, nhằm bổ sung khả năng phục vụ độc giả của thư viện thơng qua mạng máy tính. Các phần mềm dạng này gồm ứng dụng phía người quản lý (server) để quản lý thông tin sách và giải quyết mượn sách, cùng với ứng dụng phía người dùng (client) cho phép độc giả tham khảo và đặt mượn sách. Mặc dù vậy, các bộ ứng dụng trên vẫn chưa tạo nên sự tiện lợi cho người sử dụng, do các khách hàng phải trải qua q trình cài đặt, cũng như có các địi hỏi về cấu hình máy tính. Những lí do trên thúc đẩy một cách tiếp cận mới đối với đề tài quản lý thư viện, đó là xây dựng ứng dụng trên nền web. Dự án này cũng bao gồm một website Admin Control Panel thực hiện các chức năng của người quản lý, và một website phục vụ độc giả của thư viện. Lợi thế khi phát triển đề tài trên nền web là người sử SVTH: Nguyễn Tấn Phát
Trang 5
Báo cáo khóa luận tốt nghiệp đại học 2011 dụng có thể truy cập mọi lúc mọi nơi, chỉ cần ít nhất một trình duyệt web (ví dụ : trình duyệt Internet Explorer đi kèm với hệ điều hành Microsoft Windows) và một đường truyền internet. Hơn thế nữa, với khả năng sử dụng đa dạng các nội dung media (ví dụ âm thanh, phim ảnh v.v…) để xây dựng giao diện, một website đảm bảo sự hấp dẫn đối với người sử dụng hơn hẳn.
1.3. PHẠM VI ĐỀ TÀI : Phạm vi đề tài sẽ bao gồm các nội dung sau đây : - Xây dựng chức năng quản lý, cập nhật thông tin sách trong thư viện. - Xây dựng chức năng quản lý, cập nhật tài khoản và thông tin độc giả. - Xây dựng chức năng quản lý việc mượn trả sách, tự động kiểm tra việc đặt mượn sách và phiếu mượn sách.
- Xây dựng chức năng đăng mới và quản lý các thông báo của thư viện. - Xây dựng hộp tin nhắn để tiếp nhận các liên hệ của độc giả. - Xây dựng chức năng tra cứu thông tin sách, xem các thông báo, giới thiệu dành cho độc giả. - Xây dựng chức năng đặt mượn sách và hủy đặt mượn sách. - Xây dựng chức năng cho phép độc giả xem và thay đổi thông tin cá nhân, xem các sách đang mượn và các phiếu mượn sách. - Xây dựng chức năng liên hệ người quản trị.
1.4. HƯỚNG GIẢI QUYẾT VẤN ĐỀ : Xuất phát từ các yêu cầu trên, đề tài sẽ được giải quyết theo hướng sau: - Tìm hiểu cách tổ chức thơng tin sách của thư viện. - Tìm hiểu cách tổ chức các nhóm độc giả và quy định về mượn trả sách. - Phân tính quy trình đặt mượn, lập phiếu mượn và trả sách. - Dựa trên kết quả phân tích, thiết kế hệ thống thông tin phù hợp với nhu cầu thự tiễn. - Lựa chọn các ngôn ngữ, công nghệ để xây dựng website: ngơn ngữ lập trình : HTML, PHP; CSDL : MySQL; cơng nghệ hỗ trợ : CSS, XML.
SVTH: Nguyễn Tấn Phát
Trang 6
Báo cáo khóa luận tốt nghiệp đại học 2011
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1. TỔNG QUAN VỀ HTML : 2.1.1. Giới thiệu:
HTML: HyperText Markup Language. Đây là một ngôn ngữ đơn giản được sử dụng trong các tài liệu siêu văn bản. Nó cũng chỉ là các tài liệu văn bản bình thường nhưng có chứa các thành phần đặc biệt gọi là các thẻ (hoặc các cặp thẻ) đánh dấu. Dựa theo các cặp thẻ này mà trình duyệt có thể biết được nó phải thể hiện nội dung gì. Bản chất của HTML khơng phải là một ngơn ngữ lập trình nên cũng khơng chứa những thuật tốn lằng nhằng. Nó chỉ là một "ngôn ngữ" để đánh dấu văn bản thôi. HTML giờ đây đã trở thành một chuẩn Internet do tổ chức World Wide Web Consortium (W3C) duy trì. Phiên bản mới nhất của nó hiện là HTML 4.01. Tuy nhiên, HTML hiện khơng cịn được phát triển tiếp. Người ta đã thay thế nó bằng XHTML.
2.1.2. Cấu trúc của một trang HTML: Cấu trúc của một file HTML có dạng: <HTML> <HEAD> <TITLE></TITLE> </HEAD> <BODY> phần thân tài liệu </BODY> </HTML> Cặp thẻ <HTML></HTML> đánh dấu vị trí bắt đầu và kết thúc của một đoạn mã HTML. Các khai báo về định dạng, tiêu đề, đính kèm … sẽ được đặt trong cặp thẻ <HEAD></HEAD>.Tồn bộ nội dung hiển thị sẽ được đặt trong cặp thẻ <BODY></BODY>.
SVTH: Nguyễn Tấn Phát
Trang 7
Báo cáo khóa luận tốt nghiệp đại học 2011 2.1.3. Các thẻ trong HTML: Cấu trúc của 1 thẻ trong HTML bao gồm: dấu "<" ( nếu là thẻ đóng thì sẽ bắt đầu bằng ""), tên thẻ, các tham số khác nếu có (nếu là thẻ đóng thì khơng cần tham số), dấu ">". Ví dụ : cặp thẻ <font>…</font>. Có rất nhiều các cặp thẻ , hay gọi chung là phần tử đánh dấu, được sử dụng trong HTML, nhưng có thể chia làm bốn loại phần tử đánh dấu sau: - Đánh dấu Có cấu trúc miêu tả mục đích của phần văn bản (ví dụ:
Golf
sẽ điều khiển phần mềm đọc hiển thị "Golf" là đề mục cấp một). - Đánh dấu trình bày miêu tả phần hiện hình trực quan của phần văn bản bất kể chức năng của nó là gì (ví dụ, <b>bold</b> sẽ hiển thị đoạn văn bản bold) (Chú ý là cách dùng đánh dấu trình bày này bây giờ khơng cịn được khun dùng mà nó được thay thế bằng cách dùng CSS), - Đánh dấu liên kết ngoài chứa phần liên kết từ trang này đến trang kia (ví dụ,
- method: Thuộc tính này có 2 giá trị POST hoặc GET, để xác định dữ liệu gửi lên theo kiểu POST hay GET. Kiểu GET chính là kiểu mà khi nhập dữ liệu lên máy chủ, các dữ liệu này sẽ được hiển thị trên ô Address dưới dạng các căp tên=giá_trị. Nhược điểm của kiểu này là toàn bộ URL và chuỗi tên=giá_trị kia sẽ bị giới hạn dưới 255 ký tự (do đặc điểm của trình duyệt). Vì vậy để có thể gửi nhiều dữ liệu hơn, người ta đã sinh ra kiểu SVTH: Nguyễn Tấn Phát
Trang 8
Báo cáo khóa luận tốt nghiệp đại học 2011 POST. Với kiểu này, dữ liệu sẽ không bị giới hạn chiều dài 255 ký tự của chuỗi địa chỉ do không bị gộp vào chuỗi địa chỉ mà được đóng thành dữ liệu gói và gửi đến server. Kiểu POST cũng thường dùng để truyền các dữ liệu nhạy cảm mà người sử dụng khơng muốn hiển thị trên ơ address (password chẳng hạn). Ví dụ: <form method = "post"> Test </form> - action: Thuộc tính này sẽ chỉ định form gửi dữ liệu đến trang nào. Trong trường hợp thuộc tính này khơng được khai báo, form sẽ gửi thẳng dữ liệu và yêu cầu về chính trang hiện hành (sau đó trình duyệt sẽ tải lại nội dung mới). Ví dụ: <form method = "post" action ="test.php"> Test </form> Tuy nhiên, 2 ví dụ trên chưa có ý nghĩa gì, vì chúng ta chưa trang bị các thành phần cơ bản của form như ô văn bản, nút bấm... Các thẻ nhập vào (input): Thẻ input có một số thuộc tính, mỗi thuộc tính sẽ quy định những chức năng riêng:
- name: Chỉ định tên cho thẻ. Tên này sẽ được gửi lên máy chủ cùng giá trị nhập vào cho thẻ. - value: Xác định giá trị đặt trước cho thẻ. - type: Thuộc tính này có một số giá trị sau: submit: Sẽ xác định một nút bấm (submit) mà khi kích chuột vào đó, form sẽ tự động kích hoạt và gửi dữ liệu đi text: Hiển thị một ô văn bản cho phép người sử dụng nhập văn bản password: Hiển thị ô văn bản để nhập password. hidden: Tạo một biến ẩn, ta có thể dùng nó để lưu trữ các dữ liệu "ẩn" khỏi người dùng, tất nhiên nếu họ biết View source lên thì chịu. Ví dụ: đoạn mã sau sinh ra một form có 1 ô văn bản, một ô nhập mật khẩu và 1 nút bấm: <form method="POST">
SVTH: Nguyễn Tấn Phát
Trang 9
Báo cáo khóa luận tốt nghiệp đại học 2011 User Name:<input type="text" name="T1" size="20">
</form> Thẻ tạo hộp chọn xổ xuống: Danh sách sổ xuống là một ô danh sách cho phép bạn kích chọn 1 mục trong danh sách sẵn có. Để tạo một hộp chọn sổ xuống, ta phải sử dụng 2 thẻ: Thẻ Select và thẻ Option
như sau: <Select name =abc> <option value = gia_trí1>nội dung 1</option> <option value = gia_trí2>nội dung 2</option> <option value = gia_trí3>nội dung 3</option> ..... <option value = gia_trín>nội dung n</option> </select> Trong đó: Thẻ Select với thuộc tính name sẽ xác định tên của hộp danh sách sổ xuống. Các thẻ option xác định giá trị của tên biến trong thẻ select nếu được chọn. Giá trị sẽ được gán vào biến nằm trong thuộc tính value của thẻ option. Ví dụ: <form method="POST">
Sex: <Select name ="sex"> <option value =1>Male </option> <option value =0>Female </option> </select> SVTH: Nguyễn Tấn Phát
Trang 10
Báo cáo khóa luận tốt nghiệp đại học 2011
</form> Khi người dùng kích chọn Male, giá trị 1 sẽ được chuyển vào biến sex (được định nghĩa trong thẻ Select>). Các thẻ lựa chọn radio: Các thẻ này sẽ cho phép hiển thị ra một danh sách các nút tròn, mà chúng ta sẽ chỉ được phép kích chọn 1 trong các nút đó. Để hiển thị các nút radio này, các bạn có thể dùng thẻ input với type là radio. Một nhóm các nút radio này sẽ được thiết lập nếu như thuộc tính name của chúng trùng nhau: <input type="radio" value="" name="R1"> Ví dụ dưới đây mơ phỏng dòng chọn kiểu gõ (telex, VNI) trên diễn đàn: <input type=radio name="switcher" value="OFF" >Tắt <input type=radio name="switcher" checked value="TELEX" >Telex <input type=radio name="switcher" value="VNI"> VNI Thẻ nhập khối văn bản: Thẻ input với thuộc tính type = text chỉ cho phép ta hiển thị ra một ơ văn bản nhỏ (hiện được 1 dịng). Để hiện ra một ơ soạn thảo lớn, có thể hiển thị nhiều dòng đồng thời, ta phải dùng thẻ textarea: <textarea name =xxx>Giá trị mặc định của khối văn bản </textarea> Trên đây là một vài thẻ cơ bản dùng để xây dựng các biểu mẫu nhập liệu. Về vấn đề các đoạn mã PHP sẽ nhận các dữ liệu truyền đi như thế nào, xin được phép trình bày sau trong phần Tìm hiểu về PHP. Mục giới thiệu các thẻ HTML cũng xin được kết thúc tại đây. 2.1.4. Soạn thảo và định dạng: HTML có thể được tạo ra và xử lý bởi rất nhiều cơng cụ khác nhau, từ những chương trình soạn thảo văn bản đơn giản như Notepad, Wordpad v.v… cho đến những công cụ soạn thảo trực quan theo dạng WYSIWYG. SVTH: Nguyễn Tấn Phát
Trang 11
Báo cáo khóa luận tốt nghiệp đại học 2011 Tất cả các trang HTML nên bắt đầu với một khai báo định nghĩa kiểu tài liệu (DTD). Ví dụ: " />Ở đây, nó định nghĩa một tài liệu tuân thủ Strict DTD của HTML 4.01, mà thuần túy là cấu trúc, nhường phần định dạng cho CSS. Các chuẩn DTD khác, bao gồm Loose, Transitional, và Frameset, định nghĩa các quy tắc khác cho việc sử dụng ngôn ngữ. Nỗ lực tách phần nội dung ra khỏi phần hình thức trình bày của trang HTML đã đưa đến sự xuất hiện của các chuẩn mới như XHTML. Các chuẩn này nhấn mạnh vào việc sử dụng thẻ đánh dấu vào việc xác định cấu trúc tài liệu như phần đề mục, đoạn văn, khối văn bản trích dẫn và các bảng, chứ khơng khun dùng các thẻ đánh dấu mang tính chất trình bày trực quan, như <font>, <b> (in đậm), và <i> (in nghiêng). Những mã mang tính chất trình bày đó đã được loại bỏ khỏi HTML 4.01 Strict và các đặc tả XHTML nhằm tạo điều kiện cho CSS. CSS cung cấp một giải pháp giúp tách cấu trúc HTML ra khỏi phần trình bày của nội dung của nó.
2.2. SƠ LƯỢC VỀ XHTML: 2.2.1. Khái niệm về XHTML: XHTML (Extensible HyperText Markup Language, "Ngôn ngữ Đánh dấu Siêu văn bản Mở rộng") là một ngơn ngữ đánh dấu có cùng các khả năng như HTML, nhưng có cú pháp chặt chẽ hơn. XHTML 1.0 đã trở thành dạng chuẩn được khuyên dùng bởi World Wide Web Consortium (W3C) vào ngày 26 tháng 2, năm 2000. 2.2.2. So sánh giữa HTML và XHTML: Sự khác biệt trong cú pháp giữa HTML và XHTML có thể được thấy rõ qua một vài so sánh sau: - Trong HTML một số phần tử có thể được lồng vào nhau không đúng cách
như thế này : <b><i>This text is bold and italic</b></i> . Trong XHTML tất cả các phần tử phải được lồng vào nhau đúng cách như thế này: <b><i>This text is bold and italic</i></b> . - Với HTML thì các thẻ như và <BR> là hiểu là giống nhau nhưng một khi bạn đã xác định trang web của bạn là XHTML thì trình duyệt sẽ dịch hai thẻ này là khác nhau. SVTH: Nguyễn Tấn Phát
Trang 12
Báo cáo khóa luận tốt nghiệp đại học 2011 - Việc tối giản thuộc tính là bị nghiêm cấm, chẳng hạn HTML chấp nhận cách viết như sau : <input checked> , trong khi XHTML đòi hỏi chúng phải đúng quy cách : <input checked="checked" />. Có thể thấy XHTML yêu cầu cú pháp chặt chẽ hơn HTML nhiều. Nhưng tại sao XHTML lại trở thành dạng chuẩn được khuyến khích và ưa chuộng. Cũng chính nhờ vào cú pháp chặt chẽ đó, XHTML có thể hỗ trợ rất tốt các đoạn mã và tiện ích đính kèm (applets) cho trang web. XHTML cũng được thiết kế phù hợp hơn với xu hướng module hóa của các trang web hiện nay.
2.3. SƠ LƯỢC VỀ CSS: 2.3.1. Khái niệm về CSS: CSS: Cascading Style Sheet. Đây là những mẫu để quy định cách thức thể hiện các thẻ HTML. CSS có 3 cách sử dụng: - Sử dụng trực tiếp kèm với các thẻ HTML (Inline Style Sheet). - Định nghĩa trong 1 trang web (Internal Style Sheet). - Định nghĩa thành 1 file CSS riêng (External Style Sheet). 2.3.2. Sự ra đời của CSS:
- Ta biết rằng các thẻ HTML chuẩn được thiết kế để định nghĩa nội dung của một văn bản. Đầu tiên các thẻ HTML hỗ trợ cách viết "Đây là tiêu đề", "Đây là đoạn", "Đây là bảng".... bằng cách sử dụng các thẻ <H1>, <P>, <TABLE>... Cách bố trí văn bản này được qui định bởi trình duyệt web và khơng có bất cứ một thẻ nào để định dạng văn bản. - Đến các trình duyệt thế hệ sau đặc biệt là Nescape và Internet Explorer tiếp tục đưa thêm vào các thẻ HTML mới cùng các thuộc tính định dạng riêng của mình (như các thẻ <FONT> và thuộc tính Color...). Do đó ngày càng khó để tạo ra được một website khi mà nội dung của nó bị tách rời khỏi cách bố trí. - Để giải quyết vấn đề này World Wide Web Consortium (W3C) đã tạo ra STYLE để đưa thêm vào trong HTML 4.0 - Style trong phiên bản HTML 4.0 qui định cách thức thể hiện các thẻ HTML tương tự như thẻ <FONT> hay thuộc tính COLOR trong HTML 3.2. Style thường được lưu trong các file nằm ngồi trang web. Chúng giúp bạn có thể thay đổi cách SVTH: Nguyễn Tấn Phát
Trang 13
Báo cáo khóa luận tốt nghiệp đại học 2011 thức định dạng và cách bố trí các trang web chỉ bằng cách thay đổi riêng file CSS. Chỉ khi bạn muốn thay đổi lại toàn bộ màu sắc, cách định dạng của các tiêu đề, nội dung bạn mới hiểu rõ tác dụng thực sự của CSS. - CSS cho phép chúng ta đ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 1 lần thay đổi tại một vị trí. Là một người thiết kế web, bạn có thể định nghĩa 1 file CSS cho các thẻ HTML và áp dụng nó vào nhiều trang web mà bạn muốn. Để thay đổi tổng thể các trang web này bạn chỉ đơn giản là thay đổi file CSS và tất cả các trang đã áp dụng sẽ được thay đổi một cách tự động.
2.3.3. Thứ tự áp dụng các định dạng:
Như trên đã nói, ta có thể sử dụng nhiều cách khác nhau để làm CSS. Điều gì sẽ xảy ra nếu bạn áp dụng nhiều cách định dạng cho 1 thẻ HTML? Theo một cách chung nhất ra có thể nói các style của bạn sẽ được "xếp tầng" (cascade). Việc xếp tầng này tuân theo thứ tự sau: - Inline Style (Style được qui định trong 1 thẻ HTML cụ thể). - Internal Style (Style được qui định trong phần <HEAD> của 1 trang HTML). - External Style (style được qui định trong file CSS ngoài). - Browser Default (thiết lập mặc định của trình duyệt). Như vậy ta thấy các thiết lập trong 1 thẻ HTML có mức ưu tiên cao nhất, Những gì được định nghĩa ở đây sẽ bị bỏ qua tất cả các định nghĩa khác (như trong thẻ <HEAD>, File CSS ngoài, ...).
2.3.4. Cú pháp của CSS: Cú pháp của CSS được tạo nên bởi 3 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). Cú pháp của CSS được thể hiện như sau: Selector { Property1: Value1; Property2: Value2; }
SVTH: Nguyễn Tấn Phát
Trang 14
Báo cáo khóa luận tốt nghiệp đại học 2011 Selector thường là các thẻ HTML mà bạn muốn định nghĩa thêm. Property là
thuộc tính mà bạn muốn thay đổi, mỗi một thuộc tính cần phải có một giá trị. Một thuộc tính và giá trị của nó được phân cách bởi dấu hai chấm. Hai cặp thuộc tính-giá trị được phân cách nhau bởi dấu chấm phảy. Tồn bộ các cặp thuộc tính-giá trị của một thẻ HTML được đặt trong cặp dấu ngoặc nhọn ({}). Ví dụ: body{color: black} /*Phần chữ trong thẻ body sẽ có màu đen*/ hay: p {text-align: center} /*tất cả các thẻ <P> trong trang HTML sẽ được canh giữa.*/ hay định nghĩa nhiều thuộc tính: p { text-align: center; color: red; font-family: arial } Nhóm các thẻ Trong trường hợp bạn muốn định nghĩa nhiều thẻ giống nhau bạn có thể nhóm các thẻ lại. Ví dụ dưới đây sẽ nhóm tất cả các thẻ Header lại và định nghĩa chúng sẽ có màu xanh: h1,h2,h3,h4,h5,h6 { color: green } Tạo các lớp Bằng việc tạo ra các lớp, bạn có thể định nghĩa nhiều kiểu thể hiện khác nhau cho cùng một thẻ HTML và áp dụng mỗi lớp vào một vị trí cần thiết trên trang web. Ví dụ: Các lớp gắn với một thẻ cụ thể. p.trai {text-align: left} p.phai {text-align: right}
p.giua {text-align: center} SVTH: Nguyễn Tấn Phát
Trang 15
Báo cáo khóa luận tốt nghiệp đại học 2011
Tiếp theo, trong trang HTML bạn sử dụng như sau:
Đoạn văn này được canh lề trái.
Đoạn văn này được canh lề phải.
Đoạn văn này được canh lề giữa.
Chú ý: - CSS phân biệt chữ hoa và chữ thường giống như C++ do đó khi viết bạn cần phải cẩn thận trong việc sử dụng chữ hoa, chữ thường. - Trong trang HTML, bạn chỉ được phép khai báo 1 thẻ thuộc duy nhất một lớp. Trái điều này mặc dù trình duyệt khơng báo lỗi nhưng các lớp sẽ khơng hoạt động được. Ví dụ : Các lớp không gắn với một thẻ cụ thể (có thể gắn với hầu như tất cả các thẻ): Rất đơn giản, bạn có thể tạo ra một lớp mà lớp đó có thể gắn vào hầu như bất cứ thẻ nào trên trang web bằng cách bỏ tên thẻ ở đầu đi nhưng nhớ giữ lại dấu chấm (.) Định nghĩa một lớp "giua" có thể gắn với bất cứ thẻ nào .giua{text-align="center"} và trong trang HTML ta sử dụng như sau:
Đoạn văn này được canh lề giữa.
<td class="giua">Câu này được canh lề giữa. Tạo các định danh (ID) Tương tự như các lớp, các định danh cũng cho phép chúng ta chia các thẻ
thành nhiều loại khác nhau. Tuy nhiên trên thực tế thì Định danh khác với lớp!!! Một lớp có thể áp dụng nhiều lần ở nhiều vị trí trên trang web, tuy nhiên 1 định danh chỉ có thể áp dụng được duy nhất cho 1 thẻ và tên của định danh phải là duy nhất trên 1 trang web. Ví dụ: SVTH: Nguyễn Tấn Phát
Trang 16
Báo cáo khóa luận tốt nghiệp đại học 2011 Đoạn mã dưới đây có thể áp dụng cho thẻ <P> có ID là para1 p#para1 { text-align: center; color: red } Khi sử dụng như sau: <P id="para1">Đoạn văn bản
2.3.5. Chèn CSS vào HTML: Khi trình duyệt web đọc trang web của bạn nó sẽ định dạng trang web theo cách CSS đã qui định cho nó. Theo như phần Thứ tự các định dạng, ta có 3 cách chèn CSS vào trang web của mình. - Với External Style ( Sử dụng file CSS được định nghĩa thành 1 file riêng): <head> <link rel="stylesheet" type="text/css" href="mystyle.css" /> </head> - Với Internal Style (Định nghĩa các style sheet ngay trong trang web): <head>
<style type="text/css"> hr {color: sienna} p {margin-left: 20px} body {background-image: url("images/back40.gif")} </style> </head> - Với Inline Style (style được qui định ngay trong mỗi thẻ HTML):
This is a paragraph
SVTH: Nguyễn Tấn Phát
Trang 17
Báo cáo khóa luận tốt nghiệp đại học 2011
2.4. SƠ LƯỢC VỀ XML: 2.4.1. Giới thiệu: XML (Extensible Markup Language) là ngôn ngữ đánh dấu mở rộng được phát triển dựa trên tính đơn giản, dễ dùng của HTML và tính phức tạp nhưng đa chức năng của SGML. XML được thiết kế để cho phép máy tính có thể trao đổi tài liệu với nhau thông qua Web mà không làm mất đi ý nghĩa của dữ liệu. Một tài liệu XML bao gồm một tập các cặp thẻ được lồng vào nhau. Mỗi thẻ có một cặp các thuộc tính và giá trị. Việc ghi các thông tin truy vấn từ CSDL vào tài liệu XML cho phép người lập trình sử dụng nhiều lần các thơng tin đó mà khơng làm lãng phí tài ngun của server, cũng như không lẫn lộn cấu trúc của dữ liệu. 2.4.2. Cấu trúc của một tài liệu XML: Một tài liệu XML có thể được chia thành hai phần chính, mỗi phần có thể có các thành phần theo quy định khác nhau:
- Phần Prolog: Chứa các khai báo cho tài liệu XML. Phần này có thể chứa các định đạng như: các chỉ thị xử lý, định nghĩa kiểu cho tài liệu, chú thích, phiên bản đang sử dụng, cách thức mã hóa dữ liệu, báo cáo các chỉ thị xử lý cho ứng dụng. - Phần thân chứa nội dung dữ liệu, bao gồm một hay nhiều phần tử, mỗi phần tử được chứa trong một cặp thẻ. Phần tử đầu tiên của tài liệu được gọi là phần tử gốc (root element). Một ví dụ về phần tử trong tài liệu XML : <sach masach="4" matheloai="4" matacgia="3" manxb="6"> <tensach>Thiết lập Firewall với ISA Server 2006</tensach> <tentheloai>Mạng máy tính</tentheloai> <tentacgia>Khương Anh</tentacgia> <tennxb>Nhà xuất bản Lao động - Xã hội</tennxb> <tenanh>4.jpg</tenanh> <gioithieu>giới thiệu ISA Server 2006</gioithieu> <soluong>3</soluong> <ngaynhap>2011-04-23</ngaynhap> </sach>
SVTH: Nguyễn Tấn Phát
Trang 18
Báo cáo khóa luận tốt nghiệp đại học 2011
Cấu trúc của phần tử trên thể hiện theo dạng cây:
sa ch n
ga y n ha so p lu o n gi g oi th ie u te na n h te n n x te b nt ac gi a te
nt he lo ai te ns ac h Hình 2.1. Cấu trúc một phần tử XML Các thẻ thuộc tính và giá trị của nó được hiểu như một node con của phần tử sach. Do đó, khi đọc tài liệu XML, ta có 2 cách để lấy giá trị của các thẻ. Đó là gọi tên thẻ để lấy giá trị, và gọi thứ tự node con của phần tử để lấy giá trị.
2.5. TÌM HIỂU VỀ PHP: 2.5.1. Giới thiệu: PHP : viết tắt của PHP Hypertext Preprocessor, một định nghĩa mang tính đệ quy khá khó hiểu, 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ủ. 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. Hơn thế nữa, với ưu thế mã nguồn mở, PHP thích hợp với mục đích học tập, nghiên cứu nhưng cũng đang ngày càng được ưa chuộng trong giới doanh nghiệp vì tính đa mơi trường của nó. PHP có thể được cài đặt trên nhiều web server như Apache, Microsoft IIS, … cũng như nhiều hệ điều hành như Unix, Mac OS, Windows. Ngôn ngữ, các thư viện, tài liệu gốc của PHP được xây dựng bởi cộng đồng 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 SVTH: Nguyễn Tấn Phát
Trang 19
Báo cáo khóa luận tốt nghiệp đại học 2011 lập nên nhằm tạo ra một môi trường chuyên nghiệp để đưa PHP phát triển ở quy mô doanh nghiệp.
2.5.2. Lịch sử phát triển PHP: Vào khoảng năm 1994, Rasmus Lerdorf đưa một số đoạn Perl Script vào trang Web để theo dõi xem ai đang đọc tài liệu của ông ta. Dần dần, người ta bắt đầu thích các đoạn Script này và sau đó đã xuất bản một gói cơng cụ có tên là "Personal Home Pages" (nghĩa đầu tiên của PHP). Ông ta đã viết một cơ chế nhúng và kết hợp với một số cơng cụ khác để phân tích đầu vào từ các mẫu biểu HTML: FI, tức Form Interpreter hay Phiên dịch biểu mẫu, được đặt tên là PHP/FI hay PHP2. Nó được hồn thành vào khoảng giữa năm 1995. Sau đó, người ta bắt đầu sử dụng các công cụ này để xây dựng những thứ rắc rối hơn, và đội ngũ phát triển đã thay đổi từ một người duy nhất thành một nhóm các nhà phát triển nịng cốt trong dự án, và nó đã được tổ chức hố. Đó là sự bắt đầu của PHP3. Đội ngũ các nhà phát triển (Rasmus Lerdorf, Andi Gutmans, Zeev Suraski, Stig Bakken, Shane Caraveo và Jim Winstead) đã cải tiến và mở rộng bộ máy nhúng và bổ sung thêm một số hàm API đơn giản cho phép các lập trình viên khác tự do bổ sung nhiều tính năng vào ngơn ngữ bằng cách viết các module cho nó. Cấu trúc của ngôn ngữ đã được tinh chế, được kết cấu thân thiện hơn đối với những người đến từ các ngôn ngữ hướng đối tượng hay các ngôn ngữ hướng thủ tục. Nếu bạn đã biết một vài ngôn ngữ lập trình khác thì khi đến với PHP, bạn sẽ khơng cảm thấy khó khăn. Hiện nay, phiên bản PHP mới nhất là 5.3.6. Trong đề tài này, sinh viên thực hiện quyết định sử dụng các kỹ thuật lập trình PHP phổ thơng để có thể tương thích với phần lớn các máy chủ trên nền Unix/Linux. Tuy nhiên, điều này không ảnh hưởng đến khả năng giải quyết các yêu cầu mà đề tài đặt ra.
2.5.3. Các thành phần cơ bản của PHP: Đoạn mã sau minh họa cách viết PHP lồng vào các trang HTML dễ dàng như thế nào: <html> <head> <title>Mã mẫu</title> </head> SVTH: Nguyễn Tấn Phát
Trang 20
Báo cáo khóa luận tốt nghiệp đại học 2011 <body> echo "Chào thế giới PHP!"; ?> </body> </html> Thẻ <?php và thẻ ?> sẽ đánh đấu sự bắt đầu và sự kết thúc của phần mã PHP qua đó máy chủ biết để xử lý và dịch mã cho đúng. Đây là một điểm khá tiện lợi của PHP giúp cho việc viết mã PHP trở nên khá trực quan và dễ dàng trong việc xây dựng phần giao diện ứng dụng HTTP. Ngôn ngữ PHP hỗ trợ đầy đủ các kiểu dữ liệu giống các ngơn ngữ lập trình khác như C++ hay Java, nhưng khác biệt ở chỗ khi khai báo ta không cần phải chỉ định kiểu dữ liệu của biến. Một biến có thể được sử dụng để lưu bất kỳ kiểu dữ liệu nào, và khi một biến được đặt giá trị thì kiểu có biến mới được tự động xác định. $a=1 // $a là kiểu integer $a=1.2 // Bây giờ, nó là kiểu double
$a="1" // Và bây giờ nó là kiểu string Các cấu trúc điều khiển như cấu trúc điều kiện if … else…, switch, vòng lặp for, while, v.v… được sử dụng hồn tồn giống với ngơn ngữ C+. Điều này khiến việc làm quen với PHP trở nên cực kỳ dễ dàng cho những người đã quen với lập trình trước đó, và cũng dễ dàng cho những người mới học lập trình do họ khơng cần phải tập cách phân biệt giữa ngơn ngữ này hay ngơn ngữ khác. Ví dụ về cấu trúc if … else…: $x = 5; if ( $x < 4 ) echo “$x lớn hơn 4”; else echo “$x không lớn hơn 4”; Trong ví dụ trên, ta cịn thấy sự xuất hiện của hàm được sử dụng nhiều nhất trong lập trình PHP: echo. Sau khi thực hiện các xử lý ở server, hàm này sẽ xuất ra trình duyệt các kết quả người lập trình mong muốn dưới dạng nội dung HTML. Ngồi ra, ta cũng có thể tự tạo các hàm xử lý để mã nguồn của mình trở nên gọn gàng hơn. SVTH: Nguyễn Tấn Phát
Trang 21
Báo cáo khóa luận tốt nghiệp đại học 2011 function nhandoi(& $var) { $var = $var*2; } Hai hàm thường được sử dụng khác là include và require, với mục đích chép đoạn code đã được định nghĩa trước ở một trang khác vào trang hiện tại. Nhưng chúng còn được tận dụng để tạo liên kết giữa các trang web đơn lẻ và điều hướng website. Cú pháp: include (“đường dẫn/tên file.php”);
require (“đường dẫn/tên file.php”);
2.5.4. PHP và Form: Như đã từng đề cập trong phần Tổng quan về HTML, biểu mẫu (form) HTML sử dụng hai cách truyền dữ liệu, đó là “GET” và “POST”. Cũng có nghĩa là, PHP sẽ dùng tương ứng hai phương thức đó để nhận dữ liệu. Ngồi ra, PHP cịn hỗ trợ con đường thứ ba, đó là COOKIES. Dữ liệu gửi từ trình duyệt lên qua phương thức “GET” là phần dữ liệu được nhập trực tiếp theo sau địa chỉ URL do trình duyệt gửi lên, hoặc các form HTML có method = “GET” tự gán dữ liệu theo sau URL, được phân biệt với tên file script bằng dấu hỏi chấm (?). Ví dụ, ta thường thấy các URL có dạng sau: />Khi đó, trình duyệt sẽ gửi theo địa chỉ trên một cặp biến = giá_trị, trong đó biến có tên là artID và giá trị là 161 (artID=161). Chúng ta cũng có thể đưa lên nhiều cặp biến=giá_trị bằng cách phân cách chúng bởi dấu &. Khi trình duyệt gửi các thông tin này lên máy chủ, PHP sẽ tự động sinh ra một mảng có tên là $_GET[] để nắm giữ tất cả các cặp biến và giá trị đó, trong đó, chỉ số của mảng chính là một chuỗi mang tên của tên biến và giá trị của chỉ số đó chính là giá trị của biến do trình duyệt gửi lên. Ví dụ, với địa chỉ URL trên thì PHP sẽ tự động sinh ra một mảng $_GET có nội dung sau: $_GET["artID"] = 161. Như vậy PHP đã nhận thành công dữ liệu truyền bằng phương thức “GET”. “POST” là phần dữ liệu được gửi qua các form HTML có method ="POST". Để lấy các biến theo kiểu “POST”, PHP sẽ tự động sinh ra mảng có tên là $_POST[]. Mảng này có chỉ số chính là tên của các phần tử trong form (các thẻ input, select... có SVTH: Nguyễn Tấn Phát
Trang 22
Báo cáo khóa luận tốt nghiệp đại học 2011 thuộc tính name) và giá trị là nội dung giá trị do người sử dụng nhập vào các phần tử
có tên tương ứng. Ví dụ trong một form HTML có dịng input như sau: <input type=”text” name=”t1” /> Nếu ta nhập nội dung dòng đó là “ok” và gửi dữ liệu đi (submit) thì mảng $_POST sẽ có phần tử sau: $_POST["t1"] = ”ok”. Cookies là một phần dữ liệu được lưu trên máy khách. Mỗi khi máy khách gửi một yêu cầu tới máy chủ nào đó, thì nó sẽ gửi phần dữ liệu được lưu trong cookie tương ứng với máy chủ đó. Người ta thường dùng cookies để lưu trữ các thơng tin có liên quan đến nhiều "phiên" làm việc khác nhau. Vi giao thức HTTP là giao thức không lưu trạng thái, nên cookies được sinh ra để làm nhiệm vụ lưu trữ một số biến trạng thái để khắc phục nhược điểm này. Khác với dữ liệu gửi từ form (“POST” hay “GET”) thì cookies sẽ được trình duyệt tự động gửi đi theo mỗi lần truy cập lên máy chủ. Trong q trình làm việc, cookie có thể bị thay đổi giá trị. Cookie sẽ bị vô hiệu hố nếu cửa sổ trình duyệt điều khiển cookie đóng lại và cookie hết thời gian có hiệu lực. Theo mặc định, thời gian "sống" của cookies là tồn tại cho đến khi cửa sổ trình duyệt sử dụng cookies bị đóng. Tuy nhiên người ta có thể thiết lập tham số thời gian để cookie có thể sống lâu hơn (6 tháng chẳng hạn). Ví dụ như chế độ Remember ID & Password của 1 số trang web. Trong PHP, để gửi cookie xuống trình duyệt, ta có thể sử dụng hàm setcookie: setcookie ( string name [, string value [, int expire [, string path [, string domain [, int secure]]]]] Trong đó: - string name: Chuỗi mang tên của cookie - string value: Chuỗi mang giá trị của cookie tương ứng với tên đã cho - int expire: Thời gian hết hạn của cookie - string path: Đường dẫn của cookie (đến 1 thư mục nào đó trên máy chủ. Tham số này cho biết cookie sẽ chỉ được truyền đi nếu như trang web mà trình duyệt yêu cầu nằm trên thư mục đó, thay vì lúc nào cũng phải gửi đi tới bất kỳ khu vực nào). - string domain: cookie này sẽ được gửi tới domain nào? - int secure: Chế độ bảo mật.
Các tham số trong cặp dấu ngoặc vuông là tuỳ chọn. SVTH: Nguyễn Tấn Phát
Trang 23
Báo cáo khóa luận tốt nghiệp đại học 2011 2.5.5. Điều hướng Menu: Bố cục của một trang web được chia thành nhiều phần, nhiều module và nội dung chính thường nằm ở giữa trang. Vậy làm thế nào để có thể điều hướng menu mà không cần phải sao chép lại các thành phần giống nhau ở các trang? Để thực hiện điều này, ta sẽ sử dụng phương thức $_GET và hàm include của PHP. Giả sử ta đã có một trang web với đầy đủ các thành phần, chỉ cịn nội dung chính nằm trong thẻ <div></div> được để trống, cùng với các file php chứa nội dung ta cần hiển thị trong thẻ <div></div> đó. Trên menu ta sẽ đặt một liên kết như sau: <a href=”index.php?content=thuvien”>Thư viện</a> Trong thẻ <div></div>, ta sẽ dùng $_GET để lấy giá trị của biến content. Nếu biến này rỗng thì $content sẽ có giá trị là “home” và file home.php sẽ được include vào trang hiện tại. Nếu ta click vào liên kết trên, giá trị “thuvien” được gửi đi và $content lúc này có giá trị là “thuvien”. Khi đó file thuvien.php sẽ được include vào trang hiện hành. if (empty($_GET['content'])){ } else $content = $_GET['content']; include($content.'.php'); ?>
$content = 'home';
2.5.6. Thao tác CSDL trong PHP: Thông thường, trong một ứng dụng có giao tiếp với CSDL, ta phải làm theo bốn trình tự sau: Bước 1: Thiết lập kết nối tới CSDL. Bước 2: Lựa chọn CSDL. Bước 3: Tiến hành các truy vấn SQL, xử lý các kết quả trả về nếu có SVTH: Nguyễn Tấn Phát
Trang 24
Báo cáo khóa luận tốt nghiệp đại học 2011 Bước 4: Đóng kết nối tới CSDL. Nếu như trong lập trình thơng thường trên Windows sử dụng các chương trình điều khiển trung gian (ADO, ODBC...) để thực hiện kết nối và truy vấn, thì trong PHP, khi lập trình tương tác với CSDL, chúng ta thường sử dụng thông qua các hàm. Trong đề tài này, sinh viên thực hiện sử dụng DBMS MySQL với lí do đây là hệ quản trị được sử dụng rộng rãi và ln được tích hợp sẵn trên các máy chủ hỗ trợ PHP. Khả năng tổ chức, tra cứu dữ liệu và tính bảo mật của hệ quản trị này cũng đảm bảo các nhu cầu của đề tài. Trước khi kết nối tới CSDL, trước hết ta cần tạo một CSDL bằng cách sử dụng công cụ phpmyadmin. Công cụ này được cài đặt sẵn trên các máy chủ hỗ trợ MySQL và có thể truy cập theo đường dẫn: tên host/phpmyadmin/. Cú pháp kết nối tới CSDL như sau : $connection = mysql_connect(tên server,tên user,mật khẩu);// kết nối đến server $db = mysql_select_db(tên CSDL,$connection) ;//lựa chọn CSDL ?>
Thao tác truy vấn từ CSDL: - Tạo một biến với giá trị là câu truy vấn. Ví dụ : $query = “(câu truy vấn)”; - Nếu là một câu truy vấn xử lý (INSERT, UPDATE, DELETE) gọi hàm mysql_query($query). Truy vấn kết thúc tại đây. - Nếu là một câu truy vấn tra cứu (SELECT) ta phải lấy giá trị trả về vào một biến. Ví dụ: $result = mysql_query($query). Sau đó ta sẽ cho hiển thị kết quả trả về bằng cách chuyển các dữ liệu trả về thành dạng mảng với hàm mysql_fetch_array() : $row = mysql_fetch_array($result). Mỗi lần gọi thì hàm này sẽ xuất 1 hàng vào mảng $row. Ta có thể truy cập đến từng ô dữ liệu bằng cách gọi $row[“tên cột”] hoặc $row[“thứ tự cột”]. Đóng kết nối : mysql_close($connection);