LỜI CẢM ƠN Em xin chân thành cảm ơn các thầy cô giáo trong khoa công nghệ thông tin, cũng như các thầy cô giảng dạy trong trường Đại học công nghệ thông tin và truyền thông đã truyền đạt những kiến thức quý báu cho em trong những năm học vừa qua. Đặc biệt, em xin chân thành cảm ơn Thầy giáo Bùi Anh Tú đã trực tiếp chỉ bảo, tận tình giúp đỡ và hướng dẫn em trong suốt thời gian làm đồ án tốt nghiệp. Một lần nữa em xin chân thành cảm ơn Thái nguyên, ngày 07 tháng 10 năm 2012 Sinh viên thực hiện Chu Thị Thảo . LỜI CAM ĐOAN Tôi xin cam đoan : 1. Những nội dung trong luận văn này là do tôi thực hiện dưới sự hướng dẫn trực tiếp của của thầy giáo Th.S Bùi Anh Tú. 2. Mọi tham khảo dùng trong luận văn đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố. 3. Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, tôi xin chịu hoàn toàn trách nhiệm. Sinh viên thực hiện Chu Thị Thảo MỤC LỤC LỜI CẢM ƠN 1 LỜI CAM ĐOAN 2 LỜI NÓI ĐẦU 6 CHƯƠNG 1 KHẢO SÁT CÔNG TY MÁY TÍNH ĐỨC DŨNG 8 1.1 Tìm hiểu chung về công ty máy tính Đức Dũng 8 1.1.1 Các hoạt động giới thiệu sảm phẩm 9 1.1.2. Khảo sát hiện trạng lưu trữ thông tin của công ty. 10 1.2. Cách quảng bá của công ty trước đây. 10 1.3. Đánh giá hiệu quả trong công việc. 11 1.4. Đề xuất xây dựng website quảng cáo 11 2.1. Một số biểu mẫu của công ty máy tính Đức Dũng 12 2.2.1. Biểu mẫu sổ chi tiết Sản phẩm 12 2.1.2 Biểu mẫu sổ Báo giá sản phẩm: 13 2.1.3 Báo giá linh kiện sản phẩm: 14 CHƯƠNG 2 CƠ SỞ LÝ THUYẾT XÂY DỰNG WEBSITE GIỚI THIỆU SẢN PHẨM CHO CÔNG TY MÁY TÍNH ĐỨC DŨNG 15 2.1. Ngôn ngữ lập trình PHP 15 2.1.1. Giới thiệu ngôn ngữ lập trình PHP 15 2.1.2. Cài đặt PHP 16 2.1.3. Cú pháp Cơ bản của PHP 17 2.1.4. Biến, hằng và các kiểu dữ liệu cơ bản 19 2.1.5. Các phép toán và câu lệnh có cấu trúc 23 2.1.6. Câu lệnh có cấu trúc 25 2.1.7. Post và Gest 25 2.1.8.Session 26 2.2. Hệ quản trị cơ sở dữ liệu MySQL 29 2.2.1. Giới thiệu 29 2.2.2. Quản lý người dùng 30 2.2.3. Các kiểu dữ liệu cơ bản 31 2.2.4. Các thao tác với Cơ sở dữ liệu 33 2.3. Kết nối cơ sở dữ liệu MySql trong Php 37 2.3.1. Kết nối cơ sở dữ liệu 37 2.3.2. Thêm mẩu tin 37 2.3.3. Cập nhật mẩu tin 38 2.3.4. Xóa mẩu tin 38 2.3.5. Truy vấn dữ liệu 38 2.4. Giới thiệu về mã nguồn mở joomla. 39 2.4.1. Joomla là gì? 39 2.4.2 Vài nét về lịch sử phát triển Joomla 39 2.4.3.Các dòng phiên bản của Joomla 40 2.4.4.Kiến trúc của Joomla 40 2.4.5. Đối với người sử dụng cuối 41 2.4.6. Ứng dụng của Joomla 41 2.4.7. Tình hình sử dụng Joomla ở Việt Nam 42 CHƯƠNG 3 PHÂN TÍCH BÀI TOÁN XÂY DỰNG WEBSITE GIỚI THIỆU SẢN PHẨM CHO CÔNG TY MÁY TÍNH ĐỨC DŨNG 43 3.1. Đặc tả yêu cầu 43 3.2. Giải pháp trong quảng bá thông tin trên website của công ty 43 3.3. Thiết kế các chức năng của website 44 3.3.1. Các chức năng của khác hàng(người truy cập) khi truy cập Website 44 3.3.2. Đối với người quản trị hệ thống 44 3.4. Sơ đồ liên kết giữa các bảng CSDL 53 CHƯƠNG 4 THIẾT KẾ WEBSITE 55 4.1. Chức năng chính. 55 4.2. Cấu trúc website 55 4.3 GIỚI THIỆU WEBSITE 56 4.3.1. Giao diện trang chủ. 56 4.3.2. Trang liệt kê theo nhóm sản phẩm : 57 4.3.3. Giao diện trang giới thiệu website 57 4.3.4 Giao diện thông tin bảo hành: 58 4.3.5 Giao diện trang liên hệ 59 4.3.6 Giao diện thông tin báo giá: 60 4.3.7 Giao diện bán hàng trực tuyến( Giỏ hàng) 61 CHƯƠNG 5 KẾT LUẬN 65 5.1 Kết quả thu được 65 5.2 NHẬN XÉT 65 5.2.1.Ưu điểm 65 5.2.2 Nhược điểm 66 5.3. PHẠM VI ỨNG DỤNG 66 TÀI LIỆU THAM KHẢO 67 NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 68 LỜI NÓI ĐẦU Ngày nay xây dựng website là một công việc quan trọng đến nỗi trở thành tiêu điểm đầu tiên của mỗi kế hoạch kinh doanh. Bằng một website ấn tượng, chuyên nghiệp với đầy đủ chức năng, thông tin, tiện ích dành cho người xem giúp công ty: Tạo được ấn tượng tốt. Xóa khoảng cách giữa công ty lớn và nhỏ Tạo cơ hội: Tạo “bộ mặt” công ty ấn tượng, hiện đại và chuyên nghiệp – tăng lợi thế cạnh tranh. Tăng tính cạnh tranh cho công ty, tìm thêm khách hàng mới. Mang tính chuyên nghiệp trong thời đại Toàn cầu hóa, Kỹ thuật số, Thông tin, Kinh tế Tri thức Với đề tài “Thiết kế website giới thiệu sản phẩm cho công ty máy tính Đức Dũng”, em đã phân tích, xây dựng website giúp cho việc quản bá công ty và sản phẩm của công ty đến khách hàng một cách có hiệu quả nhất . Nội dung của đề tài gồm 5 chương: CHƯƠNG I: KHẢO SÁT CÔNG TY. CHƯƠNG II : CƠ SỞ LÝ THUYẾT CỦA ĐỀ TÀI. CHƯƠNG III : PHÂN TÍCH THIẾT KẾ HỆ THỐNG THÔNG TIN ĐỂ XÂY DỰNG WEBSITE GIỚI THIỆU SẢN PHẨM CÔNG TY MÁY TÍNH ĐỨC DŨNG CHƯƠNG IV: THIẾT KẾ WEBSITE GIỚI THIỆU SẢN PHẨM CHO CÔNG TY MÁY TÍNH ĐỨC DŨNG CHƯƠNG V: KẾT LUẬN Xây dựng chương trình bằng ngôn ngữ lập trình Php, hệ quản trị cơ sỏ dữ liệu My SQL. Trong thời gian quá ngắn và trình độ còn nhiều hạn chế nên đề tài của em không thể tránh khỏi sai xót. Em mong các thầy cô cùng các bạn đóng góp ý kiến cho em để hoàn thiện hơn. Em xin chân thành cảm ơn thầy BÙI ANH TÚ đã trực tiếp hướng dẫn em hoàn thành đề tài này. Em xin chân thành cảm ơn ban lãnh đạo Công ty máy tính Đức Dũng đã giúp đỡ em trong quá trình nghiên cứu và hoàn thành đề tài. Nam Định, tháng 06 năm 2012 Sinh viên Chu Thị Thảo CHƯƠNG 1 KHẢO SÁT CÔNG TY MÁY TÍNH ĐỨC DŨNG 1.1 Tìm hiểu chung về công ty máy tính Đức Dũng Tên công ty: Công ty máy tính Đức Dũng Địa chỉ : 272 Quang Trung – Tp.Nam Định Giám đốc: Ông Vũ Đức Dũng Công ty máy tính Đức Dũng là Công ty có bề dày, nhiều năm kinh nghiệm trong lĩnh vực công nghệ thông tin. Tiền thân của Công ty máy tính Đức Dũng là cửa hàng Thiết bị máy tính, văn phòng máy tính Đức Dũng được thành lập năm 2000, đến năm 2002 đăng ký Cty máy tính Đức Dũng. Công Ty máy tính Đức Dũng hoạt động trong lĩnh vực cung cấp các sản phẩm công nghệ thông tin. Công ty được công nhận là Đại lý chính thức của các hãng máy tính hàng đầu thể giới và Việt Nam như: HPCOMPAQ, IBM, TOSHIBA, ACERBENQ, UPSELEC …Trong những năm qua Công ty thường xuyên là Đại lý đạt doanh số lớn . CÁC HOẠT ĐỘNG KINH DOANH CHỦ YẾU CỦA CÔNG TY MÁY TÍNH ĐỨC DŨNG + Phân phối, lắp ráp linh kiện, thiết bị, máy tính, máy văn phòng, + Cung cấp các phần mềm có bản quyền. + Sửa chữa, bảo trì, bảo dưỡng, bảo hành tất cả các thiết bị máy tính, máy in. Sơ đồ tổ chức nhân sự: Chức năng nhiệm vụ của từng bộ phận: Ban giám đốc: Theo dõi và quản lý mọi hoạt động của siêu thị Phòng nhân sự: Tuyển dụng, huấn luyện và sắp xếp nhân sự cho nhân viên. Phòng tài chính: Quản lý, thanh toán, chi trả các khoản tài chính cho siêu thị Phòng giới thiệu sản phẩm: Quản lý hoạt động kinh doanh giới thiệu của siêu thị Bộ phận tiếp thị: Xây dựng và thực thi những kế hoạch đưa hàng hóa tiếp cận với khách hàng Bộ phận bán hàng: + Bộ phận tiếp nhận đơn đặt hàng: Tổ chức tiếp nhận đơn đặt hàng của khách hàng + Bộ phận bán hàng tại quầy: Giới thiệu sản phẩm trực tiếp hoặc qua mạng Bộ phận giao hàng: Giao hàng cho khách hàng. Bộ phận chăm sóc khách hàng: Trực tiếp giải quyết những đề nghị, thắc mắc của khách hàng. Bộ phận kho: Quản lý nhập xuất hàng hóa. Thống kê tình hình hàng hóa hiện tại của kho. Phòng công nghệ thông tin: Đảm bảo hệ thống máy tính của siêu thị hoạt động tốt. 1.1.1 Các hoạt động giới thiệu sảm phẩm Về phía công ty: Hàng ngày xông ty phải tiếp nhận một số lượng tương đối lớn máy tính cùng các phụ kiện từ nhà cung cấp Liên tục và nhanh chóng cập nhật những sản phẩm mới In catalog để giới thiệu các sản phẩm mới cũng như các đợt khuyến mại của công ty. Thực hiện giới thiệu và bán hàng cho khách hàng có nhu cầu, lưu hóa đơn thanh toán để tổng kết báo cáo. Tiến hành bảo hành máy tính khi khách hàng có nhu cầu. Hàng tháng khi có yêu cầu của ban giám đốc, các bộ phận sẽ tổng hợp đánh giá kết quả kinh doanh của cơ sở báo cáo lên ban giám đốc. Về phía khách hàng: Trực tiếp đến công ty hoặc có thể vào trang web của công ty để tìm hiểu, giao dịch với công ty. Sau khi mua thì nhận biên lai thanh toán và sản phẩm. Nếu khách hàng có nhu cầu bảo hành, đổi sản phẩm hay trả lại sản phẩm thì phải đến cửa hàng trao đổi trực tiếp với nhân viên của công ty. Khách hàng đến với công ty sẽ được phục vụ nhiệt tình chu đáo. Tại công ty có phiếu thăm dò dành cho khách hàng. Khách hàng có thể đánh giá, nhận xét hoặc góp ý với công ty. Nếu là khách quen của công ty nếu mua với số lượng lớn thì sẽ ưu đãi hơn về giá cả và dịch vụ chăm sóc khách hàng của công ty. 1.1.2. Khảo sát hiện trạng lưu trữ thông tin của công ty. Hiện tại công ty đang lưu trữ những thông tin sau: Thông tin về sản phẩm. Thông tin về nhân viên. Thông tin về khách hàng. Thông tin về kho hàng. Thông tin về nhà cung cấp. Thông tin về đơn hàng. Thông tin về hóa đơn bán hàng. Thông tin về hàng tồn kho. 1.2. Cách quảng bá của công ty trước đây. Báo giá linh kiện máy tính: Khi khách hàng đến mua sản phẩm của công ty Bảng báo giá sẽ được đưa cho khách hàng về nghiên cứu tham khảo. Nhân viên sẽ trao đổi trực tiếp sản phẩm với khách hàng tại công ty. Khi có chương trình khuyến mại: Công ty chủ động thiết kế tờ rơi với nội dung theo khuyến mại. In và photo tờ rơi với số lượng lớn. Nhân viên phát tờ rơi tại các địa điểm đông người. 1.3. Đánh giá hiệu quả trong công việc. Không tiếp cận được thị trường Khó tiếp cận được thị trường rộng với chi phí nhỏ. Thiếu sót trong việc: Nâng cao chất lượng phục vụ khách hàng, cung cấp thông tin nguyên nhân. Không cung cấp được đầy đủ thông tin cho khách hàng một cách nhanh chóng, tiện lợi. Không giải đáp thắc mắc, yêu cầu của khách hàng một cách nhanh chóng, hiệu quả. Không cung cấp được dịch vụ tiện lợi cho khách hàng chọn hàng, đặt hàng. Những yếu tố nói trên thực sự quan trọng khi công ty có đối tượng khách hàng ở xa, ở nhiều địa phương, quốc gia. Bỏ lỡ cơ hội: Marketing phạm vi toàn cầu – thông tin nhanh chóng với chi phí thấp Bị giới hạn phạm vi địa lý. Không truyền tải được nhiều thông tin, thời lượng. Không dễ dàng theo dõi hiệu quả, nhận tương tác của khách hàng. Bỏ lỡ cơ hội: Giảm các chi phí Chi phí marketing truyền thống cao hơn so với Marketing bằng phương tiện Internet. Chi phí in ấn, gửi tài liệu, liên lạc qua phone, fax... đặc biệt là khi người nhận ở xa (liên tỉnh, quốc tế). 1.4. Đề xuất xây dựng website quảng cáo Bằng một website ấn tượng, chuyên nghiệp với đầy đủ chức năng, thông tin, tiện ích dành cho người xem giúp công ty: Tạo được ấn tượng tốt. Xóa khoảng cách giữa công ty lớn và nhỏ Tạo cơ hội: Tạo “bộ mặt” công ty ấn tượng, hiện đại và chuyên nghiệp – tăng lợi thế cạnh tranh. Tăng tính cạnh tranh cho công ty, tìm thêm khách hàng mới. Mang tính chuyên nghiệp trong thời đại Toàn cầu hóa, Kỹ thuật số, Thông tin, Kinh tế Tri thức. 2.1. Một số biểu mẫu của công ty máy tính Đức Dũng 2.2.1. Biểu mẫu sổ chi tiết Sản phẩm CÔNG TY MÁY TÍNH ĐỨC DŨNG Địa chỉ: 272 Quang Trung – Nam Định DĐ:0919.3720.29 – Fax: 0350.3988688 Email: ducdungcomputergmail.com Website: ducdung.com.vn BẢN THÔNG TIN CHI TIẾT VỀ SẢN PHẨM Tên cơ quan chủ quản Tên nhóm sản phẩm Số:…………….. Tên tổ chức, cá nhân Tên sản phẩm ……….., ngày ….. tháng …… năm……. ĐẠI DIỆN TỔ CHỨC, CÁ NHÂN (Ký tên, chức vụ, đóng dấu) 2.1.2 Biểu mẫu sổ Báo giá sản phẩm: 2.1.3 Báo giá linh kiện sản phẩm: CHƯƠNG 2 CƠ SỞ LÝ THUYẾT XÂY DỰNG WEBSITE GIỚI THIỆU SẢN PHẨM CHO CÔNG TY MÁY TÍNH ĐỨC DŨNG 2.1. Ngôn ngữ lập trình PHP 2.1.1. Giới thiệu ngôn ngữ lập trình PHP PHP viết tắt của chữ Personal Home Page ra đời năm 1994 do phát minh của Rasmus Lerdorf, và nó tiếp tục được phát triển bởi nhiều cá nhân và tập thể khác, do đó PHP được xem như một sản p của mã nguồn mở. PHP là kịch bản trình chủ (server script) chạy trên phía server (server side) như các server script khác (asp, jsp, cold fusion). PHP là kịch bản cho phép chúng ta xây dựng ứng dụng web trên mạng internet hay intranet tương tác với mọi cơ sở dữ liệu như mySQL, PostgreSQL, Oracle, SQL Server và Access. Từ phiên bản 4.0 trở về sau mới hỗ trợ session, ngoài ra PHP cũng như Perl là kịch bảng xử lý chuỗi rất mạnh chính vì vậy ta có thể sử dụng PHP trong những có yêu cầu về xử lý chuỗi. Cài đặt PHP trên nền Windows thì sử dụng php4.0.6Win32.zip, sau khi cài đặt ứng dụng này trên đĩa cứng sẽ xuất hiện thư mục PHP, trong thự mục này sẽ có tập tin php4ts.dll và php.exe cùng với thư mục sessiondata. Ngoài ra, trong thư mục WINDOW sẽ xuất hiện tập tin php.ini, tập tin này cho phép ta cấu hình cho ứng dụng PHP. Chẳng hạn, khi sử dụng session, PHP cần một nơi để lưu trữ chúng, trong tập tin này mặc định là session.save_path = C:PHPsessiondata, nếu ta cài đặt PHP với thư mục PHP trên đĩa D thì ta cần thay đổi đường dẫn trong khai báo này. Tương tự như vậy, khi có lỗi trong trangPHP thì lỗi thường xuất hiện khi triệu gọi chúng, để che dấu các lỗi này thì cần khai báo display_errors = Off thay vì chúng ở trạng thái display_errors = On. Ngoài ra, trang PHP cũng có thể trình bày một số warning khi chúng phát hiện cú pháp không hợp lý, chính vì vậy để che dấu các warning này thì cũng cần khai báo trạng thái Off thay vì On như assert.warning = Off. PHP là kịch bản trình chủ (Server Script) được chạy trên nền PHP Engine, cùng với ứng dụng Web Server để quản lý chúng. Web Server thường sử dụng là IIS, Apache Web Server, ... Khi người sử dụng gọi trang PHP, Web Server triệu gọi PHP Engine để thông dịch (tương tự như ASP 3.0 chỉ thông dịch chứ không phải biên dịch) dịch trang PHP và trả về kết quả cho người sử dụng như hình dưới 2.1.2. Cài đặt PHP Nếu máy chủ của bạn hỗ trợ PHP, bạn không cần phải làm bất cứ điều gì. Chỉ cần tạo một số tập tin. Php trong thư mục web của bạn, và máy chủ sẽ phân tích chúng cho bạn.Bởi vì nó là miễn phí, hầu hết các máy chủ web cung cấp hỗ trợ PHP. Tuy nhiên, nếu máy chủ của bạn không hỗ trợ PHP, bạn phải cài đặt PHP. Đây là một liên kết đến một hướng dẫn tốt từ PHP.net làm thế nào để cài đặt PHP5:http:www.php.netmanualeninstall.php Tải về PHP Tải về PHP miễn phí ở đây: http:www.php.netdownloads.php Tải về cơ sở dữ liệu MySQL Tải về MySQL cho miễn phí tại đây: http:www.mysql.comdownloads Tải về Apache Server Tải về Apache miễn phí ở đây: http:httpd.apache.orgdownload.cgi 2.1.3. Cú pháp Cơ bản của PHP Nội dung của PHP có thể khai báo lẫn lộn với HTML, chính vì vậy ta sử dụng cả dấu giá để khai báo mã PHP. Chẳng hạn, chúng ta khai báo: 1Giá trị biến Chuoi: 2Giá trị biến i: 3Giá trị cũ thể: Chẳng hạn ta khai báo trang hello.php với nội dung như ví dụ sau: Ví dụ: ::Xin chào đến với ngôn ngữ lập trình PHP Greeting: Trong trường hợp có nhiều khai báo, ta sử dụng Scriptlet, đều này có nghĩa là sử dụng cặp dấu trên như với các khai báo PHP với cú pháp của C như sau: Khai báo trên là Scriptlet Giá trị của paging: Khai báo này là Script Lưu ý rằng, kết thúc mỗi câu lệnh phải dùng dấu ; Ghi chú: Trong kịch bản PHP tương tự ngôn ngữ lập trình C, để ghi chú một dòng thì ta sử dụng cặp dấu . Chẳng hạn khai báo sau là ghi chú: Trong trường hợp có nhiều dòng cần ghi chú sử dụng cặp dấu và . Ví dụ: Khai báo biến để đọc dữ liệu trong đó totalRows là biến trả về tổng số mẩu tin result = mysql_query(stSQL, link); totalRows=mysql_num_rows(result); Ngoài ra, ta cũng có thể sử dụng dấu để khai báo ghi chú cho từng dòng, ví dụ khai báo sau là ghi chú: 2.1.4. Biến, hằng và các kiểu dữ liệu cơ bản Cú pháp PHP chính là cú pháp trong ngôn ngữ C, một số điểm cần lưu ý: Cuối câu lệnh có dấu ; Biến trong PHP có tiền tố là Mỗi phương thức đều bắt đầu { và đóng bằng dấu } Khi khai báo biến thì không có kiễu dữ liệu Nên có giá trị khởi đầu cho biến khai báo Phải có chi chú (comment) cho mỗi feature mới Sử dụng dấu hoặc để giải thích cho mỗi câu ghi chú Sử dụng và cho mỗi đoạn ghi chú Khai báo biến có phân biệt chữ hoa hay thường Hằng Hằng là giá trị không thay đổi kể từ sau khi khai báo, ta có thể sử dụng phát biểu Define để khai báo hằng như sau: define(MAXSIZE, 100); ::Welcome to PHP Constant Khai báo biến Khi thực hiện khai báo biến trong C, cần phải biết tuân thủ quy định như: kiểu dữ liệu trước tên biến và có giá trị khởi đầu, tuy nhiên khi làm việc với PHP thì không cần khai báo kiểu dữ liệu nhưng sử dụng tiền tố trước biến. Xuất phát từ những điều ở trên, khai báo biến trong PHP như sau: Các kiểu dữ liệu cơ bản Bảng các kiểu dữ liệu thông thường Boolean True hay false Integer giá trị lớn nhất xấp xỉ 2 tỷ Float ~1.8e308 gồm 14 số lẽ String Lưu chuỗi ký tự chiều dài vô hạn Object Kiểu đối tượng Array Mảng với nhiều kiểu dữ liệu Thay đổi kiểu dữ liệu Để thay đổi kiểu dữ liệu, ta có thể sử dụng cách ép kiểu như trong các ngôn ngữ lập trình C hay Java. Chẳng hạn, khai báo ép kiểu như ví dụ: PHP tự động nhận biết giá trị chuỗi đằng sau số sẽ không được chuyển sang kiểu dữ liệu số như trường hợp trên. Ngoài ra, ta có thể sử dụng hàm settype để chuyển đổi dữ liệu này sang dữ liệu khác, ví dụ: Change DataType of Variable Để kiểm tra kiểu dữ liệu của biến, ta có thể sử dụng các hàm: is_int để kiểm tra biến có kiểu integer, nếu biến có kiểu integer thì hàm sẽ trả về giá trị là true (1). Tương tự, is_array, is_bool, is_callable, is_double, is_float, is_int, is_integer, is_long, is_null, is_numeric, is_object, is_real, is_string. Khi khai báo biến và khởi tạo giá trị cho biến với kiểu dữ liệu, sau đó ta muốn sử dụng giá trị của biến đó thành tên biến và có giá trị chính là giá trị của biến trước đó thì sử dụng cặp dấu . Ví dụ, biến var có giá trị là total, sau đó muốn sử dụng biến là total thì khai báo như ví dụ: Dữ liệu kiểu Array Kiểu mảng là một mảng số liệu do người dùng định nghĩa, chúng có cú pháp như sau: myarrs=array(first, last, company); hay có thể khai báo như sau myarr=array(3); myarr0=Number 0; myarr1=Number 1; myarr2=Number 2; Thứ tự index trong mảng bắt đầu từ vị trí 0. Kiểu đối tượng Để khai báo đối tượng, ta sử dụng khái niệm class như trong ngôn ngữ lập trình C hay java, ngoài ra phương thức trong PHP được biết đến như một hàm. Điều này có nghĩa là từ khoá là function. Nếu hàm có tên trùng với tên của class thì hàm đó được gọi là constructor. Chẳng hạn, chúng ta khai báo class và khởi tạo chúng thì tự động constructor được gọi mỗi khi đối tượng khởi tạo. 2.1.5. Các phép toán và câu lệnh có cấu trúc Các phép toán Giống như các ngôn ngữ lập trình khác, Php sử dụng các phép toán cơ bản: +, , , để thực hiện tính toán trong số học, ngoài ra còn sử dụng một số phép toán sau Phép toán tăng giá trị (++) Khi thực hiện một việc tăng giá trị của biến lên một đơn vị thì ta có thể sử dụng cú pháp như sau: i=0;j=0; j=i++; i tăng sau khi gán i vào j, chính vì vậy sau khi gán i vào j, j vẫn không thay đổi j=++i; i tăng trước khi gán i vào j, chính vì vậy sau khi gán i vào j, j thay đổi. Phép toán đảo bit (~) và nghịch đảo () Toán tử ~ đảo nghịch tất cả các bit của tham số, còn toán tử đảo nghịch giá trị của giá trị trước đó. Chẳng hạn trong trường hợp sau chúng ta sử dụng cho biểu thức hay biến có giá trị boolean. Phép toán chia module (%) Khi chia một số cho một số và cần kết quả là số dư của phép chia đó thì dùng toán tử %. Ví dụ: 15 % 7 = 1. Phép toán quan hệ (>= ,> ,< ,=, >, ::Welcome to PHP Session_ID Khai báo Session Khi muốn khai báo biến session, ta phải sử dụng hàm session_register có cú pháp như sau: session_register(sessioname); Khi muốn khởi tạo session, ta có thể gán giá trị cho session này như gán giá trị cho biến trong PHP, sau đó sử dụng hàm trên để đắng ký. sessioname=value; session_register(sessioname); Trong trường hợp có nhiều session, ta có thể sử dụng hàm session_register để đăng ký cùng một lúc nhiều session như sau: sessioname1=value1; sessioname2=value2; sessioname3=value3; session_register(sessioname1,sessioname2,sessioname3); Lấy giá trị từ session Sau khi khai báo khởi tạo một số session với giá trị tương ứng của session đó, ta có thể truy cập các biến session này để lấy giá trị trong trang PHP khác. Chẳng hạn, chúng ta khai báo trang getsession.php để lấy các session của PHP vừa khai báo: ::Welcome to PHP Get Session 2.1.8.2. Cookie Cookie được xem như session, tuy nhiên chúng lưu trữ thông tin trên trình khách. Để sử dụng Cookie, ta sử dụng hàm setcookie để gán giá trị. ::Welcome to PHP Cookie Ngoài ra, ta có thể gán giá trị cookie bằng session. Chẳng hạn, chúng ta sử dụng hàm session_set_cookie_params để gán cookie như ví dụ: ::Welcome to PHP SessionCookie 2.2. Hệ quản trị cơ sở dữ liệu MySQL 2.2.1. Giới thiệu Hệ quản trị cơ sở dữ liệu (tiếng Anh: Database Management System DBMS), là phần mềm hay hệ thống được thiết kế để quản trị một cơ sở dữ liệu. Cụ thể, các chương trình thuộc loại này hỗ trợ khả năng lưu trữ, sửa chữa, xóa và tìm kiếm thông tin trong một cơ sở dữ liệu (CSDL). Có rất nhiều loại hệ quản trị CSDL khác nhau: từ phần mềm nhỏ chạy trên máy tính cá nhân cho đến những hệ quản trị phức tạp chạy trên một hoặc nhiều máy tính. Tuy nhiên, đa số hệ quản trị CSDL trên thị trường đều có một đặc điểm chung là sử dụng ngôn ngữ truy vấn theo cấu trúc mà tiếng Anh gọi là Structured Query Language (SQL). Các hệ quản trị CSDL phổ biến được nhiều người biết đến là MySQL, Oracle, PostgreSQL, SQL Server, DB2, Infomix, v.v. Phần lớn các hệ quản trị CSDL kể trên hoạt động tốt trên nhiều hệ điều hành khác nhau như Linux, Unix và MacOS ngoại trừ SQL Server của Microsoft chỉ chạy trên hệ điều hành Windows. MySQL là hệ quản trị cơ sở dữ liệu mã nguồn mở phổ biến và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng. Vì MySQL là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh. Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên Internet. MySQL miễn phí hoàn toàn cho nên ta có thể tải về MySQL từ trang chủ. Nó có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng Windows, Linux, Mac OS X, Unix, FreeBSD, NetBSD, Novell NetWare, SGI Irix, Solaris, SunOS, ... MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ liệu quan hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL). MySQL được sử dụng cho việc bổ trợ PHP, Perl, và nhiều ngôn ngữ khác, nó làm nơi lưu trữ những thông tin trên các trang web viết bằng PHP hay Perl,... 2.2.2. Quản lý người dùng Để đăng nhập vào MySQL bằng Command line, ta chỉ cần gõ >mysql – hostname –u username – p từ dấu nhắc hay đăng nhập bằng cách sử dụng trình giao diện đồ hoạ. Từ khoá hostname chỉ ra rằng tên (computer name), IP, hay localhost của máy có sử dụng cơ sở dữ liệu MySQL, u chỉ ra username, username là tên đăng nhập, p được chỉ định khi username này có password. Trong trường hợp password là rỗng, ta có thể không cung cấp tham số –p. Để tạo một Username bằng Command line: GRANT Select, Insert, Update, Delete, Index, Alter, Create, Drop, References ON . TO myis% IDENTIFIED BY 12345678 Trong phát biểu trên, vừa tạo ra User có tên myis, với hostname là cơ sở dữ liệu hiện hành, password là 1234 và được các đặt quyền Select, Insert, Update, Delete, Index, Alter, Create, Drop trên cơ sở dữ liệu hiện hành. Trong trường hợp ta tạo ra một Username không cung cấp các đặt quyền trên cơ sở dữ liệu, có thể thực hiện như phát biểu tạo username: test, password: 1234 sau: GRANT usage ON . TO test% IDENTIFIED BY 1234 2.2.3. Các kiểu dữ liệu cơ bản Kiểu dữ liệu numeric Kiểu dữ liệu numeric bao gồm kiểu số và kiểu số chấm động, trong trường hợp dữ liệu kiểu dấu chấm động, cần phải chỉ rõ bao nhiều số sau đấu phần lẻ. Kiểu dữ liệu số nguyên Loại Range Bytes Giải thích Tinyint 127 đến 128 hay 0 …255 1 Số nguyên rất nhỏ. Smallint 32768 đến 32767 hay 0…65535 2 Số nguyên nhỏ. Mediumint 8388608 đến 838860 hay 0…16777215 3 Số nguyên vừa. Int 231 đến 231 1 hay 0…232 – 1 4 Số nguyên. Bigint 263 đến 263 1 hay 0…264 1 8 Số nguyên lớn Kiểu số chấm động Loại Range Bytes Diễn giải Float Phụ thuộc vào số phần thập phân Sốthậpphân dạng single hay double Float(M,D) +1 . 175494351E38 +3 . 40282346638 4 Số thập phân dạng single. Double(M,D) +1 . 7976931348623157308 +2 . 2250738585072014E308 8 Số thập phân dạng double Float(M,D) Số chấn động lưu dưới dạng char. Loại dữ liệu Date and Time Kiểu dữ liệu Date and Time cho phép nhập liệu dưới dạng chuỗi hay dạng số Loại Range Diễn giải Date 10000101 đến 99991231 Date trình bày dưới dạng yyyymmdd. Time 00:00:00 đến 23:59:59 Time trình bày dưới dạng hh:mm:ss. Datetime 10000101, 00:00:00 đến 99991231, 23:59:59 Date và time trình bày dưới dạng yyyymmdd, hh:mm:ss. Timestamp(M) 19700101, 00:00:00 Timestamp trình bày dưới dạng yyyymmdd, hh:mm:ss. Year (2|4) 1970 2069 1901 – 2155 Year trình bày dưới dạng 2 số hay 4 số. Loại dữ liệu string: Kiểu dữ liệu String chia làm ba loại, loại thứ nhất như char (chiều dài cố định) và varchar (chiều dài biến thiên). Char cho phép nhập liệu dưới dạng chuỗi với chiếu dài lớn nhất bằng chiều dài đã định nghĩa, nhưng khi truy cập dữ liệu trên Field có khai báo dạng này, ta cần phải xử lý khoảng trắng. Điều này có nghĩa là nếu khai báo chiều dài là 10, nhưng chỉ nhập chuỗi 4 ký tự, MySQL lưu trữ trong bộ nhớ chiều dài 10. Ngược lại với kiểu dữ liệu Char là Varchar, chiều dài lớn hất người dùng có thể nhập vào bằng chiều dài đã định nghĩa cho Field này, bộ nhớ chỉ lưu trữ chiều dài đúng với chiều dài của chuỗi đã nhập. Như vậy, có nghĩa là nếu ta khai báo kiểu varchar 10 ký tự, nhưng chỉ nhập 5 ký tự, MySQL chỉ lưu trữ chiều dài 5 ký tự, ngoài ra, khi truy cập đến Field có kiểu dữ liệu này, ta không cần phải giải quyết khoảng trắng. Loại thứ hai là Text hay Blob, Text cho phép lưu chuỗi rất lớn, Blob cho phép lưu đối tượng nhị phân. Loại thứ 3 là Enum và Set. 2.2.4. Các thao tác với Cơ sở dữ liệu Thao tác cơ bản với cơ sở dữ liệu MySql gồm các câu truy vấn sau: SELECT (Truy vấn mẩu tin). INSERT (Thêm mẩu tin). UPDATE (Cập nhật dữ liệu). DELETE (Xoá mẩu tin). Câu lệnh Select Phát biểu Select dùng để truy vấn dữ liệu từ một hay nhiều bảng khác nhau, kết quả trả về là một tập mẩu tin thỏa mãn các điều kiện cho trước nếu có, cú pháp của phát biểu SQL dạng SELECT: SELECT FROM WHERE GROUP BY HAVING ORDER BY LIMIT FromNumber | ToNumber Danh sách các cột: Khai báo các tên cột, biểu thức kết hợp giữa các cột của Table ta cần truy vấn. Trong trường hợp có hai cột cùng tên của hai Table trong phát biểu, ta cần phải chỉ định tên Table đi trước. Ví dụ: Select ItemID,ItemName From tblItems Where Cost>100; Select tblOrders.OrderID,OrderDate,ItemID,Qtty From tblOrders,tblOrderDetails Where tblOrders.OrderID = _ tblOrderDetail.OrderID; Câu lệnh Insert Khi cần thêm mẩu tin vào bảng trong cơ sở dữ liệu MySQL, ta có nhiều cách để thực hiện công việc này. Trong Visual Basic 6.0, VB.NET, C Sharp hay Java có những phương thức khác nhau để thêm mẩu tin vào bảng trong cơ sở dữ liệu. Tuy nhiên, để sử dụng các phát biểu SQL mang tính chuyên nghiệp trong MySQL, ta cần sử dụng phát biểu INSERT. Có thể sử dụng phát biểu Insert ngay trên ứng dụng kết nối với MySQL. Trong trường hợp sử dụng cơ sở dữ liệu SQL Server hay Oracle, ta có thể tạo ra một Stored Procedure với mục đích INSERT dữ liệu vào bảng chỉ định trước. Khi thêm dữ liệu, cần chú ý kiểu dữ liệu giống hoặc tương ứng kiểu dữ liệu đã khai báo của cột đó, nếu không phù hợp thì lỗi sẽ phát sinh. Ngoài ra ta cần quan tâm đến quyền của User đang truy cập cơ sở dữ liệu. User phải được cấp quyền Insert dữ liệu vào từng bảng cụ thể (quyền này do nhà quản trị cơ sở dữ liệu phân quyền cho User đó). Ví dụ: Bảng tblOrderDetails CREATE TABLE tblorderdetails ( ItemID int(3) unsigned DEFAULT 0 , OrderID int(3) unsigned DEFAULT 0 , No tinyint(3) unsigned DEFAULT 0 , Qtty int(3) unsigned DEFAULT 0 , Price int(3) unsigned DEFAULT 0 , Discount int(3) unsigned DEFAULT 0 , Amount bigint(3) unsigned DEFAULT 0 ); CREATE TABLE tblorderdetailshist ( ItemID int(3) unsigned DEFAULT 0 , OrderID int(3) unsigned DEFAULT 0 , No tinyint(3) unsigned DEFAULT 0 , Qtty int(3) unsigned DEFAULT 0 , Price int(3) unsigned DEFAULT 0 , Discount int(3) unsigned DEFAULT 0 , Amount bigint(3) unsigned DEFAULT 0 ); INSERT INTO TBLCUSTOMERS (CustName,Username,Password, Address,Tel,FaxNo,Email,Contact, CountryCode,ProvinceCode) Values (Khach San CENTURY, ‘century’, ’1111’,’5 Le Loi’,’8676767’,’8767676’, ‘centuryyahoo.com’,’Hoang Anh’, ‘VNA’,’HCM’) Thêm mẩu tin với một số cột INSERT INTO TBLORDERS(OrderID,OrderDate, CustID,Description,Amount) Values (11,curdate(),’1, Dat hang qua mang, 20000) Câu lệnh Update Phát biểu SQL dạng UPDATE dùng cập nhật lại dữ liệu đã tồn tại trong bảng. Khi UPDATE dùng cập nhật dữ liệu cho một mẩu tin chỉ định nào đó thường UPDATE sử dụng chung với mệnh đề WHERE. Nếu cần cập nhật tất cả các mẩu tin trong bảng ta có thể bỏ mệnh đề WHERE. Phát biểu này có cấu trúc như sau: nếu cập nhất giá trị cụ thể Update Set =,= where nếu cập nhất giá trị là kết quả trả về từ phát biểu select trên một hay nhiều bảng khác Update Set = where UPDATE có thể ảnh hưởng đến nhiều bảng, nhưng cập nhất giá trị chỉ có hiệu lực trên bảng đó. Ví dụ: cập nhật cột với giá trị cụ thể Update tblCustomers Set CustName=Cong ty TNHH Coca cola Vietnam Where CustID=‘12’ cập nhật một cột với giá trị cột khác trong bảng tblOrderDetails Update tblOrders Set Amount= Amount.01, TotalAmount=Amount0.1 Where Month(OrderDate)=12 Câu lệnh Delete Với phát biểu SQL dạng DELETE thì đơn giản hơn. Khi thực hiện lệnh xoá mẩu tin trong bảng chúng ta chỉ cần quan tâm đến tên bảng, và mệnh đề WHERE để xoá với những mẩu tin đã chọn lọc nếu có. Cú pháp của Delete: Delete from Where Mệnh đề WHERE giống như bất kỳ mệnh đề WHERE nào trong phát biểu SELECT hay UPDATE và INSERT của bất kỳ ứng dụng cơ sở dữ liệu nào có sử dụng SQL. Conditions có thể là phép toán giữa các cột và giá trị, nhưng cũng có thể giá trị là kết quả trả về từ một phát biểu SELECT khác. Ghi chú: Không có khái niệm xóa giá trị trong một cột, vì xóa giá trị một cột đồng nghĩa với cập nhật cột đó bằng giá trị rỗng. Xoá mẩu tin từ bảng với điều kiện Delete from tblCustomers Where CustName is null Trong trường hợp có ràng buộc về quan hệ của dữ liệu, thì xóa mẩu tin phải tuân thủ theo quy tắc: Xoá mẩu tin con trước rồi mới xoá mẩu tin cha. Chẳng hạn, trong trường hợp ta có 2 bảng: hợp đồng bán hàng (tblOrders) và hợp đồng bán hàng chi tiết (tblOrderDetails). Để xoá một hợp đồng cần xóa mẩu tin trong bảng tblOrders trước rồi mới đến các mẩu tin trong bảng tblOrderDetails. Xoá mẩu tin từ bảng con Delete from tblOrderDetails where OrderID=123 Xoá mẩu tin từ bảng cha Delete from tblOrders where OrderID=123 2.3. Kết nối cơ sở dữ liệu MySql trong Php 2.3.1. Kết nối cơ sở dữ liệu Để kết nối cơ sở dữ liệu mySQL ta sử dụng khai báp như sau: Sau khi mở kết nối cơ sở dữ liệu mà không sử dụng nữa ta có thể đóng kết nối cơ sở dữ liệu với cú pháp như sau: mysql_close(link); 2.3.2. Thêm mẩu tin Để thêm mẩu tin, ta sử dụng hàm mysql_query(chuỗi Insert). Ví dụ: So mau tin them vao 2.3.3. Cập nhật mẩu tin Để cập nhật mẩu tin, ta cũng sử dụng hàm mysql_query với phát biểu Update thay vì Insert như trên, ví dụ chúng ta khai báo trang update.php để cập nhật mẩu tin trong bảng tblShips với tên là UpdateTesting khi mã có giá trị là A01. So mau tin cap nhat 2.3.4. Xóa mẩu tin Để xóa mẫu tin ta sử dụng phát biểu SQL dạng Delete. Ví dụ: sql=Delete From tblships where ShipID=A01; result = mysql_query(sql,link); affectrow=0; 2.3.5. Truy vấn dữ liệu Để truy vấn dữ liệu ta sử dụng hàm mysql_num_rows để biết được số mẩu tin trả về và hàm mysql_fetch_array để đọc từng mẩu tin và mảng sau đó trình bày giá trị từ mảng này. Ví dụ: