Cùng với việc ứng dụng rộng rãi của công nghệ thông tin trong các ngành kinh tế, xã hội thì nó cũng đang trở thành một công cụ đắc lực hỗ trợ cho công tác quản lý của các đơn vị trong mọ
Trang 1LỜI NÓI ĐẦU
Sự phát triển của công nghệ thông tin đã đem lại những bước tiến nhảy vọt trong nhiều ngành kinh tế cũng như mọi mặt của đời sống xã hội Ở nước ta,
Trang 2công nghệ thông tin đang có những bước phát triển đáng kể từng bước khẳng định vị trí của mình là một ngành kinh tế công nghệ mũi nhọn Cùng với việc ứng dụng rộng rãi của công nghệ thông tin trong các ngành kinh tế, xã hội thì nó cũng đang trở thành một công cụ đắc lực hỗ trợ cho công tác quản lý của các đơn vị trong mọi cấp, mọi ngành.
Hệ thống thông tin, cũng như các hệ thống khác, có một chu trình sống, từ khi được hình thành, trải qua giai đoạn khai thác và sử dụng, cho đến khi được thay thế bằng một hệ thống thông tin khác, mạnh hơn và đầy đủ hơn Quá trình xây dựng là một trong các giai đoạn của vòng đời hệ thống thông tin Quá trình này gồm nhiều bước: nghiên cứu hiện trạng, phân tích thiết kế, cài đặt và thử nghiệm
Đối với website thông tin tuyển dụng giới thiệu việc làm, nhắm giúp phần nào cho người có nhu cầu tiết kiệm được thời gian và công sức mà có thể tìm kiếm được mong muốn tuyển dụng cũng như công việc
CHƯƠNG I : CƠ SỞ LÝ THUYẾT
I. HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU MY SQL
MySQL :
Trang 3MySQL là hệ quản trị cơ sở dữ liệumã nguồn mở phổ biến nhất thế giới 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 MySQL miễn phí hoàn toàn cho nên bạn 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,
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, Tại sao lại sử dụng MySQL:
MySQL từ lâu đã là hệ CSDL được dùng phổ biến nhất với PHP vì tính gọn nhẹ, nhanh, miễn phí và được PHP hỗ trợ sẵn Ổn định, bảo mật, truy xuất cơ sở
dữ liệu nhanh, dễ cài đặt, dễ sử dụng, phù hợp với những phần mềm cơ sở dữ liệu nhỏ, các website thông thường Hiện nay trong số các Website có lưu lượng truy cập lớn thuộc hàng nhất trên Internet, có rất nhiều Website sử dụng liên minh LAMP này "Liên minh" mã mở LAMP đang được coi là một đối trọng với các sản phẩm mã đóng của Microsoft (Windows, IIS, SQL Server, ASP/ASP.NET)
Một số đặc điểm của MySQL
MySQL là một phần mềm quản trị CSDL dạng server-based (gần tương đương với SQL Server của Microsoft) MySQL quản lý dữ liệu thông qua các CSDL, mỗi CSDL có thể có nhiều bảng quan hệ chứa dữ liệu MySQL có cơ chế phân quyền người sử dụng riêng, mỗi người dùng có thể được quản lý một hoặc nhiều CSDL khác nhau, mỗi người dùng có một tên truy cập (user name) và mật khẩu tương ứng để truy xuất đến CSDL Khi ta truy vấn tới CSDL MySQL, ta phải cung cấp tên truy cập và mật khẩu của tài khỏan có quyền sử dụng CSDL đó
- Kết nối vào cơ sở dữ liệu
PHP cung cấp hàm mysql_connect để kết nối vèo MySQL server Cú pháp của hàm này như sau: mysql_connect($server_address, $username, $password)
Trang 4$server_address là địa chỉ của MySQL server, có thể là domain name hoặc IP address, các ví dụ trong bài viết này sẽ dùng giá trị "localhost" cho
$server_address
$username là tên account dùng để login vào MySQL server, các ví dụ trong bài viết sẽ sử dụng giá trị "root" cho $username
$password là mật mã để kết nối vào MySQL server, các ví dụ trong bài viết sẽ
sử dụng "aaa" làm mật mã Hàm mysql_connect sẽ trả về 1 kết nối đến MySQL server nếu như quá trình kết nối thành công, hoặc trả về giá trị FALSE nếu như kết nối không được Để đóng kết nối tới MySQL server, PHP cung cấp hàm mysql_close
//Không kết nối được, thoát ra và báo lỗi
die("không nết nối được vào MySQL server");
} //end if
//đóng kết nối
mysql_close($conn);?>
Chọn cơ sở dữ liệu để làm việc
Sau khi connet vào MySQL server, thao tác tiếp theo là chọn CSDL để làm việc PHP cung cấp cho ta hàm mysql_select_db để làm việc này Cú pháp của hàm này như sau:
mysql_select_db($db_name[, $conn])
Trang 5Với $db_name là tên CSDL cần chọn, $conn là kết nối được thực hiện qua lệnh mysql_connect
- Thực thi một câu lệnh select và lấy kết quả trả về
PHP cung cấp cho ta 3 hàm hữu dụng để thực hiện công việc này:
$result = mysql_query($sql, $conn): thực hiện câu lệnh SQL được cung cấp qua tham số $sql và trả về 1 kết quả kiểu $result (hàm này trả về FALSE nếu như câu lệnh thực hiện không thành công)
mysql_num_rows($result): hàm này trả về số lượng row lấy được qua câu lệnh SELECT (được thực thi bởi hàm mysql_query) trước đó
$row = mysql_fetch_row($result), $row = mysql_fetch_assoc($result): trả về dòng kết quả hiện thời của câu lệnh select và chuyển con trỏ tới dòng tiếp theo (như vậy lệnh gọi mysql_fetch_row hoặc mysql_fetch_assoc tiếp đó sẽ trả về dòng tiếp theo); hoặc giá trị FALSE nếu như không còn dòng nào để trả về nữa Kết quả trả về từ hai hàm này là một mảng
mysql_error($conn): trả về thông báo lỗi của MySQL server nếu như một lệnh trước đó có lỗi Để hiểu rõ hơn công dụng của các hàm trên, đồng thời phân biệt
sự khác nhau giữa 2 hàm mysql_fetch_row và mysql_fetch_assoc, ta cung xem xét các ví dụ sau Các ví dụ của ta sẽ sử dụng table có tên là mk_managers với các trường và dữ liệu như sau: useranem, password
Hàm mysql_fetch_row() sẽ trả về 1 array mà phần tử thứ [0] sẽ tương ứng với cột đầu tiên của table, phần tử thứ [1] sẽ tương ứng với cột thứ hai của table Chương trình trên sẽ in ra ra 4 dòng:
Trang 6//Không kết nối được, thoát ra và báo lỗi
die("không nết nối được vào MySQL server: ".mysql_error($conn));
} //end if
//chọn CSDL để làm việc
mysql_select_db($DBNAME, $conn)
or die("Không thể chọn được CSDL: ".mysql_error($conn));
$sql = "SELECT * FROM `mk_managers`";
$result = mysql_query($sql, $conn);
if ( !$result )
die("Không thể thực hiện được câu lệnh SQL: ".mysql_error($conn));echo "Số lượng row tìm được: ".mysql_num_rows($result)."<br>\n";
while ( $row = mysql_fetch_assoc($result) ) {
echo "Username = ".$row['username']."<br>\n";
echo "Password = ".$row['password']."<br>\n";
} //end while
//nên luôn giải phóng bộ nhớ sau khi lấy hết các row trả về từ câu lệnh SELECT
mysql_free_result($result);
Trang 7- Thực thi câu lệnh update, insert hoặc delete
Hàm mysql_query cũng được dùng để thực thi các câu lệnh DELETE, INSERT hoặc UPDATE, nhưng lúc này hàm sẽ trả về TRUE nếu câu lệnh thực hiện thành công và FALSE trong trường hợp ngược lại Để lấy số lượng các row được chèn với lệnh INSERT hoặc bị thay đổi bởi lệnh UPDATE, PHP cung cấp cho ta hàm mysql_affected_rows Ta hãy xem ví dụ sau:
//Không kết nối được, thoát ra và báo lỗi
die("không nết nối được vào MySQL server: ".mysql_error($conn));
Trang 8} //end if
//chọn CSDL để làm việc
mysql_select_db($DBNAME, $conn)
or die("Không thể chọn được CSDL: ".mysql_error($conn));
$sql = "INSERT INTO `mk_managers` (username, password) VALUES ('xyz', '000')";
$result = mysql_query($sql, $conn); //chèn thêm 1 dòng vào table
if ( !$result )
die("Không thể thực hiện được câu lệnh SQL: ".mysql_error($conn));echo "Số lượng row được chèn: ".mysql_affected_rows($conn)."<br>\n";//ta chỉ chèn 1 dòng nên hàm mysql_affected_rows sẽ trả về 1
$sql = "UPDATE `mk_managers` SET password='111' WHERE username='xyz'";
$result = mysql_query($sql, $conn); //đổi password của accoutn xyz
if ( !$result )
die("Không thể thực hiện được câu lệnh SQL: ".mysql_error($conn));echo "Số lượng row được thay đổi: ".mysql_affected_rows($conn)."<br>\n";//ta thay đổi 1 dòng nên hàm mysql_affected_rows sẽ trả về 1
$sql = "DELETE FROM `mk_managers`";
$result = mysql_query($sql, $conn); //xoá hết tất cả các account
Trang 9//đóng kết nối
mysql_close($conn);?>
II. NGÔN NGỮ LẬP TRÌNH PHP
PHP ( Hypertext Preprocessor ) là một ngôn ngữ lập trình để phát triển các ứng
dụng viết cho máy chủ, mã nguồn mở hay dùng cho mục đích tổng quát
Như chúng ta đã biết, có rất nhiều trang web được xây dựng bởi ngôn ngữ HTML Đây chỉ là nhưng trang web tĩnh, nghĩa là chúng chỉ chứa đựng một nội dung cụ thể với những dòng văn bản đơin thuần, hình ảnh, và có thể được sự hỗ trợ bởi ngôn ngữ JavaScript hoặc Java Apple Nhưng trang web như vậy người
ta thường gọi là client – side Tuy nhiên, Internet và Intranets đã được sử dụng cho các ứng dụng cần tới cơ sở dữ liệu Các trang ứng dụng như vậy được gọi là trang web động, bởi vì nội dung của chúng luôn được thay đổi tùy thuộc vào dữ liệu và người sử dụng PHP là ngôn ngữ làm được những điều như vậy Bằng cách chạy chương trình PHP trên máy chủ Web sever, có thể tạo ra những ứng dụng có sự tương tác với cơ sở dữ liệu để tạo ra những trang web và đây được gọi là trang web động
Cách hoạt động của PHP : một trang PHP được yêu cầu, web sever phân tích
và thi hành các đoạn mã PHP để tạo ra trang HTML qua bốn bước:
- Đọc yêu cầu từ phía browser
- Tìm trang web trên sever
- Thực hiện các đoạn mã PHP trên trang web đó để sửa đổi nội dung của trang web
- Gửi trở lại nội dung cho brower
Trang 10- <% echo ("You may optionally use ASP-style tags"); %>
<%= $variable; # This is a shortcut for "<%echo " %>
Chú ý: Cách 1 chỉ có thể sử dụng nếu những tag ngắn được cho phép sử dụng
Có thể sửa short_open_tag trong cấu hình của php hoặc biên dịch file php với lựa chọn cho phép dùng các tag ngắn Tương tự như vậy, cách thứ 4 chỉ có tác dụng nếu asp_tag được đặt trong file cáu hình của PHP PHP cho phép hỗ trợ các kiểu chú thích của cả C, C++ và Unix shell
• Mảng:
Trang 11Mảng là một dạng của biến trong đó có chứa nhiều giá trị Ví dụ một dạng đơn giản của mảng:
$thang = array("Gieng", "Hai", "Ba", "Bon", "Nam", "Sau", "Bay", "Tam",
"Chin", "Muoi", "Muoi Mot", "Muoi Hai");
Để truy xuất được tất cả các phần tử trong mảng, bạn có thể tính ra chiều dài của mảng và thực hiện vòng lặp:
for ($i=0; $i<count($months); $i++)
{ echo $thang[$i] "<br>\n" ; }
Mảng liên hợp:
Cũng giống như các ngôn ngữ khác, PHP tận dụng khả năng của mảng liên hợp (associative array) Có thể bạn cảm thấy mới mẻ với khái niệm này Mỗi phần tử trong mảng liên hợp mang khoá riêng Các phần tử của mảng sẽ được truy cập thông qua khoá Điều này giống như cách thức truy xuất trong các query khi làm việc với Database Trong ví dụ sau, bạn sẽ thấy các phần tử first_name, last_name, e-mail sử dụng các key:
- Tất cả các mảng trong PHP đều là mảng liên hợp
PHP cũng sẽ tự động gán cho chúng các key Ví dụ: $x= array ("pug",
"poodle"), PHP sẽ tự gán cho $x các khoá là các con số nguyên theo thứ tự bắt đầu từ số 0
Mảng đa chiều:
Trang 12Mảng đa chiều thường sử dụng nhất đó là mảng hai chiều Chúng chứa thông tin dựa trên hai khoá Chúng ta sẽ xác lập một mảng $people Trong mảng
$people lại chứa mảng cho từng cá nhân:
$people = array (
"khai" => array ("ho_lot" => "tongphuoc", "tuoi" => 30),
"minh" => array ("ho_lot" => "leanh" , "tuoi" => 52) );
Có thể truy cập tất cả các phần tử trong mảng hai chiều bằng cách sử dụng vòng lặp trên cả hai chiều của mảng:
while(list($person, $person_array) = each($people))
{
echo "<b>Ban biet gi ve $person</b><br>\n";
while(list($person_attribute, $value) = each($person_array))
{
echo "$person_attribute = $value<br>\n";
}}
• Cookies
Cookie là những file nhỏ chứa một số các thông tin truy cập Web Các cookie
do Websever phát sinh, lưu giữ lại, sau đó sẽ được đọc ở những lần truy cập về sau Cookie đơn thuần chỉ là thông tin ghi nhận lại những động tác truy cập web của khách Khi tồn tại trên đĩa cứng, cookie trở thành các thỉnh cầu của giao thức HTTP, được gởi đến Webserver Để có thể phát sinh một cookie cần phải sử dụng hàm setcookie() như sau:
setcookie(name, value, time_to_expire, path, domain, security, setting);
setcookie("my_cookie", "my_id",time()+(60*60*24*30),"/",".mydomain.com", 0)
Lệnh trên sẽ phát sinh một cookie với các chức năng sau:
Trang 13− Chứa một biến tên là my_cookie
− Giá trị của mycookie my_id
Cookie tồn tại trong vòng 30 ngày kể từ ngày nó phát sinh (time()+(30*24*60*60) ngày giờ hiện tại + 30 ngày được quy ra giây)
Cookie có tác dụng đến tất cả các trang trong domain Bạn có thể hạn chế lại bằng các chỉ ra đường dẫn đến một số trang nào đó trong domain
Nó sẽ hiện diện trong tất cả các website có địa chỉ http://mydomain.com
Không có xác lập đặc biệt nào về bảo mật
Một khi cookie được xác lập, các biến phát sinh từ cookie có tác dụng giống như biến phát sinh từ form mà chúng ta đã bàn trước đây Chúng sẽ hiện diện với chức năng là biến global Sau khi script PHP xác lập cookie, các script khác trong domain có thể truy cập cookie một cách tự động Cẩn thận hơn để
$mycookie không xung đột với một biến nào khác cũng có tên $mycookie, bạn
có thể truy xuất nó thông qua mảng HTTP_COOKIE_VARS và sử dụng lệnh: HTTP_COOKIE_VARS["mycookie"] Bạn có thể xác lập cookie cung cấp khả năng truy xuất như là một mảng:
setcookie("mycookie[first]","dddd",time()+2592000,"/","192.168.1.1", 0);setcookie("mycookie[second]","my_second_id",time()
ID này được gởi đến user thông qua một cookie PHP sau đó tạo một tập tin trên server để theo dõi sự thay đổi của biến Tập tin này có tên giống như tên của SessionID Một khi session được tạo, bạn có thể đăng ký bất kỳ số lượng biến Các giá trị của những biến này được lưu giữ trong tập tin trên server Cũng như
sự tồn tại của cookie, các biến trong session sẽ hiện diện trên bất kỳ trang nào được truy cập đến trong phạm vi một domain Việc xác lập này rất thuận tiện
Trang 14hơn là chuyển tiếp các biến từ trang này sang trang khác thông qua các phần tử
ẩn trong form hay cookie
Ví dụ: <? session_start();
session_register("my_var");
$my_var = "hello world";?>
Sau khi chạy chương trình này, chọn refresh trên trình duyệt Bạn sẽ thấy script sẽ nhớ được rằng bạn là ai Các hàm setcookie() và session_start() nên ở
vị trí gần đầu tập tin Nếu bạn thử chuyển đến trình duyệt trước để xác lập một cookie bạn sẽ nhận được một thông báo lỗi
• Biến
Gán từ trình duyệt (web browser)
Thông thường các thông tin này được nhập vào thông qua một form HTML Nhưng cũng có thể chúng xuất phát từ các nguồn khác như: HTML, cookie, session
Biến từ Form của HTML
<form action=mypage.php action=post>
<input type=”text” name=”email”>
<input type=”text” name=”first_name”>
<input type=”submit” name=”submit” value=”OK”>
<input type=” reset” name=”reset” value=”Cancel”>
</form>
Sau khi submit dữ liệu lên sever thì các giá trị lấy lên từ form là first_name, email được gọi là biến từ form Các biến cũng có thể được truy xuất thông qua mảng $HTTP_POST_VARS hoặc $HTTP_GET_VARS, dựa vào method sử dụng trong form Có thể truy cập bất kỳ phần tử riêng biệt nào như đã làm trong mảng liên hợp
Trang 15($HTTP_POST_VARS["e-mail"]) Hoặc có thể tạo vòng lặp duyệt qua tất cả các phần tử của mảng:
while (list($key, $value) = each($HTTP_POST_VARS))
{ echo "variable = $key value = $value <br>"; }
HTTP_POST_VARS: viết tắt là $_POST
Đây là một mảng chứa tất cả các biến được chuyển tiếp thông qua POST method từ một form
HTTP_GET_VARS: viết tắt là $_GET
Đây là một mảng chứa tất cả các biến được chuyển tiếp thông qua GET method
HTTP_COOKIE_VARS
Tất cả các cookie chuyển đến trình duyệt đều có thể được truy xuất trong mảng liên hợp này Nó bao gồm cả session cookie
Biến của Apache
Apache có sẵn rất nhiều biến Sau đây là một số biến mà có lẽ thường sẽ sử dụng thường xuyên trong chương trình
DOCUMENT_ROOT
Biến này trả về đường dẫn của Webserver
HTTP_USER_AGENT
Trang 16Biến user_agent cung cấp cho bạn khả năng uyển chuyển đối với từng trình duyệt khác nhau
REMOTE_ADDR
Dùng để lấy địa chỉ IP của user
REQUEST_URI
Biến này cũng giống như biến PHP_SELF Ngoài ra nó còn chứa thêm tham
số trong địa chỉ truy vấn Nếu bạn truy cập vào địa chỉ:
http://www.mydomain.com/info/products/index.php?id=6
Thì biến REQUEST_URI của bạn có giá trị là: info/products/index.php?id=6
SCRIPT_FILENAME
Biến này chứa toàn bộ đường dẫn của tập tin
Kiểm tra biến
isset( )
Hàm này thực hiện việc kiểm tra biến có chứa giá trị hay không Nó sẽ trả về giá trị TRUE hoặc FALSE Nếu biến chưa được xác lập thì trị isset() sẽ là false
empty()
Hàm empty() có vẻ ngược ngạo so với hàm isset() Nó sẽ cho ra trị True nếu
$var có trị null, chuỗi rỗng hoặc số 0 Hàm này thường được sử dụng để kiểm tra xem user có nhập trị vào trong form hay không
is_int( )
Hàm này để kiểm tra biến có phải là số nguyên hay không Có 2 cú pháp khác cho cùng kết quả như nó là: is_integer và is_long() Sử dụng hàm này khi không chắc rằng biến là một trị nguyên hay chuỗi
Tương tự có một loạt hàm kiểm tra kiểu của biến sau đây:
Trang 17Đổi kiểu của biến.
Bạn sẽ sử dụng 3 cách để đổi kiểu của biến
Phương pháp type casting
Trang 18Cách thức: settype($biến, "kiểu")
Biến của biến
Nghe qua có vẻ lạ lạ, nhưng đây là một "độc chiêu" của PHP Với cách thức này sẽ lấy giá trị của một biến để hình thành tên của một biến mới
Cách thức: $$biến
<?
$tacgia = array ("ho"=>"Tong", "ten"=>"Khai");
while (list($field,$value) = each($tacgia))
_FILE_ : tên của script file đang được thực hiện.
_LINE_ : số dòng của mã script đang được thực hiện trong script file hiện tại _PHP_VERSION_ : version của PHP
Trang 19TRUE, FALSE
E_ERROR : báo hiệu có lỗi.
E_PARSE : báo lỗi sai khi biên dịch.
E_NOTICE : Một vài sự kiện có thể là lỗi hoặc không.
E_ALL : Có thể định nghĩa một hằng số bằng hàm define()
if (điều kiện) { do something; }
else if ( điều kiện ) { do something;} else { do something;}
Vòng lặp
while ( DK) { }
do { }
Trang 20white ( DK );
for (bieuthuc1; bieuthuc2; bieu thuc3) { }
Với phiên bản PHP >4:
foreach(array_expression as $value) statement
foreach(array_expression as $key => $value) statement Break và continue
break : thoát ra khỏi vòng lặp hiện thời
continue : bỏ qua vòng lặp hiện tại, tiếp tục vòng tiếp theo Switch
switch (tên biến) {
case trường hợp 1: break;
case trường hợp 2: break;
case trường hợp 3: break;
Trang 21{ $string = 'and something extra.'; }
Tham số có giá trị mặc định.:
function makecoffee ($type = "cappucino")
{return "Making a cup of $type.n"; }
Chú ý : khi sử dụng hàm có đối số có giá trị mặc định, các biến này sẽ phải nằm về phía phải nhất trong danh sách đối số
Giá trị trả lại của hàm:
Có thể là bất kỳ giá trị nào Tuy vây, không thể trả lại nhiều giá trị riêng lẻ nhưng có thể trả lại một mảng các giá trị
• Các toán tử:
PHP có các toán tử cho các phép số học : + - * / %
Các toán tử logic : and or xor ! && ||
Toán tử thao tác với bit : & | ^ ~ <<>>
Toán tử so sánh : ==, != ,< ,> ,<=, >=, ====
Trang 22Toán tử điều khiển lỗi : @ - khi đứng trước một biểu thức thì các lỗi của biểu thức sẽ bị bỏ qua và lưu trong $php_errormsg
VD: <?php
class ManagersController extends AppController {
var $name = 'Managers';
var $helpers = array('Html', 'Form' , 'Ajax');
function check_block(){
$managers=$this->Manager->findAll('Manager.block=2');
$today=date('y-m-d h:m:s'); //echo date('d/m/Y',strtotime($day));
foreach ($managers as $manager):
if((date('d')-date('d',strtotime($manager['Manager'] ['dateblock'])))>=1)
{
$this->data['Manager']['block']=1;
$this->data['Manager']['id']= $manager['Manager']['id'] ; $this->Manager->save($this->data);
}
endforeach;
return true;
Trang 23• Các cấu trúc điều khiển:
Cấu trúc nổi bật của PHP là foreach: endforeach;
foreach (array_expression as $value) statements;
foreach (array_expression as $key => $value) statements;
Giả sử ta có bảng cơ sở dữ liệu: `mk_managers` có các trường `id`,
`name`, `username`, `block`, `name`, `group`, `count` được nằm trong cơ sở dữ liệu có tên là `mmk_ marklearn `
Như đã giới thiệu ở trên (phần mysql) ta kết nối cơ sở dữ liệu ở file connect.inc
Trang 24$sql="SELECT `id`, `username`, `block`, `name`,`group`,`count` FROM
`mk_managers` order by `mk_managers`.`username` ASC";
<td><a href="#" onClick="new Ajax.Updater">
<?php echo $row['username']; ?></a>
</td>
Trang 25<a href="#" onClick="new Ajax.Updater "><img src="image/reset.jpg" alt
="reset" border="0" width="15"></a>
</td>
<td style="text-align:center;">
<a href="#"onClick="new Ajax.Updater"><img src="image/edit.png" alt
="reset" border="0" width="15"></a>
<?php $i++;
}
mysql_free_result($result) ;
Trang 26} mysql_close($conn) ; ?>
Với ví dụ trên: hàm $result=mysql_query($sql,$conn); sẽ thực hiện việc truy vấn cơ sở dữ liệu Kết quả trả về là mảng $result
Với hàm mysql_num_rows($result) trả về số dòng kết quả thu được
Với $row=mysql_fetch_assoc($result) $row kết quả trả về tương ứng với mỗi dòng
Với mỗi dòng thu được ta thực hiện các thao tác với nó Như in ra màn hình
- PHP là ngôn ngữ rất dễ dùng, đơn giản hơn so với nhiều so với các ngôn ngữ khác như Java, Peri
PHP Framework
PHP frameworks làm cho sự phát triển của những ứng dụng web viết bằng ngôn ngữ PHP trở nên trôi chảy hơn, bằng cách cung cấp một cấu trúc cơ bản để xây dựng những ứng dụng đó Hay nói cách khác, PHP framework giúp đỡ các bạn thúc đẩy nhanh chóng quá trình phát triển ứng dụng, giúp bạn tiết kiệm được thời gian, tăng sự ổn định cho ứng dụng, và giảm thiểu số lần phải viết lại
mã cho lập trình viên Ngoài ra Framework còn giúp những người mới bắt đầu
Trang 27có thể xây dựng các ứng dụng ổn định hơn nhờ việc tương tác chính xác giữa các Database, mã (PHP) và giao diện (HTML) một cách riêng biệt Điều này cho phép bạn dành nhiều thời gian để tạo ra các ứng dụng web, hơn là phí thời gian
để viết các đoạn mã lặp lại trong một project
Có rất nhiều lý do khác nhau để các lập trình viên sử dụng PHP framework, nhưng một trong những lý do chính vẫn là khả năng giúp các lập trình viền tăng tốc quá trình phát triển ứng dụng Việc sử dụng lại các mã lệnh giống nhau trong nhiều project sẽ giúp các bạn tiết kiệm được thời gian và công sức một cách đáng kể Một framework sẽ cung cấp sẵn các module nền tảng cần thiết để xây dựng một project, vì thế, các lập trình viên có thể tận dụng được thời gian để phát triển các ứng dụng thực tế, hơn là mất thời gian để xây dựng lại một nền tảng trên mỗi project
Sự ổn định là một lý do lớn đối với các lập trình viên đang sử dụng Framework Tính đơn giản là 1 điểm mạnh của PHP, đó là lý do tại sao lại
có nhiều người thích sử dụng nó, nhưng đồng thời đó cũng là điểm yếu của nó PHP thì khá dễ học và sử dụng, đặc biệt là đối với những người mới làm quen với lập trình, tuy nhiên, họ có thể thường xuyên viết mã một cách không khoa học và thậm chí không hề nhận thức được điều này, với PHP, trong nhiều trường hợp các ứng dụng vẫn sẽ làm việc được, nhưng vô tình họ có thể tạo ra các lỗ hổng bảo mật lớn trong mã lệnh của mình
Hầu hết các PHP framework đều có sẵn rất nhiều thành phần mở rộng (extensive), và cũng có rất nhiều framework khác nhau để các bạn lựa chọn Bạn thậm chí còn có thể tự viết riêng cho mình 1framework Tuy nhiên, bạn nên cân nhắc kỹ trước khi quyết định sử dụng 1 framework nào cho mình hay không, nên tự đặt câu hỏi cho chính mình là: Nó có tiết kiệm được cho bạn thời gian và công sức hay không ? Có giúp ứng dụng bạn hoạt động tốt hơn không ? Có cải thiện được sự ổn định cho ứng dụng không? Hãy tìm ra câu trả lời cho chính mình để quyết định xem bạn có cần xàiframework hay chưa, và nên xài framework nào
Mô hình client – sever:
Trang 28Thực tế mô hình Client/Server là sự mở rộng tự nhiên và tiện lợi cho việc truyền thông tiến trình trên các máy tính cá nhân, mô hình này cho phép xây dựng các chương trình Client/Server một cách dễ dàng và sử dụng chúng để liên lạc với nhau đạt hiệu quả hơn Mô hình Client/Server như sau :
Hình 1.1:Mô hình client – server
Đây là mô hình tổng quát nhất, trên thực tế thì Server có thể được nối với nhiều Server khác nhằm làm việc hiệu quả hơn và nhanh chóng hơn Khi nhận được yêu cầu từ Server này có thể gửi tiếp yêu cầu vừa nhận được cho một Server khác ví dụ như database Server vì bản thân nó không thể sủ lí yêu cầu này được
Với mô hình trên thì mô hình Client/Server chỉ mang đặc điểm của phần mềm không liên quan đến phần cứng mặc dù trên thực tế yêu cầu cho một máy Server là cao hơn rất nhiều so với máy Client Lý do bởi vì máy Server phải quản lý rất nhiều các yêu cầu từ các Client khác nhau trên mạng máy tính
Mô hình web client – server
Trang 29Hình 1.2:Mô hình web client – server
Mô hình Client/Server ứng dụng vào trang Web được gọi là mô hình Web Client/Server giao thức chuẩn được sử dụng để giao tiếp giữa Web Server và Web Client là HTTP
Web client (Web Browser): Các trình duyệt có vai trò như là Client trong
mô hình Client/Server, khi cần xem một trang Web cụ thể nào thì trình duyệt Web sẽ gửi yêu cầu lên cho Web Server để lấy nội dung trang Web đó
Web Server : Khi nhận yêu cầu từ một Client/Server, Web Server sẽ trả về nội dung file cho trình duyệt Web Server cho phép chuyển giao dữ liệu bao gồm văn bản, đồ hoạ và thậm chí cả âm thanh, video tới ngưòi sử dụng
Trang 30CHƯƠNG II: PHÂN TÍCH THIẾT KẾ WEBSITE THÔNG TIN TUYỂN DỤNG
Với một website, doanh nghiệp có thể khai thác được các lợi ích sau:
- Chi phí thấp : Việc thiết lập Web không mất nhiều thời gian tiền bạc
- Giao tiếp hữu hiệu với khách hàng
- Sản phẩm được giới thiệu luôn mới và sẵn sàng trên trang web, nếu bạn cập nhật thông tin thường xuyên
- Giảm được chi phí in ấn, vì sản phẩm cùng hình ảnh và lời giới thiệu đã có sẵn trên trang web rồi
- Mở cửa 24/24 Mọi khách hàng từ khắp nơi trên thế giới đều có thể vào trang web của cơ sở bạn bất kỳ lúc nào họ muốn để biết thông tin về công ty của bạn, nâng cao hiệu quả trên thương trường
- Bạn sẽ không cần đối mặt trực tiếp với những khách hành khó tính, trong khi những lời giới thiệu của bạn lại dễ dàng đến với mọi người thông qua trang web
Mục đích: Xây dựng được một website với giao diện thân thiện giúp cho nhà
tuyển dụng đăng tin và quản lý 1 cách dễ dàng thông tin công ty hay doanh nghiệp của mình, tìm được những đối tượng phù hợp với công việc đang cần tuyển dụng Đồng thời đối với người tìm việc thì dễ dàng và nhanh chóng tìm được công việc theo mong muốn, phù hợp với hồ sơ hay sở thích của mình
Trang 31Yêu cầu: Đây là một Website lớn và tương đối phức tạp, đòi hỏi nhiều kỹ
thuật tìm kiếm chuyên nghiệp và những công nghệ mới Vì vậy, trong phạm
vi đồ án sẽ giải quyết những vấn đề cơ bản với các chức năng như sau:
- Quản lý các thông tin nhà tuyển dụng
- Quản lý thông tin hồ sơ người đăng tìm việc làm
- Xây dựng chức năng tìm kiếm chuyên dụng
- Giới thiệu các thông tin nổi bật: việc làm hấp dẫn nhất, việc làm mới nhất, công việc phù hợp nhất, các hồ sơ đáp ứng được yêu cầu nhất…
- Các chức năng quản lý cập nhật của Admin
Nhiệm vụ cơ bản
Website thông tin tuyển dụng và giới thiệu việc làm đăng tải thông về lĩnh vực việc làm Cập nhật những thông tin tuyển dụng cũng như giới thiệu việc làm một cách nhanh nhất, hiệu quả Vì vậy yêu cầu ban quản trị website là cần phải có hai bộ phân chính là quản lý tin và quản lý người dùng riêng biệt nhưng vẫn cần
có mối quan hệ chặt chẽ với nhau
Website gồm những nhiệm vụ sau:
- Cung cấp thông tin về tuyển dụng việc làm được cập nhật: các tin nhà tuyển dụng cần tuyển, tin các ứng viên đăng lên mong muốn việc làm nhằm đáp ứng đúng yêu cầu
- Thực hiện tư vấn, hỗ trợ, tìm kiếm một cách nhanh nhất
- Thống kê số lượng nhà tuyển dụng, số lượng ứng viên và số lượng công việc đang còn tuyển dụng
Khảo sát hiện trạng
Hệ thống được chia làm các bộ phận và chức năng sau:
- Admin: người có quyền cao nhất, chịu trách nhiệm về các vấn đề của website, là
người cuối cùng kiểm duyệt nội dung trang web
Trang 32- Bộ phận quản trị hệ thống: có nhiệm vụ duy trì , bảo trì hệ thống phần cứng, giải
quyết các vấn đề phát sinh về kỹ thuật nhằm giúp cho hệ thống hoạt động liên tục
- Bộ phận quản lý ứng viên:Quản lý thông tin cá nhân và các thông tin liên quan
như: Username, password, tiêu đề hồ sơ, họ tên, email, ngày sinh, giới tính, tình trạng hôn nhân, danh sách ngành nghề, tỉnh thành, địa chỉ, điện thoại, công việc mong muốn, trình độ, chức vụ, mức lương hiện tại, mức lương mong muốn, hình thức làm việc
- Bộ phân quản lý nhà tuyển dụng: Quản lý các thông tin: username và password
của nhà tuyển dụng, email, tên công ty, doanh nghiệp, địa chỉ cơ quan, tỉnh thành làm việc, danh sách ngành nghề đăng tin, quy mô của công ty, tiêu chí hoạt động, điện thoại liên lạc, fax, website, người đại diên hay liên hệ, hình thức liên hệ
- Bộ phận quản lý tin tức: kiểm tra nội dung tin tức
2.MÔ TẢ HỆ THỐNG
Mô hình hoạt động
Trang 33Hình 2.1 Mô hình hoạt động
Quy trình xử lý
- Nhà tuyển dụng và các ứng viên đăng nhập bằng tài khoản trên website dựa vào yêu cầu cũng như mong muốn của mình đưa các thông tin tuyển dụng ( thông tin nhà tuyển dụng, tên chức vụ, mô tả công việc, yêu cầu, … ) , thông tin các ứng viên (thông tin cá nhân, học hàm, học vị, công việc có thể làm, yêu cầu, mức lương mong muốn,… )
- Bộ phận quản trị hệ thống : đưa, sắp xếp thông tin theo nội dung, cập nhật lên trang website
Dựa vào quá trình thực hiện chia ra thành 2 nhiệm vụ chính
- Quản lý tin tức:
Trang 34Website được xây dựng gồm nhiều chuyên mục, mỗi chuyên mục gồm nhiều tin tức Hệ thống quản lý tin tức giúp quản trị viên, biên tập viên,… có thể gửi các nội dung lên website một cách dễ dàng, nhanh chóng, lưu trữ phục hồi tin
cũ, quản lý các thông tin gửi đi và phản hồi
Hệ thống cho chép người xem các tin tức mới nhất ở từng chuyên mục nào đó, tìm kiếm thông tin
- Quản lý người dùng:
Công việc quản lý người dùng thuộc về người quản trị hệ thống Người đó có nhiệm vụ cấp quyền truy nhập và phân quyền theo các mức độ với các thành phần sử dụng trang web
Việc quản lý các chuyên mục, chuyên đề và quản lý người xem tin được phân quyền cho các quản trị viên Các quản trị viên có quyền tạo, sửa, các chuyên mục, quản lý thông tin người dùng.Việc xóa bài và xóa chuyên mục thuộc quyền của admin Những người này được cấp quyền cao nhất có thể xóa các tin trong các chuyên mục, hay xóa cả chuyên mục
Các chức năng
Trang 35Tên chức năng: mỗi chức năng có một tên duy nhất.
Ký hiệu: chức năng được ký hiệu bằng hình chữ nhật bên trong có tên chức năng
- Thông tin nhà tuyển dụng
- Đăng tin tuyển dụng
- Danh sách tin đăng
- Danh sách ứng viên lưu
Trang 36- Mức lương mong muốn.
- Kinh nghiệm làm việc
Quản lý tin tức:
- Tiêu đề tin
- Nội dung tin
Sơ đồ phân ra chức năng
Trang 37Hình 2.2 Sơ đồ phân ra chức năng
Trang 38 Sơ đồ luồng dữ liệu.
• Định nghĩa ký hiệu sử dụng
Biểu diễn hình elip:là một hoạt động có liên quan đến sự biến đổi hoặc tác động lên thông tin như tổ chức lại thông tin, bổ sung thông tin hoặc tạo ra thông tin mới
Tên chức năng
Biểu đồ hình mũi tên: là luồng thông tin vào hoặc ra khỏi một tiến trình Tên gọi thường là danh từ và tính từ
Luồng thông tin
Biểu thức cặp đường thằng song song:liệu là nơi biểu diễn thông tin cần cất giữ,
để một hoặc nhiều chức năng sử dụng
Vào
Ra
Kho dữ liệu