GVHD: Thầy Nguyễn Lương Anh Tuấn
Khóa luận tốt nghiệp
TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI TP. HCM
KHOA CÔNG NGHỆ THÔNG TIN
NGUYỄN THỊ TUYỀN
XÂY DỰNG ỨNG DỤNG QUẢN LÝ NHÂN SỰ TRÊN NỀN FRAMEWORK
YII.
LUẬN VĂN TỐT NGHIỆP
TP,HCM 2013
Trang 1
GVHD: Thầy Nguyễn Lương Anh Tuấn
Khóa luận tốt nghiệp
TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI TP. HCM
KHOA CÔNG NGHỆ THÔNG TIN
NGUYỄN THỊ TUYỀN
- 11L1120055
XÂY DỰNG ỨNG DỤNG QUẢN LÝ NHÂN SỰ TRÊN NỀN FRAMEWORK
YII.
LUẬN VĂN TỐT NGHIỆP
GIÁO VIÊN HƯỚNG DẪN
Ths. NGUYỄN LƯƠNG ANH TUẤN
NIÊN KHÓA 2011-2013
LỜI CẢM ƠN
Trang 2
GVHD: Thầy Nguyễn Lương Anh Tuấn
Khóa luận tốt nghiệp
Em xin gửi lời cảm ơn chân thành sâu sắc nhất đến tới Ban Giám hiệu Nhà trường
cùng quý thầy cô Khoa Công Nghệ Thông Tin Trường Đại học Giao thông Vận tải
TP.HCM đã chỉ bảo và truyền đạt cho em những kiến thức quý báu trong suốt hai năm
học vừa qua.
Đặc biệt em xin chân thành cám ơn thầy giáo Nguyễn Lương Anh Tuấn giảng
viên bộ môn CNTT Trường Đại học Giao Thông Vận Tải TP HCM đã tận tình giúp đỡ
em trong quá trình thực hiện đề tài tốt nghiệp.
Em cũng gửi lời cám ơn sâu sắc đến những người thân trong gia đình, các anh chị
nơi làm việc và bạn bè đã ủng hộ, giúp đỡ và động viên em trong những lúc khó khăn,
cũng như trong suốt những năm học vừa qua.
Mặc dù đã cố gắng hoàn thành đề tài với tất cả sự nổ lực của bản thân, nhưng
chắc chắn không tránh khỏi những thiếu sót nhất định, kính mong sự cảm thông và tận
tình chỉ bảo của quý Thầy Cô.
Em xin chúc trường Đại học Giao thông Vận tải thành phố Hồ Chí Minh trở
thành một đơn vị giáo dục vững manh, đào tạo ra nhiều kỹ sư tài năng cho đất nước .
Cuối cùng em xin kính chúc toàn thể quý thầy cô nhà trường dồi dào sức khoẻ,
gặp nhiều thuân lợi trong công tác cũng như trong cuộc sống.
Em xin chân thành cám ơn.
TP. HỒ CHÍ MINH, Ngày .. tháng .. năm 2013
Sinh viên thực hiện
Nguyễn Thị Tuyền
NHẬN XÉT CỦA GIÁO VIÊN
Trang 3
GVHD: Thầy Nguyễn Lương Anh Tuấn
Khóa luận tốt nghiệp
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
MỤC LỤC
MỤC LỤC...............................................................................................................................................4
LỜI MỞ ĐẦU............................................................................................................................................8
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI........................................................................................................9
Tên đề tài: Quản lý nhân sự (Employee System Management )..............................................................9
1.1.Giới thiệu đề tài:............................................................................................................................9
1.2.Mục đích đề tài:.............................................................................................................................9
CHƯƠNG 2: GIỚI THIỆU CÔNG NGHỆ....................................................................................................10
Trang 4
GVHD: Thầy Nguyễn Lương Anh Tuấn
Khóa luận tốt nghiệp
2.1.Ngôn ngữ lập trình PHP ..............................................................................................................10
2.1.1.Định nghĩa................................................................................................................................10
2.1.2.Lịch sử phát triển..................................................................................................................11
2.2. SQL là chuẩn ngôn ngữ ANSI để truy cập CSDL...........................................................................15
2.3.Yii Framework..............................................................................................................................16
2.3.1.Khái quát...............................................................................................................................16
2.3.2.Lịch sử...................................................................................................................................17
2.3.3.Luồng xử lý logic...................................................................................................................18
2.3.4.Mô hình MVC........................................................................................................................22
2.4.Javascript, jquery........................................................................................................................24
2.4.1.Khái quát về Javascript:.......................................................................................................24
2.4.2.Khái quát về Jquery:.............................................................................................................25
CHƯƠNG 3: MÔ HÌNH XỬ LÝ.................................................................................................................26
3.1.Use Case theo Role......................................................................................................................27
3.1.1.Phân loại user:......................................................................................................................27
3.1.1.1.Role Admin:.......................................................................................................................27
3.1.1.2.Role Manager ...................................................................................................................28
3.1.1.3.Role Leader........................................................................................................................29
3.1.1.4.Role Ordinary User............................................................................................................29
3.2.Sơ đồ chức năng hệ thống...........................................................................................................31
3.2.1.Chức năng hệ thống .............................................................................................................31
CHƯƠNG IV: MÔ HÌNH CƠ SỞ DỮ LIỆU ................................................................................................33
CHƯƠNG V: DEMO SẢN PHẨM.............................................................................................................34
5.1.Trang đăng nhập..........................................................................................................................34
Trang 5
GVHD: Thầy Nguyễn Lương Anh Tuấn
Khóa luận tốt nghiệp
5.2.Trang chủ.....................................................................................................................................35
5.3.Quản lý user................................................................................................................................36
5.3.1.Tạo mới một user ................................................................................................................36
5.3.2.Cập nhật thông tin user .......................................................................................................37
5.3.3.Xem chi tiết thông tin user ..................................................................................................38
5.3.4.Thay đổi mật khẩu................................................................................................................38
5.3.5.Hủy kích hoạt user (Deactive user )......................................................................................39
5.3.6.Kích hoạt user (Active user)..................................................................................................39
5.3.7.Quên mật khẩu:....................................................................................................................39
5.3.8.Email quên mật khẩu............................................................................................................40
5.3.9.Danh sách user và tìm kiếm user..........................................................................................40
5.4.Quản lý profile.............................................................................................................................41
5.4.1.Update profile......................................................................................................................41
5.4.2.Xem chi tiết thông tin profile................................................................................................42
5.4.3.Danh sách profile..................................................................................................................43
5.5.Quản lý phòng ban......................................................................................................................44
5.5.1.Danh sách phòng ban:..........................................................................................................44
5.6.Quản lý ngày nghỉ:.......................................................................................................................45
5.6.1.Tạo mới 1 kỳ nghỉ.................................................................................................................45
5.6.2.Cập nhật thông tin kỳ nghỉ hoặc hủy kỳ nghỉ........................................................................46
5.7.Quản lý tin nhắn..........................................................................................................................51
5.7.1.Tạo mới tin nhắn..................................................................................................................51
5.7.2.Xem chi tiết tin nhắn, thông báo..........................................................................................52
5.8.Quản lý log...................................................................................................................................53
Trang 6
GVHD: Thầy Nguyễn Lương Anh Tuấn
Khóa luận tốt nghiệp
5.9.Quản lý hợp đồng........................................................................................................................54
5.9.1.Tạo mới hợp đồng................................................................................................................54
5.9.2.Quản lý hợp đồng.................................................................................................................55
5.9.3.Ngưng hợp đồng...................................................................................................................56
CHƯƠNG VI: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN..................................................................................57
Kết luận những vấn đề đã làm được:................................................................................................57
Nêu ra những vấn đề sẽ cải tiến và bổ sung trong tương lai.............................................................57
Tài liệu tham khảo:................................................................................................................................57
CV
Curriculum Vitae
Profile
Hồ sơ
Vacation
Ngày nghỉ
Model
View
Controller
Trang 7
GVHD: Thầy Nguyễn Lương Anh Tuấn
Khóa luận tốt nghiệp
LỜI MỞ ĐẦU
“Tin học hóa” không còn là khái niệm mới mẻ trong thời đại hiện nay, tuy nhiên khái
niệm đó vẫn chưa được ứng dụng trên toàn bộ các lĩnh vực, cơ quan, tổ chức. Dù các
sản phẩm công nghệ được đưa ra thị trường rất nhiều, nhưng còn nhiều lý do cơ quan,
tổ chức chưa áp dụng rộng rãi như do kinh phí đầu tư, nhân lực phát triển, thói quen
người sử dụng …….
Trong lĩnh vực quản lý, các phần mềm ứng dụng không chỉ giúp con người quản lý sản
phẩm, tin tức, doanh thu… mà còn có thể quản lý con người.Việc quản lý con người sẽ
giúp người quản lý giảm tải việc phải lưu nhớ những lời nói miệng, hoặc những giấy tờ
tràn ngập bàn làm việc.
Xuất phát từ hiện trạng nơi công ty em làm việc, em xin phát triển một ứng dụng quản
lý nhân sự “ xây dựng ứng dụng quản lý nhân sự trên nền framework Yii”.
Do kiến thức và kinh nghiệm của bản thân còn hạn chế nên việc thực hiện không
thể tránh khỏi những thiếu xót. Rất mong được sự đóng góp ý kiến của quý thầy cô
Trang 8
GVHD: Thầy Nguyễn Lương Anh Tuấn
Khóa luận tốt nghiệp
trong bộ môn công nghệ thông tin trường Đại học Giao Thông Vận Tải cùng toàn thể
bạn bè để đề tài em càng hoàn thiện và ứng dụng thực tiễn một cách tốt nhất.
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI
Tên đề tài: Quản lý nhân sự (Employee System Management )
1.1.
Giới thiệu đề tài:
Xuất phát từ nhu cầu quản lý nhân viên với văn phòng, giảm tải công việc hàng
ngày cho người quản lý, ứng dụng này sẽ thực hiện việc quản lý người dùng,
thông tin hồ sơ(profile), đăng ký ngày nghỉ (vacation), gửi thông báo, quản lý
hợp đồng.
1.2.
Mục đích đề tài:
- Quản lý thông tin người dùng, thông tin hồ sơ
-
Quản lý ngày nghỉ
-
Gửi thông báo trong hệ thống
-
Quản lý hợp đồng
Trang 9
GVHD: Thầy Nguyễn Lương Anh Tuấn
Khóa luận tốt nghiệp
-
Quản lý các hành động tác động vào hệ thống
-
Tìm kiếm thông tin user, xuất excel danh sách user
-
Tìm kiếm thông tin hợp đồng, xuất excel danh sách hợp đồng
-
Tìm kiếm thông tin hồ sơ nhân viên, xuất file excel danh sách, xuất file pdf
chi tiết hồ sơ nhân viên
-
Thay đổi mật khẩu, quên mật khẩu
-
Tính toán lương từ Net sang Gross và ngược lại
-
Tìm hiểu framework Yii, cơ sở dữ liệu Mysql
CHƯƠNG 2: GIỚI THIỆU CÔNG NGHỆ
2.1.
Ngôn ngữ lập trình PHP
2.1.1. Định nghĩa
- PHP là chữ viêt tát của “ Personal Home Page” do Rasmus Lerdorf tạo ra
năm 1994. Vi tính hữu dụng và khả năng phát triên, PHP bắt đầu được sử dụng
trong môi trường chuyên nghiệp và nó trở thành PHP : “Hypertext
Preprocessor”
Là một ngôn ngữ lập trình kịch bản hay một loại mã lệnh chủ yếu được
dùng để phát triển các ứng dụng viết cho máy chủ, mã nguồn mở, dùng cho mục
đích tổng quát. Nó rất thích hợp với web và có thể dễ dàng nhúng vào trang
HTML. Do được tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn, cú
pháp giống C và Java, dễ học và thời gian xây dựng sản phẩm tương đối ngắn
Trang 10
GVHD: Thầy Nguyễn Lương Anh Tuấn
Khóa luận tốt nghiệp
hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành một ngôn ngữ
lập trình web phổ biến nhất thế giới.
- PHP là mã nguồn mở do đó tất cả các đặc tính đều miễn phí, vì vậy mà có
một cộng đồng rộng lớn luôn cải tiến và khắc phục lỗi.
2.1.2. Lịch sử phát triển
PHP/FI
PHP được phát triển từ một sản phẩm có tên là PHP/FI. PHP/FI do
Rasmus Lerdorf tạo ra năm 1995, ban đầu được xem như là một tập con đơn
giản của các mã kịch bản Perl để theo dõi tình hình truy cập đến bản sơ yếu lý
lịch của ông trên mạng. Ông đã đặt tên cho bộ mã kịch bản này là 'Personal
Home Page Tools'. Khi cần đến các chức năng rộng hơn, Rasmus đã viết ra
một bộ thực thi bằng C lớn hơn để có thể truy vấn tới các cơ sở dữ liệu và
giúp cho người sử dụng phát triển các ứng dụng web đơn giản. Rasmus đã
quyết định công bố mã nguồn của PHP/FI cho mọi người xem, sử dụng cũng
như sửa các lỗi có trong nó đồng thời cải tiến mã nguồn.
PHP/FI, viết tắt từ "Personal Home Page/Forms Interpreter", bao gồm
một số các chức năng cơ bản cho PHP như ta đã biết đến chúng ngày nay. Nó có
các biến kiểu như Perl, thông dịch tự động các biến của form và cú pháp HTML
nhúng. Cú pháp này giống như của Perl, mặc dù hạn chế hơn nhiều, đơn giản và
có phần thiếu nhất quán.
Vào năm 1997, PHP/FI 2.0, lần viết lại thứ hai của phiên bản C, đã thu
hút được hàng ngàn người sử dụng trên toàn thế giới với xấp xỉ 50.000 tên miền
đã được ghi nhận là có cài đặt nó, chiếm khoảng 1% số tên miền có trên mạng
Internet. Tuy đã có tới hàng nghìn người tham gia đóng góp vào việc tu chỉnh
mã nguồn của dự án này thì vào thời đó nó vẫn chủ yếu chỉ là dự án của một
người.
PHP/FI 2.0 được chính thức công bố vào tháng 11 năm 1997, sau một
Trang 11
GVHD: Thầy Nguyễn Lương Anh Tuấn
Khóa luận tốt nghiệp
thời gian khá dài chỉ được công bố dưới dạng các bản beta. Nhưng không lâu
sau đó, nó đã được thay thế bởi các bản alpha đầu tiên của PHP 3.0.
PHP 3
PHP 3.0 là phiên bản đầu tiên cho chúng ta thấy một hình ảnh gần gũi với
các phiên bản PHP mà chúng ta được biết ngày nay. Nó đã được Andi Gutmans
và Zeev Suraski tạo ra năm 1997 sau khi viết lại hoàn toàn bộ mã nguồn trước
đó. Lý do chính mà họ đã tạo ra phiên bản này là do nhận họ thấy PHP/FI 2.0
hết sức yếu kém trong việc phát triển các ứng dụng thương mại điện tử mà họ
đang xúc tiến trong một dự án của trường đại học. Trong một nỗ lực hợp tác và
bắt đầu xây dựng dựa trên cơ sở người dùng đã có của PHP/FI, Andi, Rasmus
và Zeev đã quyết định hợp tác và công bố PHP 3.0 như là phiên bản thế hệ kế
tiếp của PHP/FI 2.0, và chấm dứt phát triển PHP/FI 2.0.
Một trong những sức mạnh lớn nhất của PHP 3.0 là các tính năng mở
rộng mạnh mẽ của nó. Ngoài khả năng cung cấp cho người dùng cuối một cơ sở
hạ tầng chặt chẽ dùng cho nhiều cơ sở dữ liệu, giao thức và API khác nhau, các
tính năng mở rộng của PHP 3.0 đã thu hút rất nhiều nhà phát triển tham gia và
đề xuất các mô đun mở rộng mới. Hoàn toàn có thể kết luận được rằng đây
chính là điểm mấu chốt dẫn đến thành công vang dội của PHP 3.0. Các tính
năng khác được giới thiệu trong PHP 3.0 gồm có hỗ trợ cú pháp hướng đối
tượng và nhiều cú pháp ngôn ngữ nhất quán khác.
Ngôn ngữ hoàn toàn mới đã được công bố dưới một cái tên mới, xóa bỏ
mối liên hệ với việc sử dụng vào mục đích cá nhân hạn hẹp mà cái tên PHP/FI
2.0 gợi nhắc. Nó đã được đặt tên ngắn gọn là 'PHP', một kiểu viết tắt hồi quy
của "PHP: Hypertext Preprocessor".
Vào cuối năm 1998, PHP đã phát triển được con số cài đặt lên tới hàng
chục ngàn người sử dụng và hàng chục ngàn Web site báo cáo là đã cài nó. Vào
thời kì đỉnh cao, PHP 3.0 đã được cài đặt cho xấp xỉ 10% số máy chủ Web có
trên mạng Internet.
Trang 12
GVHD: Thầy Nguyễn Lương Anh Tuấn
Khóa luận tốt nghiệp
PHP 3.0 đã chính thức được công bố vào tháng 6 năm 1998, sau thời gian
9 tháng được cộng đồng kiểm nghiệm.
PHP 4
Vào mùa đông năm 1998, ngay sau khi PHP 3.0 chính thức được công
bố, Andi Gutmans và Zeev Suraski đã bắt đầu bắt tay vào việc viết lại phần lõi
của PHP. Mục đích thiết kế là nhằm cải tiến tốc độ xử lý các ứng dụng phức tạp,
và cải tiến tính mô đun của cơ sở mã PHP. Những ứng dụng như vậy đã chạy
được trên PHP 3.0 dựa trên các tính năng mới và sự hỗ trợ khá nhiều các cơ sở
dữ liệu và API của bên thứ ba, nhưng PHP 3.0 đã không được thiết kế để xử lý
các ứng dụng phức tạp như thế này một cách có hiệu quả.
Một động cơ mới, có tên 'Zend Engine' (ghép từ các chữ đầu trong tên
của Zeev và Andi), đã đáp ứng được các nhu cầu thiết kế này một cách thành
công, và lần đầu tiên được giới thiệu vào giữa năm 1999. PHP 4.0, dựa trên
động cơ này, và đi kèm với hàng loạt các tính năng mới bổ sung, đã chính thức
được công bố vào tháng 5 năm 2000, gần 2 năm sau khi bản PHP 3.0 ra đời.
Ngoài tốc độ xử lý được cải thiện rất nhiều, PHP 4.0 đem đến các tính năng chủ
yếu khác gồm có sự hỗ trợ nhiều máy chủ Web hơn, hỗ trợ phiên làm việc
HTTP, tạo bộ đệm thông tin đầu ra, nhiều cách xử lý thông tin người sử dụng
nhập vào bảo mật hơn và cung cấp một vài các cấu trúc ngôn ngữ mới.
Với PHP 4, số nhà phát triển dùng PHP đã lên đến hàng trăm nghìn và
hàng triệu site đã công bố cài đặt PHP, chiếm khoảng 20% số tên miền trên
mạng Internet.
Nhóm phát triển PHP cũng đã lên tới con số hàng nghìn người và nhiều
nghìn người khác tham gia vào các dự án có liên quan đến PHP như PEAR,
PECL và tài liệu kĩ thuật cho PHP.
PHP 5
Sự thành công hết sức to lớn của PHP 4.0 đã không làm cho nhóm phát
triển PHP tự mãn.Cộng đồng php đã nhanh chóng giúp họ nhận ra những yếu
kém của PHP 4 đặc biệt với khả năng hỗ trợ lập trình hướng đối tượng (OOP),
Trang 13
GVHD: Thầy Nguyễn Lương Anh Tuấn
Khóa luận tốt nghiệp
xử lý XML, không hỗ trợ giao thức máy khách mới của MySQL 4.1 và 5.0, hỗ
trợ dịch vụ web yếu. Những điểm này chính là mục đích để Zeev và Andi viết
Zend Engine 2.0, lõi của PHP 5.0. Một thảo luận trên Slashdot đã cho thấy việc
phát triển PHP 5.0 có thể đã bắt đầu vào thời điểm tháng 12 năm 2002 nhưng
những bài phỏng vấn Zeev liên quan đến phiên bản này thì đã có mặt trên mạng
Internet vào khoảng tháng 7 năm 2002. Ngày 29 tháng 6 năm 2003, PHP 5 Beta
1 đã chính thức được công bố để cộng đồng kiểm nghiệm. Đó cũng là phiên bản
đầu tiên của Zend Engine 2.0. Phiên bản Beta 2 sau đó đã ra mắt vào tháng 10
năm 2003 với sự xuất hiện của hai tính năng rất được chờ đợi: Iterators,
Reflection nhưng namespaces một tính năng gây tranh cãi khác đã bị loại khỏi
mã nguồn. Ngày 21 tháng 12 năm 2003: PHP 5 Beta 3 đã được công bố để kiểm
tra với việc phân phối kèm với Tidy, bỏ hỗ trợ Windows 95, khả năng gọi các
hàm PHP bên trong XSLT, sửa chữa nhiều lỗi và thêm khá nhiều hàm mới. PHP
5 bản chính thức đã ra mắt ngày 13 tháng 7 năm 2004 sau một chuỗi khá dài các
bản kiểm tra thử bao gồm Beta 4, RC 1, RC2, RC3. Mặc dù coi đây là phiên bản
sản xuất đầu tiên nhưng PHP 5.0 vẫn còn một số lỗi trong đó đáng kể là lỗi xác
thực HTTP.
Ngày 14 tháng 7 năm 2005, PHP 5.1 Beta 3 được PHP Team công bố
đánh dấu sự chín muồi mới của PHP với sự có mặt của PDO, một nỗ lực trong
việc tạo ra một hệ thống API nhất quán trong việc truy cập cơ sở dữ liệu và thực
hiện các câu truy vấn. Ngoài ra, trong PHP 5.1, các nhà phát triển PHP tiếp tục
có những cải tiến trong nhân Zend Engine 2, nâng cấp mô đun PCRE lên bản
PCRE 5.0 cùng những tính năng và cải tiến mới trong SOAP, streams và SP.
PHP 6
Phiên bản PHP 6 được kỳ vọng sẽ lấp đầy những khiếm khuyết của PHP
ở phiên bản hiện tại, ví dụ: hỗ trợ namespace (hiện tại các nhà phát triển vẫn
chưa công bố rõ ràng về vấn đề này); hỗ trợ Unicode; sử dụng PDO làm API
chuẩn cho việc truy cập cơ sở dữ liệu, các API cũ sẽ bị đưa ra thành thư viện
PECL...MySQL
Trang 14
GVHD: Thầy Nguyễn Lương Anh Tuấn
Khóa luận tốt nghiệp
2.2.
SQL là chuẩn ngôn ngữ ANSI để truy cập CSDL.
SQL là viết tắt của Structured Query Language – là một hệ quản trị cơ sở dữ
liệu mở, hoàn toàn miễn phí. MySQL được sử dụng phổ biến trong lập trình
website động với PHP, chúng ta hay gọi chung là lập trình PHP & MySQL.
MySQL cung cấp cho chúng ta cách truy vấn, thao tác với dữ liệu tương tự như
SQL nhưng ở mức độ đơn giản hơn.
Cấu trúc dữ liệu MySQL :
- MySQL lưu trữ dữ liệu theo dạng bảng.
- Mỗi cơ sở dữ liệu bao gồm 1 hoặc nhiều bảng
- Mỗi bảng chứa một hoặc nhiều cột để lưu trữ giữ liệu, cột có thuộc tính như:
kiểu dữ liệu là gì, khóa chính, chiều dài dữ liệu, …
- Dòng là tập hợp giá trị của tất cả các cột trong bảng, một bảng thường bao
gồm rất nhiều record.
Một số kiểu dữ liệu phổ biến thường được sử dụng trong MySQL
Kiểu dữ liệu
Mô tả
INT
Định dạng kiểu số nguyên có chiều dài từ 0 –
4294967214
Float
Định dạng số thực có chiều dài 4 bytes
Double
Định dạng số thực có chiều dài 8 bytes
Trang 15
GVHD: Thầy Nguyễn Lương Anh Tuấn
Khóa luận tốt nghiệp
Char
Định dạng text chiều dài từ 0 – 255
Varchar
Định dạng text có chiều dài từ 0 – 255
Text
Định dạng text có chiều dài từ 0 – 65535
Longtext
Định dạng text có chiều dài 0 – 4294967214
Date
Lưu trữ thời gian theo định dạng YYYY-MM-DD
DateTimeTimeStamp Lưu trữ thời gian theo định dạng YYYY-MM-DD
HH:MM:SS
decimal
Lưu trữ số thực theo đinh dạng chứa dấu “,”
Có các tính năng sau:
o Cho phép truy cập dữ liệu.
o Thực hiện các câu truy vấn
o Tạo mới, cập nhật, delete dữ liệu
2.3.
Yii Framework
2.3.1. Khái quát
- Yii là PHP framework hỗ trợ tốt cho việc phát triển Web 2.0
- Yii giúp nhà phát triển xây dựng những ứng dụng phức tạp với thời gian
nhanh nhất
- Yii được phát âm là Yee hoặc [ji:], Yii là viết tắt của “Yes It Is!”. Ý nghĩa
của nó là “Is it fast? ... Is it secure? ... Is it professional? ... Is it right for my
next project? ... Yes, it is!”
- Yii hoàn toàn miễn phí, là ứng dụng Web mã nguồn mở được phát triển bằng
ngôn ngữ PHP5. Yii giúp cho việc phát triển ứng dụng Web tuân theo một
Trang 16
GVHD: Thầy Nguyễn Lương Anh Tuấn
Khóa luận tốt nghiệp
khuôn khổ nhằm đảm bảo tính hiệu quả, tính mở rộng, và tính bảo trì của sản
phẩm.
- Tối ưu hiệu suất, Yii là sự lựa chọn hoàn hảo cho các dự án có quy mô. Yii
cho phép nhà phát triển kiểm soát toàn bộ cấu hình. Yii cung cấp các công cụ
giúp kiểm tra và sửa lỗi ứng dụng dễ dàng.
2.3.2. Lịch sử
- Yii được sáng lập bởi Qiang Xue, người trước đây đã phát triển và bảo trì
Prado framework. Dự án Yii được bắt đầu từ ngày 01/01/2008 và sau gần một
năm phát triển, ngày 03/12/2008 Yii 1.0 được chính thức phát hành.
Ý tưởng
- Yii kết hợp nhiều ý tưởng từ các framework và các ứng dựng Web nổi tiếng
khác. Dưới đây là một số ý tưởng Yii đã tham khảo:
o Prado: là nguồn gốc chủ yếu cho ý tưởng phát triển Yii, bao gồm:
component và mô hình lập trình hướng sự kiện, các lớp database, mô
hình kiến trúc ứng dụng, i18n và l10n, và nhiều tính năng khác
o Ruby on Rails: Yii kế thừa quy ước về cấu hình
o jQuery: được tích hợp trong Yii framework
o Symfony: Yii kế thừa ý tưởng về filter và kiến trúc plug-in
o Joomla: Yii kế thừa cách thiết kế module và message translation
- Là framework ngôn ngữ PHP, mà điểm nhấn của nó là khả năng mở rộng,
khả năng tái sử dụng.
- Khả năng tái sử dụng và mở rộng của Yii rất cao. Yii là 1 Framework hoàn
toàn hướng đối tượng. Mọi thứ trong Yii đều có thể tái sử dụng và mở rộng
rất dễ dàng.
- Yii hỗ trợ trên tất cả các DBMS bởi PDO (PHP Data Object).
- Hiệu suất xử lý của Framework Yii hiệu quả cao. Biểu đồ dưới đây cho thấy
hiệu quả hơn hẳn so với các Framework PHP khác. RPS là viết tắt của
Trang 17
GVHD: Thầy Nguyễn Lương Anh Tuấn
Khóa luận tốt nghiệp
“Request per second” nhằm mô tả việc làm mới ứng dụng có thể xử lý trong
mỗi giây.
Nguồn www.phpide.com
2.3.3. Luồng xử lý logic
Trang 18
GVHD: Thầy Nguyễn Lương Anh Tuấn
Khóa luận tốt nghiệp
• Về cơ bản, cách làm việc của Yii được thực hiện qua các bước sau:
1. Yêu cầu (request) của người dùng được trình duyệt gửi cho Web server.
Web server chuyển tiếp request cho index.php xử lý. Index.php có chức
năng tạo một thực thể Application và thực thi nó
2. Application tạo ra các App Component (App Component là các thành phần
của ứng dụng, vd: UrlManager, HttpRequest)
3. App Component gửi các thành phần của mình cho Application quản lý
4. Application xác định các controller và action từ request và gửi chúng cho
UrlManager quản lý. Tiếp đến Application tiến hành thực thi controller
5. Controller có thể tạo ra các model để xử lý dữ liệu
6. Model gửi dữ liệu cho Controller
7. Controller gửi các biến, các thể hiện của model cho View
8. View tạo ra các Widget
Trang 19
GVHD: Thầy Nguyễn Lương Anh Tuấn
Khóa luận tốt nghiệp
9. View thực hiện trình bày trang web
Đôi khi chúng ta cần thay đổi workflow để tùy biến trang web. Yii cho phép
chúng ta làm được điều này qua workflow sau:
Yii của Application là để giải quyết các request của người dùng. Gửi chúng cho
controller thích hợp để tiếp tục xử lý. Application là trung tâm quản lý toàn bộ
cấu hình của ứng dụng.
• Các công việc chủ yếu của Application là:
-
Chuẩn bị khởi tạo Application (Pre-initializes the application)
-
Thiết lập autoloader và điều khiển error (Set up class autoloader and
error handling)
-
Đăng ký các App Component côt lõi (Register core application
components)
-
Nạp cấu hình ứng dụng (Load application configuration)
-
Khởi tạo Application (Initialize the application)
Trang 20
GVHD: Thầy Nguyễn Lương Anh Tuấn
Khóa luận tốt nghiệp
-
Raise onBeginRequest event
-
Xử lý request của người dùng (Process the user request)
-
Giải quyết request của người dùng (Resolve the user request)
-
Tạo và thực thi Controller (Create & Run controller)
-
Raise onEndRequest event
Để cấu hình Application ta sử dụng file (hoặc array) để khởi tạo giá trị của các
thuộc tính. File cấu hình được chứa trong thư mục protected/config/main.php
của ứng dụng. Cấu trúc như sau:
Trang 21
GVHD: Thầy Nguyễn Lương Anh Tuấn
Khóa luận tốt nghiệp
2.3.4. Mô hình MVC
MVC ( model-view-controller)
MVC là một mô hình kiến trúc phần mềm được sử dụng phổ biến trong phát
triển ứng dụng Web. Mục đích chính của MVC là:
• Tách riêng các thành phần logic với giao diện người dùng
• Giúp cho việc thay đổi các thành phần dễ dàng mà không làm ảnh hưởng
đến các thành phần khác
• Dễ dàng phát triển và bảo trì ứng dụng
Model
Là thể hiện của một cấu trúc dữ liệu cơ bản. Model được sử dụng để lưu
trữ dữ liệu và các quy tắc business liên quan.
Model đại diện cho một đối tượng dữ liệu duy nhất. Nó có thể là một row
trong database table hoặc là một form input của người dùng. Mỗi trường (field)
của object là một thuộc tính (attribute) của model.
Trang 22
GVHD: Thầy Nguyễn Lương Anh Tuấn
Khóa luận tốt nghiệp
View
View chủ yếu là các yếu tố giao diện người dùng. Chịu trách nhiệm trình
bày các thể hiện của model ở dạng mà người dùng mong muốn. Nó có thể chứa
các câu lệnh (PHP, ASP, …) nhưng chỉ với mục đích trình bày.
Controller
Công việc chủ yếu của controller là điều kiển, xử lý các request của
người dùng. Liên kết model với view. Kiểm soát các response.
Best MVC Practices
Một mô hình MVC tốt thì cần phải thực hiện đúng các nguyên tắc sau:
Model
•
Nên
-
Chứa các thuộc tính đại diện cho các dữ liệu cụ thể
-
Chứa các business logic nhằm đảm bảo các dữ liệu đáp ứng được yêu
cầu thiết kế
-
Có thể chứa các mã thao tác với database
• Tránh
Trang 23
GVHD: Thầy Nguyễn Lương Anh Tuấn
-
Khóa luận tốt nghiệp
Sử dụng $_GET, $_POST hoặc các biến trực tiếp gắn liến với request
của người dùng
Nhúng các mã HTML hoặc các mã trình diễn khác (echo, …)
View
•
Nên
- Chứa các mã trình diễn, như HTML, PHP, ASP,… đơn giản để thể hiện,
định dạng dữ liệu
- Có thể truy cập các thuộc tính (property) và phương thức (method) của
controller và model nhưng chỉ với mục đích trình bày
•
Tránh
-
Chứa các mã truy vấn dữ liệu
- Truy cập trực tiếp đến $_GET, $_POST, hoặc các biến tương tự khác đại
diện cho request của người dùng
Controller
•
Nên
- Có thể truy cập $_GET, $_POST và các biến tương tự khác đại diện cho
request của người dùng
-
•
2.4.
Có thể tạo ra các thực thể (instance) của model
Tránh
-
Chứa các câu lệnh truy vấn SQL
-
Chứa bất kỳ mã HTML hoặc các ngôn ngữ trình diễn khác
Javascript, jquery
2.4.1. Khái quát về Javascript:
Đặc tính của ngôn ngữ java script:
JavaScript, theo phiên bản hiện hành, là một ngôn ngữ lập trình kịch bản dựa
Trang 24
GVHD: Thầy Nguyễn Lương Anh Tuấn
Khóa luận tốt nghiệp
trên đối tượng được phát triển từ các ý niệmnguyên mẫu. Ngôn ngữ này
được dùng rộng rãi cho các trang web, nhưng cũng được dùng để tạo khả
năng viết script sử dụng các đối tượng nằm sẵn trong các ứng dụng. Nó vốn
được phát triển bởi Brendan Eich tại Hãng truyền thông Netscapevới cái tên
đầu tiên Mocha, rồi sau đó đổi tên thành LiveScript, và cuối cùng thành
JavaScript. Giống Java, JavaScript có cú pháp tương tự C, nhưng nó gần với
Self hơn Java. .js là phần mở rộng thường được dùng cho tập tin mã nguồn
JavaScript.
Javascript là một ngôn ngữ có đặc tính:
• Đơn giản.
• Động (Dynamic).
• Hướng đối tượng (Object Oriented).
Ứng dụng:
JavaScript là một ngôn ngữ lập trình dựa trên nguyên mẫu với cú pháp phát
triển từ C. Giống như C, JavaScript có khái niệmtừ khóa, do đó, JavaScript
gần như không thể được mở rộng.
Thiết kế trang web động và một số hiệu ứng hình ảnh thông qua DOM.
JavaScript được dùng để thực hiện một số tác vụ không thể thực hiện được
với chỉ HTML như kiểm tra thông tin nhập vào, tự động thay đổi hình
ảnh,kiểm tra sự kiện tác động lên website...
2.4.2. Khái quát về Jquery:
JQuery chính là một thư viện kiểu mới của Javascript giúp đơn giản hóa
cách viết Javascript và tăng tốc độ xử lý các sự kiện trên trang web.JQuery
thêm tương tác Ajax vào trong trang web của bạn.JQuery được thiết kế để
thay đổi cách viết Javascript của bạn.
JQuery là một thư viện Java Script mới với rất nhiều functions và classes
được dựng sẵn. JQuery nhanh chóng, ngắn gọn giúp việc duyệt các tài liệu
HTML, gỡ rỗi sự kiện, thực hiện các hoạt hình và bổ sung tương tác Ajax
vào Website trở lên đơn giản. jQuery được thiết kế để thay đổi cách chúng
ta viết JavaScript. Đặc biệt Jquery hỗ trợ mạnh khả năng làm việc với API. •
Nếu chuyên về thiết kế web và biết một chút về JavaScript thì khi dùng
Trang 25