Xây dựng website giới thiệu tin tức và sản phẩm của công ty máy tính việt cường
Trang 1Cô giáo Th.S Nguyễn Thị Mai Phương đã tận tình hướng dẫn, giúp đỡ emtrong quá trình làm báo cáo thực tập Cô luôn nhắc nhở, chỉ bảo, động viên mỗikhi em gặp khó khăn.
Em xin gửi lời cảm ơn tới gia đình, bạn bè đã động viên, giúp đỡ em trongthời gian học tập và làm đề tài thực tập này
Do thời gian thực tập có hạn, kiến thức và kinh nghiệm của em còn hạnchế Vì vậy trong báo cáo không thể tránh khỏi những khuyết điểm và thiếu sót
Em rất mong nhận được sự chỉ bảo của thầy cô, sự góp ý của bạn bè để đề tàiđược hoàn thiện hơn, có khả năng ứng dụng trong thực tế
Em xin chân thành cảm ơn !
Thái Nguyên, ngày 29 tháng 08 năm 2012
Sinh viên thực hiện
Trang 2MỤC LỤC
LỜI CẢM ƠN 1
MỤC LỤC 2
LỜI MỞ ĐẦU 2
CHƯƠNG 1 : CỞ SỞ LÝ THUYẾT 3
1.1 Tìm hiểu về PHP 4
1.1.1.Giới thiệu PHP 4
1.1.2 Biến, hằng số, và kiểu dữ liệu trong PHP 6
1.1.3 Các toán tử 9
1.1.4 Các câu lệnh điều khiển 11
1.1.5 Hàm trong PHP 15
1.1.6 Biến mảng trong PHP 16
1.1.7 Lập trình hướng đối tượng (OOP) 19
1.2 Tìm hiểu về MySQL 22
1.2.1 Giới thiệu về MySQL 22
1.2.2 Các hàm cơ bản làm việc với cơ sở dữ liệu MySQL 22
1.3 Tìm hiểu về Joomla 29
1.3.1 Giới thiệu về Joomla 29
1.3.2 Giao diện và các thành phần cơ bản của Joomla 33
1.3.3 Ứng dụng của Joomla 38
CHƯƠNG 2: KHẢO SÁT, PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 40
2.1 Khảo sát hiện trạng 40
2.1.1 sự hình thành và phát triển 40
2.1.2 Lĩnh vực hoạt động kinh doanh 40
2.2 Khảo sát quy trình tác nghiệp 41
2.3 Xác định các tác nhân và ca sử dụng 42
2.4 Phân tích hệ thống 43
2.4.1 Biểu đồ USER CASE 43
2.4.2 Đặc tả chi tiết từng ca sử dụng 44
2.4.3 Sơ đồ lớp thực thể 67
2.5 Chi tiết các bảng dữ liệu 69
CHƯƠNG 3: XÂY DỰNG WEBSITE 72
3.1 Trang chủ 72
3.2 Tin công nghệ 72
3.3 Tin khuyến mãi 73
3.4 Tin công ty 74
3.5 Sản phẩm 74
3.6 Chi tiêt tin tức 75
3.7 Chi tiết sản phẩm 76
3.8 Thêm bài viết 76
3.9 Thêm sản phẩm 77
KẾT LUẬN 77
Trang 3LỜI MỞ ĐẦU
Trong sự phát triển không ngừng của xã hội thì nhu cầu của con người vềcuộc sống ngày càng cao.Từ ý nghĩa thực tế đó mà đã nảy sinh ra nhiều loại hìnhdịch vụ để phần nào đáp ứng được những nhu cầu thiết yếu của con người Cácdịch vụ đó đa dạng về nhiều mặt với nhiều cách đáp ứng khác nhau Và một loạihình dịch vụ khá phổ biến hiện nay đó là giới thiệu sản phẩm qua mạng
Hiện nay các công ty tin học hàng đầu thế giới không ngừng đầu tư cảithiện các giải pháp cũng như các sản phẩm nhằm cho phép tiến hành thương mạihóa trên Internet Ở Viêt Nam cũng có rất nhiều doanh nghiệp đang tiến hànhthương mại hóa trên internet, nhưng do khó khăn về cơ sở hạ tầng viễn thông vẫnchưa phát triển mạnh, các dịch vụ thanh toán điện tử qua ngân hàng chưa phổbiến nên chỉ dừng lại ở mức độ giới thiệu sản phẩm và tiếp nhận đơn đặt hàngthông qua trang web
Là một sinh viên ngành công nghệ thông tin, sau một thời gian thực tập, dưới sựhướng dẫn tận tình của cô Nguyễn thị Mai Phương em đã thu được một số kết quả Sauđây em xin báo cáo kết quả đã thu thập được trong thời gian vừa qua
Trang 4 Cộng đồng hỗ trợ, chia sẽ kinh nghiệm của PHP cũng rất dồi dào Với rấtnhiều diễn đàn, blog trong và ngoài nước nói về PHP đã khiến cho quá trìnhtiếp cận của người tìm hiểu PHP được rút ngắn nhanh chóng.
Thư viện phong phú:
Trang 5 Ngoài sự hỗ trợ của cộng đồng, thư viện script PHP cũng rất phong phú và
đa dạng Từ những cái rất nhỏ như chỉ là 1 đoạn code, 1 hàm (PHP.net…) chotới những cái lớn hơn như Framework (Zend, CakePHP, CogeIgniter,
Symfony…) ,ứng dụng hoàn chỉnh (Joomla, Wordpress, PhpBB…)
Với thư viện code phong phú, việc học tập và ứng dụng PHP trở nên rất dễdàng và nhanh chóng Đây cũng chính là đặc điểm khiến PHP trở nên khá nổi bật và cũng là nguyên nhân vì sao ngày càng có nhiều người sử dụng PHP để phát triển web
Hỗ trợ kết nối nhiều hệ cơ sở dữ liệu:
Nhu cầu xây dựng web có sử dụng cơ sở dữ liệu là một nhu cầu tất yếu vàPHP cũng đáp ứng rất tốt nhu cầu này Với việc tích hợp sẵn nhiều DatabaseClient trong PHP đã làm cho ứng dụng PHP dễ dàng kết nối tới các hệ cơ sở
dữ liệu thông dụng
Việc cập nhật và nâng cấp các Database Client đơn giản chỉ là việc thaythế các Extension của PHP để phù hợp với hệ cơ sở dữ liệu mà PHP sẽ làmviệc
Một số hệ cơ sở dữ liệu thông dụng mà PHP có thể làm việc là: MySQL,
MS SQL, Oracle, Cassandra…
Lập trình hướng đối tượng:
Ngày nay, khái niệm lập trình hướng đối tượng (OOP) đã không còn xa lạvới lập trình viên Với khả năng và lợi ích của mô hình lập trình này nênnhiều ngôn ngữ đã triển khai để hỗ trợ OOP
Từ phiên bản PHP 5, PHP đã có khả năng hỗ trợ hầu hết các đặc điểm nổibật của lập trình hướng đối tượng như là Inheritance, Abstraction,Encapsulation, Polymorphism, Interface, Autoload…
Với việc ngày càng có nhiều Framework và ứng dụng PHP viết bằng môhình OOP nên lập trình viên tiếp cận và mở rộng các ứng dụng này trở nên dễdàng và nhanh chóng
Tính bảo mật:
Trang 6 Bản thân PHP là mã nguồn mỡ và cộng đồng phát triển rất tích cực nên cóthể nói PHP khá là an toàn.
PHP cũng cung cấp nhiều cơ chế cho phép ta triển khai tính bảo mật choứng dụng của mình như session, các hàm filter dữ liệu, kỹ thuật ép kiểu, thưviện PDO (PHP Data Object) để tương tác với cơ sở dữ liệu an toàn hơn
Kết hợp với các kỹ thuật bảo mật ở các tầng khác thì ứng dụng PHP sẽ trởnên chắc chắn hơn và đảm bảo hoạt động cho website
Khả năng mở rộng cho PHP:
năng mở rộng cho ứng dụng PHP có thể nói là không có giới hạn
Với thư viện phong phú và khả năng mở rộng lớn, ứng dụng PHP có thểtương tác với hầu hết các loại ứng dụng phổ biến như xử lý hình ảnh, nén dữliệu, mã hóa, thao tác file PDF, Office, Email, Streaming…
Ta hoàn toàn có thể tự xây dựng cho mình các Extension để tối ưu, bổsung các chức năng cho PHP cũng như tối ưu luôn Core của PHP để phục vụcho các mục đích mở rộng website của mình
1.1.2 Biến, hằng số, và kiểu dữ liệu trong PHP
Ví dụ: 2 // đây là kiểu integer
1.0// đây là kiểu double
“2” // đây là kiểu string
“2 hous” // đây là kiểu string
Trang 7 các hằng số đã được định nghĩa trong PHP:
Để hỗ trợ người lập trình, PHP cung cấp sẵn các hằng số như: các biếnmôi trường, các biến của web server apache… người lập trình có thể sử dụnghàm phpinfo() để xem các giá trị này
– Hằng số nguyên: đây là những giá trị có kiểu integer Ví dụ: 10
– Hằng số thực: đây là những giá trị có kiểu double Ví dụ: 10.00
– Hằng kí tự: đây là một xâu kí tự được đặt trong dấu ngoặc đơn hoặckép
Ví dụ: “ngôn ngữ lập trình PHP”
c Biến và giá trị logic
Cũng giống với C/C++, PHP không có khái niệm TRUE và FALSE
Các giá trị TRUE được hiểu là những giá trị bằng 1, và giá trị FALSE lànhững giá trị bằng 0 hoặc xâu rỗng
Trang 8 Khi sử dụng biến chúng ta không cần khai báo kiểu.
Ví dụ: $a = 1; //$a là một biến kiểu integer
$a = 1.2 // bây giờ $a là biến kiểu double
Nếu như thực hiện phép toán giữa biến có kiểu số và kiểu string PHP sẽcoi chuỗi là một dãy như sau:
$str = “222 B Baker Street”;
Ta thấy biến $str có kiểu string, và nếu cộng số 3 với giá trị này thì:
$x = 3 + $str; // $x = 225Khi đó $x nhận được giá tri 225 vì PHP đã cộng 3 với 3 số đầu nhưng nếu
ta in giá trị của $str thì:
Echo($str); // print:” 222 B Baker Street”
Chú ý rằng các phép toán và chuỗi chỉ đúng khi kí tự đầu là số
Ta cũng có thể thay đổi kiểu giá trị của một biến bằng cách ép kiểu
Ví dụ: $a = 11.2;
$a = (int)$a;
Các hàm làm việc với biến:
Gettype(): hàm này trả lại kiểu của một biến nào đó Giá trị trả về cóthể là: ”integer”, “double”, “string”,…
Settype(): hàm này ép kiểu cho một biến nào đó Nếu thành công giátrị trả về la 1, ngược lại là 0
Isset() và unset(): hàm isset() kiểm tra một biến đã được gán giá trị haychưa, hàm unset() sẽ giải phóng bộ nhớ cho một biến nào đó
Empty(): cũng giống hàm isset(), hàm empty() sẽ trả về giá trị 1(true)nếu một biến là rỗng và ngược lại 0 (false) Đối với biến có kiểu số, giá trị bằng 0được coi là rỗng
Ví dụ:
Trang 9Echo empty($new); //true
Ta có thể viết các phép toán ngắn gon như bảng sau:
Kiểm tra $h có nhỏ hơn $ikhông
Kiểm tra $h có lớn hơn $i
Trang 10Kiểm tra $h có nhỏ hơn hoặcbằng $i không
Kiểm tra $h có khác $i khôngKiểm tra $h có khác $i khôngCác phép so sánh thường dùng kiểm tra điều kiện trong các câu lệnh điềukhiển mà ta sẽ học ở bài sau
1010
1000
1110
0011
0101
Các phép toán với biến kiểu string
Ta sử dụng dấu “.” để ghép 2 biến kiểu string với nhau
Để có thể chèn một biến vào trong toán hạng có kiểu string thì tên biếnphải để trong dấu đóng mở ngoặc nhọn
Echo(“${last}’s bycycles”);
Các phép toán thao tác mức bit
Các phép toán thao tác mức bit tác động lên từng bit của toán hạng
Trang 11& Kết quả | Kết quả ^ Kết quả
1|11|01|10|0
1110
1^11^00^10^0
0110
Các phép toán tăng giảm:
– phép tăng: phép tăng (toán tử tăng) tăng giá trị của toán hạng lên mộtđơn vị
– phép giảm: tương tự phép tăng, khác là giá trị bị giảm đi một đơn vị.– phép toán điều kiện ?: phép toán điều kiện cùng với toán hạng tạo nênbiểu thức điều kiện
ta kí hiệu e1, e2,e3 là 3 toán hạng
Biểu thức có dạng: e1 ? e2 : e3
Nếu e1 !=0 thì giá trị của biểu thức điều kiện là e2
Nếu e1 ==0 thì giá trị của biểu thức điều kiện là e3
1.1.4 Các câu lệnh điều khiển
a Lệnh if_else: đây là lệnh rẽ nhánh có điều kiện
– Nếu biểu thức khác 0 thì câu lệnh được thực hiên
– Nếu biểu thức bằng 0 thì câu lệnh không được thực hiên
if ( biểu thức )
Trang 12câu lệnh 1;
else
câu lệnh 2;
ý nghĩa:
– Nếu biểu thức khác 0 thì câu lệnh 1 được thực hiên
– Nếu biểu thức bằng 0 thì câu lệnh 2 được thực hiên
Trang 13 Nếu biểu thức n = ni (I = 1,…, n) thì câu lệnh sau case ni được thực hiệncho đến khi gặp break hoặc dấu ngoặc “}”
Nếu biểu thức n = ni (I = 1,…, n) mà có nhánh default thì các câu lệnh saudefault được thực hiện
Nếu biểu thức 2 khác 0 thì thực hiện câu lệnh và sang bước 3
Nếu biểu thức 2 bằng 0 thì kết thúc vòng for
Bước 3: tính biểu thức 3 và quay lại bước 2
Biểu thức 1, biểu thức 2, biểu thức 3 là các thành phaanfmooix thành phần
có thể gồm nhiều biểu thức khi đó mỗi biểu thức được viết cách nhau mộtdấu phẩy (“,”)
Các biểu thức được tính lần lượt từ trái qua phải
Biểu thức trong biểu thức 2 quyết định thực hiện thân của for
Có thể vắng mặt bất cứ thành phần nào Nếu vắng mặt biểu thức 2 thì câulệnh luôn được thực hiện mặc dù vắng mặt nhưng vẫn luôn phải có dấu chấmphẩy (“,”)
Nếu vắng mặt biểu thức 1 và biểu thức 3 thì:
For (;biểu thức 2;) câu lệnh;
Tương đương với:
While(biểu thức 2) câu lệnh;
d Câu lệnh WHILE
Trang 14Bước 2: thực hiện câu lệnh.
Quay lại bước 1
Chú ý:
Biểu thức có thể bao gồm nhiều biểu thức khi đó biểu thức được viết cáchnhau một dấu phẩy, và được tính lần lượt từ trái qua phải biểu thức cuối cùngquyết định thực hiện câu lệnh
không được phếp vắng mặt biểu thức
Để tạo chu trình vô tận thì
While (1)
If (biểu thức) break;
…}
Trang 15Lệnh do… while là lệnh tạo chu trình có điều kiện, trong đó điều kiệnthực hiện chu trình được kiểm tra ở cuối chu trình.
Hoạt động:
Bước 1: thực hiện câu lệnh
Bước 2: tính biểu thức biểu_thức
Nếu biểu thức biểu_thức khác 0 thì quay lại bước 1
Nếu biểu thức biểu_thức bằng 0 thì kết thúc vòng lặp
bộ thân của lệnh tạo chu trình
h Khai báo tiền sử lý include và require
Để sử dụng các đoạn mã ở bên ngoài, chúng ta có thể sử dụng khai báotiền sử lý include và require Cho phép chúng ta xây dựng các hàm, các hằng số,
và bất kỳ đoạn mã nào sau đó có thể chèn vào các đoạn script
Trang 16 Định nghĩa hàm không nhất thiết phải nằm ngoài thân mọi hàm, trong hàm
có thể có hàm khác Nhưng việc sử dụng một hàm không khác nhau giữa xâydựng hàm trong thân một hàm và ngoài mọi hàm
Tên hàm tùy đặt và khác tên hàm chuẩn
Hàm có thể có giá trị trả về hoặc không
Các câu lệnh được quyền gọi bất kỳ hàm nào đã được khai báo và đã đượcđịnh nghĩa
Return : - Trả một giá trị về cho nơi gọi hàm
- Là nơi báo kết thúc hàm
b Gọi hàm
Hàm phải được xây dựng trước khi gọi
Khi gọi hàm, nếu có giá trị trả về thường được đặt trong biểu thức
c Biến toàn cục và biến cục bộ
Thông thường PHP côi các biến được sử dụng trong thân của hàm là biếncục bộ nghĩa là biến trong thân hàm không làm thay đổi giá trị của biến ở ngoàihàm đó Muốn làm thay đổi giá trị của biến ngoài ta cần khai báo global trướcbiến đó trong thân hàm
1.1.6 Biến mảng trong PHP
a Mảng một chiều
Mảng là một biến bao gồm nhiều phần tử có cùng tên nhưng khác nhau vềchỉ số (các chỉ số này tăng dần từ 0 đến n) với ngôn ngữ lập trinh C, các phần tửcủa mảng có cùng kiểu dữ liệu, nhưng với PHP thì mềm dẻo hơn Các phần tửcủa mảng không nhất thiết phải cùng kiểu
Khai báo mảng một chiều
Ta có thể khai báo mảng bằng cách gán tên mảng với dấu đóng mở ngoặcvuông không có chỉ số
Trang 17$mang = array(“cr”,”de”,”us”);
Để chỉ số không bắt đầu từ 0 ta có thể khai báo lại như sau
$mang = array(1 => “cr”, “de”, “us”);
Toán tử => có thể được sử dụng trước bất kỳ một phần tử nào trong mảng
Ví dụ: $mang = array(“cr”, 7 => “de”,”uk”);
Khi đó phần tử có giá trị “cr” có chỉ số là 0, còn phần tử có giá trị”de”,
“us” lần lượt là 7 và 8 khác với ngôn ngữ lập trình C, chỉ số của mảng một chiềukhông chỉ là các số nguyên mà còn là xâu kí tự
Làm việc với các phần tử của mảng
Trang 18Chúng ta có thể khai báo mảng 2 chiều như sau:
$mang = array (“urops” => array (“de”, “uk”), “north america” => array(“ca”, “cr”, “us”));
Echo ($mang[“europs”][1]);
Ta có cấu trúc của mảng trên như sau:
Cũng giống như mảng một chiều ta sẽ dùng vòng lặp for, while, do…while để duyệt qua các phần tử của mảng
c Các hàm sắp xếp mảng
PHP cung cấp cho chúng ta các hàm để sắp xếp mảng với mỗi loại mảng
sẽ có một hàm tương ứng Với mảng có chỉ số là kiểu nguyên chúng ta có hàmsort() sẽ sắp xếp các phần tử của mảng giảm dần
Trang 19Với mảng có chỉ số kiểu string thì dunggf hàm asort() và rsort() thì các chỉ
số có kiểu string sẽ chuyển thành các chỉ số kiểu nguyên
Đẻ sắp xếp mảng tăng dần hay giảm dần theo chỉ số, chúng ta có hàmksort() – tăng dần và krsort() – giảm dần
1.1.7 Lập trình hướng đối tượng (OOP)
// định nghĩa các thuộc tính và phương thức// xây dựng các phương thức cho lớp
// kết thúc một lớp}
Var $sqlhost = “localhost”;
Var $sqluser = “root”;
Var $sqlpass = “password”;
Trang 20Var $sqldb = “session”;
…// Định nghĩa các phương thức ở đây} // kết thúc định nghĩa lớp
?>
Tiếp theo chúng ta sẽ định nghĩa các phương thức cho lớp trên
Phương thức cần xây dựng đầu tiên là session(), sau đó đến các phươngthức khác
Trang 21}}
Require(“classes/session.php”); //include class
$mysesh = new session($seshid);
<a href=”nextpage.php?seshid=<? Print $user ?>”>next page</a>
<FORM ACTION=”nextpage.php” METHOD=”post”>
<input type=”hidden” name=”seshid” value=”<? Print $seshid?>”>
Trang 22</body>
</html>
1.2 Tìm hiểu về MySQL.
1.2.1 Giới thiệu về MySQL
PHP hỗ trợ một số lượng lớn các hàm làm việc với cơ sở dữ liệu như:Oracle, Sybase, PostgreSQL, MySQL,… thông qua chuẩn ODBC, bằng cách sửdụng các hàm API mà PHP có thể làm việc được với nhiều hệ quản trị cơ sở dữliệu như vậy Nếu hệ quản trị cơ sở dữ liệu không hỗ trợ ODBC, và hơn nữaODBC có đặc điểm chỉ hỗ trợ ở dạng chuẩn thì PHP có thể làm việc với ODBC ởtầng trên Nếu không muốn sử dụng ODBC, ta có thể sử dụng các hàm API
Trong phần này chúng ta chỉ sử dụng các hàm API để làm việc với hệquản trị cơ sở dữ liệu MySQL
1.2.2 Các hàm cơ bản làm việc với cơ sở dữ liệu MySQL
a các hàm kết nối đến MySQL SERVER
PHP cung cấp 2 hàm để kết nối với cơ sở dữ liệu MySQL: mysql_connect
– hostname: tên máy chủ cơ sở dữ liệu, nơi trang web sẽ chứa cơ sở
dữ liệu giá trị ngầm định là “localhost”
– post : dịa chỉ cổng, nơi bộ máy cơ sở dữ liệu lắng nghe yêu cầu giátrị ngầm ddingj là “:3306”
Trang 23– path_to_socket : cũng giống như :post nhưng chỉ cho hệ điều hànhUNIX Giá trị ngầm định là “:/tmp/mysql.sock”.
– Username: tên của người sử dụng được phép kết nối vào bộ máy cơ
Sự kết nối này sẽ đóng lại khi gọi hàm mysql_close() hoặc kết thúc đoạnPHP Script
mysql_pconnect(): hàm này tạo ra một liên kết bền vững với máy chủMySQL
Cú pháp:
Int mysql_pconnect (string [hostname [:post] [:/path_to_socket]],string[username], string [password]);
Tham số và giá trị trả về của hàm này cũng giống hàm mysql_connect()
Sự khác biệt giữa 2 hàm này là liên kết tới máy chủ MySQL không bị đóng lại kể
cả khi kết thúc kịch bản PHP hay gọi hàm mysql_close() Mục đích của hàm này
là luôn luôn duy trì liên kết tới máy chủ MySQL do luôn có sự yêu cầu tới máychủ, tránh cho máy chủ phải tìm kiếm mã số nhận dạng mới từ đó giảm thời giantruy cập
Chú ý: hàm này chỉ thực hiện được khi PHP được định cấu hình như làmột module của web server
mysql_close(): hàm này hủy bỏ sự kết nối tới máy chủ MySQL
Cú pháp:
Int mysql_close(int [link_identifier]);
Trang 24Tham số link_ identifier là mã số nhận dạng tạo ra bởi hàmmysql_connect() Hàm trả về là true nếu thành công, ngược lại là false.
– string name: tên của cơ sở dữ liệu cần tạo
– link_identifier: mã số nhận dạng được cấp bởi hàm mysql_connect()
Ta hoàn toàn có thể gửi câu lệnh SQL để tạo cơ sở dữ liệu thông qua hàmmysql_query()
mysql_drop_db():hàm xóa cơ sở dữ liệu
Cú pháp:
Int mysql_drop_db(string name, int [link_identifier]);
Trong đó:
– string name: tên cơ sở dữ liệu cần xóa
– link_identifier: mã số nhận dạng được cấp bởi hàm mysql_connect()
Ta hoàn toàn có thể gửi câu lệnh SQL để xóa cơ sở dữ liệu thông qua hàmmysql_query()
mysql_select_db():hàm cho cơ sở dữ liệu hoạt động
Trang 25– link_identifier: mã nhận dạng được cấp bởi mysql_connect().
Câu lệnh này sẽ gắn tên cơ sở dữ liệu với mã nhận dạng, sau này khi làmviệc với link_identifier sẽ bao gồm cả cơ sở dữ liệu được chọn
C Các hàm thao tác trên cơ sở dữ liệu
mysql_query(): hàm gửi câu lệnh SQL tới máy chủ MySQL
Cú pháp:
Int mysql_query(string query,[int link_identifier]);
Trong đó:
– string query :câu lệnh SQL cần gửi tới máy chủ MySQL
– link_identifier: mã số nhận dạng, nó phải được thực hiện trong hàmmysql_select_db()
mysql_db_query(): hàm gửi câu lệnh SQL tới máy chủ MySQL
Trang 26Trong đó:
– link_identifier: mã số nhận dạng được cấp bởi hàm mysql_connect().– Hàm này trả về giá trị id được sinh ra trong cộtAUTO_INCREMENT bởi câu truy vấn trước đó Điều này chỉ có tác dụngtrên link_identifier được chỉ ra trong hàm, nếu gọi hàm trên mà không chỉđịnh tham số link_identifier thì lien kết được mở cuối cùng sẽ được chỉđịnh
Hàm mysql_insert_id() trả về giá trị 0 nếu câu truy vấn trước đó khôngsinh ra một giá trị AUTO_INCREMENT Nếu ta muốn giữ lại giá trị cho lần sau,thì phải gọi hàm này ngay sau câu truy vấn sinh ra giá trị
mysql_fetch_row():
Hàm trả về một mảng là giá trị của một bản ghi hiện tại với chỉ số là thứ
tự của các trường (chỉ số bắt đầu từ 0) Sau đó hàm sẽ trỏ tới bản ghi tiếp theocho tới khi gặp bản ghi cuối cùng hàm trả về giá trị false Để truy xuất tới các giátrị của cột ta viết : tên_mảng[số thứ t]
Cú pháp:
Array mysql_fetch_row(int result_identifier);
Trong đó : result_identifier là mã số trả về của hàm mysql_query() hoặcmysql_db_query()
mysql_fetch_array():
Hàm trả về một mảng là giá trị của một bản ghi hiện tại, sau đó hàm sẽ trỏtới bản ghi tiếp theo cho tới khi gặp bản ghi cuối cùng hàm trả về giá trị false
Cú pháp:
Array mysql_fetch_array(int result_identifier,[int result_type]);
Trong đó: result_identifier là mã số trả về của hàm mysql_query() hoặcmysql_db_query()
Để truy xuất đến các thành phần của cột:
Trang 27Tên_biến_mảng[“tên trường”];
Result_type là một hằng số có thể nhận các giá trị sau:
– MYSQL_NUM: chỉ trả lại một mảng chứa các chỉ số là số (giốngnhư hàm mysql_fetch_row())
– MYSQL_ASSOC: chỉ trả lại một mảng liên kết
– MYSQL_BOTH : trả lại mảng chứa đựng các chỉ số gồm cả các con
số và chỉ số liên kết
Hàm này là sự mở rộng của hàm mysql_fetch_row() Nó cho phép truycập trường dữ liệu của mảng kết quả không chỉ thông qua các chỉ số là các số màchúng có thể là tên của các trường dữ liệu
mysql_fetch_object(): hàm trả về nột đối tượng là giá trị của một bản ghihiện thời sau đó hàm sẽ trỏ tới bản ghi tiếp theo cho tới khi gặp bản ghi cuốicùng hàm trả về giá trị false Để truy xuất tới các giá trị của cột ta viếttên_object->tên_cột
Cú pháp:
Object mysql_fetch_object(int result_identifier);
Trong đó: result_identifier là mã số trả về của hàm mysql_query() hoặcmysql_db_query()
mysql_fetch_assoc(int result_identifier): lấy về một dòng kết quả như làmột mảng liên kết
Cú pháp: array mysql_fetch_row(int result_identifier)
Trong đó: result_identifier là mã số trả về của hàm mysql_query() hoặcmysql_db_query()
Hàm trả về một mảng tương ứng với một bản ghi được lấy về và trả lạiFALSE, nếu không có bản ghi nào Hàm này tương đương với hàm Arraymysql_fetch_array() với tham số result_type là : MYSQL_ASSOC
mysql_data_seek()
Trang 28Di chuyển con trỏ bên trong “tập kết quả” (có được sau khi câu truy vấnSELECT được thực hiện)
Cú pháp: bool mysql_data_seek(int result_identifier, int row_number);
Trong đó: result_identifier là mã số trả về của hàm mysql_query(),mysql_db_query(), mysql_list_tables(), mysql_list_dbs()
Row_number là chỉ số của bản ghi mà cần đặt con trỏ vào
Hàm trả về true nếu thành công, false nếu lỗi
Hàm này sẽ di chuyển con trỏ bên trong “tập kết quả” (được chỉ rõ bởitham số result_identifier) đến dòng có mã bằng tham đối row_number
Các dòng trong tập kết quả được bắt đầu bằng 0
mysql_num_rows(): trả lại số dòng trong result_identifier (nơi chứa kếtquả của câu lệnh SQL đã được thực hiện)
Cú pháp: mysql_num_rows(result_identifier);
Trong đó: result_identifier là mã số trả về của hàm mysql_query(),mysql_db_query(), mysql_list_tables(), mysql_list_dbs()
mysql_affected_row()
Cú pháp: int link_ affected_row(int [link_identifier]);
Trong đó: int link_identifier là mã số nhận dạng, nó phải được thực hiện tronghàm mysql_select_db() trước đó
Hàm trả về số dòng đã bị tác động bởi một câu truy vấn SQL : INSERT,UPDATE, DELETE trước đó theo tham số link_ identifier Nếu link_ identifierkhông được chỉ định thì mã kết nối trước đó sẽ được chỉ định
mysql_result() : lấy dữ liệu từ result_identifier
Cú pháp: mixed mysql_result(int result_identifier, int row, mixed [field]);
Trong đó: result_identifier la mã số trả về của hàm mysql_query(),mysql_db_query(), mysql_list_tables(), mysql_list_dbs()
Trang 29Row là bản ghi mà ta sẽ lấy dữ liệu
Field là trường trong dòng row mà ta sẽ lấy dữ liệu
Các tham số result_identifier và row phải có, còn tham số field là tùychọn hàm sẽ trả lại các nội dung của dòng row và cột field rừ tập kết quả đượcchỉ định bởi biến result_identifier Nếu đối số field không được chỉ định rõ thìtrường tiếp theo sẽ được trả về
mysql_free_result() : hàm giải phóng bộ nhớ được lien kết vớiresult_identifier
Cú pháp: mysql_free_result(int result_identifier);
Trong đó: result_identifier là mã số trả về của hàm mysql_query(),
mysql_db_query(), mysql_list_tables(), mysql_list_dbs()
Hàm này chỉ được dùng nếu như ta đánh giá thấy kịch bản sử dụng quánhiều bộ nhớ khi đang chạy gọi hàm này trên một trình xử lý kết quả sẽ giảiphóng toàn bộ dữ liệu liên kết trong bộ nhớ
1.3 Tìm hiểu về Joomla
1.3.1 Giới thiệu về Joomla
a Joomla là gì?
Joomla là một hệ quản trị nội dung mã nguồn mở (Tếng Anh : Open
Source Content Management Systems Joomla được viết bằng ngôn ngữ PHP và
kết nối tới cơ sở dữ liệu MySQL , cho phép người sử dụng có thể dễ dàng xuấtbản các nội dung của họ lên Internet hoặc Intranet
b Lịch sử phát triển Joomla
Joomla! là "sản phẩm anh em" với Mambo giữa tập đoàn Miro của Úc(hãng đang nắm giữ Mambo), với phần đông những người phát triển nòng cốt
Ban đầu công ty Miro của Úc (tiếng Anh: Miro Software Solutions) đã
phát triển Mambo theo dạng ứng dụng mã nguồn đóng Đến tháng 4 năm 2001,
Trang 30công ty đã thông qua một chính sách bản quyền kép, nghĩa là phát hành Mambotheo cả giấy phép GPL.
Mọi thứ vẫn tiến triển bình thường cho đến trước khi xảy ra tranh chấp vềmặt pháp lý vào năm 2003 Vụ việc dẫn tới ý tưởng Mambo cần phải được bảo
vệ bởi một tổ chức phi lợi nhuận Nhưng những nhà phát triển không hài lòng về
cơ cấu của Quỹ tài trợ Mambo Andrew Eddie, người lãnh đạo nhóm phát triển,trong một lá thư gửi cộng đồng[4], đã chia sẻ những lo lắng của mình về Quỹ tàitrợ Mambo và mối quan hệ của nó tới cộng đồng Ông viết: " Chúng tôi chorằng tương lai của Mambo nên được quản lý, điều chỉnh bởi những yêu cầu củangười sử dụng và khả năng của những nhà phát triển Trong khi đó, Quỹ tài trợMambo lại được thiết kế nhằm trao quyền điều khiển cho Miro, một thiết kế ngăncản sự hợp tác giữa Quỹ tài trợ và cộng đồng " Bởi vậy vào ngày 17 tháng 8năm 2005, toàn bộ đội phát triển nòng cốt của Mambo đã rời khỏi dự án trongkhi đang làm việc với phiên bản 4.5.3
Nhờ sự trợ giúp của Trung tâm Luật Tự do Phần mềm (Software Freedom
Law Center - SFLC), 20 thành viên nòng cốt cũ của Mambo đã thành lập một tổ
chức phi lợi nhuận khác lấy tên là Open Source Matters, để hỗ trợ về mặt tổchức, pháp lý và kinh phí cho dự án mã nguồn mở còn chưa được đặt tên của họ.Cùng lúc đó, nhóm phát triển cũng lập một website lấy tên OpenSourceMatters
để phân phối thông tin tới những người sử dụng, những người phát triển, nhữngngười thiết kế và cộng đồng Joomla nói chung Người đứng đầu dự án chính làAndrew Eddie, còn được biết đến với tên gọi "Sếp trưởng"
Ngay ngày hôm sau, 1000 người đã gia nhập diễn đàn Open SourceMatters, hầu hết các bài viết cho diễn đàn đều khuyến khích và đồng tình vớihành động của Nhóm Phát triển Tin trên đã nhanh chóng được đăng tải trên các
tạp chí newsforge.com, eweek.com và ZDnet.com.
Trong một thông báo của Eddie 2 tuần sau đó, các nhóm đã được tổ chứclại và cộng đồng Joomla! tiếp tục tăng trưởng Tới ngày 1 tháng 9 năm 2005 tên
Trang 31mới của dự án đã được thông báo cho khoảng 3000 người theo dõi đội Phát triển
và đến ngày 16 tháng 9 thì họ cho ra đời Joomla! 1.0
c Các phiên bản của Joomla
Hiện Joomla! có 2 dòng phiên bản chính:
Các phiên bản tiếp theo có dạng 1.0.x
Điểm mạnh của Joomla! 1.0.x: Có một số lượng rất lớn các thành phần mở
rộng (module/component); thành phần nhúng (mambot); giao diện (template).
Dòng phiên bản 1.5.x
Phiên bản Joomla! 1.5[6] là phiên bản cải tiến từ Joomla! 1.0.x (phần mãđược viết lại hoàn toàn, tuy nhiên vẫn giữ cách hành xử như cũ) được coi như
Trang 32Mambo 4.6 Joomla! 1.5 tiếp tục duy trì một giao diện người sử dụng đơn giản
(nhìn và cảm nhận - look and feel).
Cả Joomla! 1.5 và Mambo 4.6 đều hỗ trợ đa ngôn ngữ Joomla! thì sửdụng file định dạng ".ini" để lưu các thông tin chuyển đổi ngôn ngữ, còn Mambothì sử dụng file định dạng ".gettext" Joomla 1.5 hỗ trợ tất cả các ngôn ngữ có tập
ký tự được biểu diễn bằng bảng mã UTF-8
Joomla! 1.5 cũng bao gồm các đặc tính mới như các mô hình chứng thực(LDAP, Gmail ), hỗ trợ mô hình khách-chủ[7] xml-rpc Nó cũng hỗ trợ các trìnhđiều khiển cơ sở dữ liệu dành cho MySQL 4.1+ (trên nền PHP 5) và tăng cường
hỗ trợ cho MySQL 5, cũng như hỗ trợ các loại cơ sở dữ liệu khác
Điểm mạnh của Joomla! 1.5: Phần quản trị Website có sử dụng công nghệWeb 2.0, một số tính năng được cải tiến hơn so với Joomla 1.0.x
d Đặc điểm của Joomla
Joomla! có các đặc tính cơ bản là: bộ đệm trang (page caching) để tăng tốc độ hiển thị, lập chỉ mục, đọc tin RSS (RSS feeds), trang dùng để in, bản tin
nhanh, blog, diễn đàn, bình chọn, lịch biểu, tìm kiếm trong site và hỗ trợ đangôn ngữ
Joomla! được sử dụng ở khắp mọi nơi trên thế giới, từ những website cánhân cho tới những hệ thống website doanh nghiệp có tính phức tạp cao, cungcấp nhiều dịch vụ và ứng dụng Joomla! có thể dễ dàng cài đặt, dễ dàng quản
lý và có độ tin cậy cao
Joomla! có mã nguồn mở do đó việc sử dụng Joomla! là hoàn toàn miễnphí cho tất cả mọi người trên thế giới
e Kiến trúc của Joomla
Trang 33Hình 1.1 kiến trúc của JoomlaJoomla! 1.5 gồm có 3 tầng hệ thống:
Tầng dưới cùng là mức nền tảng, chứa các thư viện và các plugin (cònđược biết với tên gọi mambot)
Tầng thứ hai là mức ứng dụng và chứa lớp JApplication Hiện tại tầng này gồm 3 lớp con: JInstallation, JAdministrator và JSite.
Tầng thứ ba là mức mở rộng Tại tầng này có các thành phần (component),
mô đun (module) và giao diện (template) được thực thi và thể hiện.
1.3.2 Giao diện và các thành phần cơ bản của Joomla
Đầu tiên ta đăng nhập vào trang quản lý của website Ở đây có nhiều thẻ khác nhau, đầu tiên chúng ta đi tìm hiểu thẻ đầu tiên là thẻ "Site"
Trong thẻ Site này chúng ta tìm hiểu mục đầu tiên là Control Panel
Trang 34Hình 1.2 Control PanelTrong phần này chúng ta sẽ quản lý tổng quan về website như :
Thêm bài viết mới : Add New Article
Quản lý bài viết : Article Manager
Quản lý nhóm tin : Section Manager
Và ngôn ngữ của website
Chúng ta tìm hiểu sang mục thứ 2 đó là User manager, ở phần này chúng
ta có thể tạo mới user bằng nút " new " và kích hoạt hoặc bỏ kích hoạt bằng nút
"Enabled" và phân quyền cho user tại mục Group
Tiếp theo chúng ta tìm hiểu đến mục Media Manager, tại mục này chophép lưu trứ toàn bộ hình ảnh hoặc là tài liệu cho website
Trang 35Hình 1.4 Global ConfigurationTrong phần này gồm có 3 mục đó là Site, System và Server.
Tại mục site, gồm có Site Settings, tại đây ta có thể lựa chọn tắt hoặc mởwebsite trong khoảng thời gian nào đó.Và để lại tin nhắn khi tắt site
Tại Metadata Settings ta có thể nhập các từ khóa để công cụ tìm kiếm có
thể tìm kiếm thấy website
Tiếp đến là phần Seo Settings, phần này tạo đường dẫn đẹp cho website, talưu ý tính năng này chỉ áp dụng cho website chạy host Linux
Tại mục System, ta tìm hiểu mục Media Settings, tại mục này sẽ là nhữngđịnh dạng file mà chúng ta có thể upload lên website, ta có thể thêm 1 số địnhdạng khác, và dung lượng tối đa có thể upload file lên website, ta cũng có thểchỉnh sửa Tại phần Cache Settings, phần này sẽ làm cho website nhanh thêm30% và có thể bật tắt nó.Tại mục Server chúng ta tìm hiểu phần Mails Settings,tại phần này vì một số host ko hỗ trợ và để an toàn ta chọn SMTP Server tạiMailer
Chúng ta tìm hiểu sang thẻ tiếp theo là thẻ Menu
Trang 36Hình 1.5 MenuTại mục menu manager ta có thể thêm (new), sửa hay xóa menu, và tạimục Menu items ta có thể tạo mới, hoặc sửa, xóa menu con ở trong đó.Khi thêm mới 1 menu con.ta chọn loại hình cho menu đó, như hiển thị bài viếthoặc 1 danh sách các bài viết (Articles), menu để liên hệ (Contacts), menu lấy tin
tự động (rss) từ các trang web các (News Feeds)
Tiếp theo ta sẽ tìm hiểu thẻ "Content"
Hình 1.6 ContentChúng ta tìm hiểu phần Front Page Manager, phần này sẽ hiển thị nhữngnội dung chính trên website, tức là những nội dung thuộc phần Trang chủ củawebsite
Ta tìm hiểu mục Section manager, đây là phần quản lý các nhóm tin, haygọi là các chủ đề, còn phần Category manager là phần quản lý các chủ đề con,
Trang 37các chủ đề con này sẽ nằm trong các chủ đề.Và khi tạo mới các bài viết, ta chọnchủ đề và chủ đề con thích hợp.
Tiếp nữa ta tìm hiểu sang thẻ "Components"
Hình 1.7 Components
Ta có thể thấy trong mã nguồn mở joomla đã có những component có sẵncho website của chúng ta Ta có thể tìm hiểu kỹ hơn và dễ dàng hơn khi sử dụnggiao diện tiếng việt
Tiếp theo ta sẽ tìm hiểu thẻ "Extensions"
Hình 1.8 Extensions
Trang 38Đầu tiên là mục Install/Uninstall, tại mục này ta hoàn toàn có thể cài đặt,tháo gỡ mọi Component, Modules hay Plugin.
Để cài đặt ta chọn ở nút "Chọn tập tin" và dẫn tới file .zip mà làComponent hay Modules ta muốn cài.Còn để tháo gỡ ta chọn sang các mục nhưComponent,Template tick chọn item muốn gỡ bỏ và chọn Uninstall
Mục tiếp theo là Module Manager ,tại mục này ta có thể tạo mới 1module, sửa, xóa Mục kế là Plugin Manager ,đây là những thành phần chạyngầm trong hệ thống mà có thể hỗ trợ cho Component,Modules
Sau đó là mục Template Manager, tại đây ta có thể lựa chọn thay đổi giaodiện cho trang web của mình Và cuối cùng là mục Language Manager, tại mụcnày ta có thể lựa chọn ngôn ngữ cho website của mình
1.3.3 Ứng dụng của Joomla
Joomla được ứng dụng vào:
Các cổng thông tin điện tử hoặc các website doanh nghiệp
Thương mại điện tử trực tuyến
Báo điện tử, tạp chí điện tử
Website của các doanh nghiệp vừa và nhỏ
Website của các cơ quan, tổ chức phi chính phủ
Website các trường học
Trang 39CHƯƠNG 2: KHẢO SÁT, PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
2.1 Khảo sát hiện trạng
2.1.1 sự hình thành và phát triển
Tên công ty: CÔNG TY MÁY TÍNH VIỆT CƯỜNG
Tên viết tắt: VIỆT CƯỜNG COMPUTER
Trụ sở: số 238, đường 353, phường Tân Thành, quận Dương Kinh, thành phố HảiPhòng
Người đại diện: ông Vũ Viết Hùng – Chức vụ: Giám đốc
Điện thoại: 0312695366 – FAX: 0312336688
Website: www.vietcuong.vn
Email: itcuong.hp@gmail.com
Mã số thuế: 2343546346
Số tài khoản: 456 4365 4564565 tại ngân hàng Viettinbank Đồ Sơn
Giấy phép kinh doanh số: 34H43656
Do sở kế hoạch và đầu tư thành phố Hải Phòng cấp ngày 26 tháng 9 năm 2006Vốn điều lệ: 23.000.000.000 VNĐ(hai mươi ba tỷ đồng)
Tổng số cổ phần: 23.000
2.1.2 Lĩnh vực hoạt động kinh doanh
Thông tin và truyền thông
Hoạt động dịch vụ công nghệ thông tin và dịch vụ khác liên quan đến máy