Tải bản đầy đủ (.docx) (47 trang)

BÁO CÁO THỰC TẬP TỐT NGHIỆP DU LỊCH VIỆT NAM

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (848.27 KB, 47 trang )

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THÔNG TIN

 !"# $
BÁO CÁO THỰC TẬP TỐT NGHIỆP
NGÀNH CÔNG NGHỆ THÔNG TIN
MÃ NGÀNH: 05115
ĐỀ TÀI:
DU LỊCH VIỆT NAM
SINH VIÊN : Huỳnh Đức Dũng - 06T1
Nguyễn Văn Huỳnh – 06T2
ĐƠN VỊ : Công Ty Toàn Cầu Xanh
CBHD : Nguyễn Hữu Dũng
ĐÀ NẴNG, 01/2011
Tãn âãö taìi åí âáy 2
LỜI CẢM ƠN
Chúng tôi chân thành cảm ơn anh Nguyễn Hữu Dũng đã tận tình giúp đỡ, hướng
dẫn, góp ý cho đề tài. Chúng tôi xin cảm ơn ban lãnh đạo và tập thể nhóm lập trình của
công ty TNHH TT – KTS Toàn Cầu Xanh đã tạo điều kiện thuận lợi, hỗ trợ rất nhiều
trong quá trình thực tập. Cảm ơn sự giúp đỡ quý báu của các bạn hữu về tài liệu và
kinh nghiệm.
% &#'()(*+, /0111 
Tãn âãö taìi åí âáy 3
LỜI CAM ĐOAN
Chúng tôi xin cam đoan:
 Những nội dung trong báo cáo này là do chúng tôi thực hiện dưới sự
hướng dẫn trực tiếp của anh Nguyễn Hữu Dũng.
 Mọi tham khảo dùng trong báo cáo này đều được trích dẫn rõ ràng tên
tác giả, tên công trình, thời gian, địa điểm công bố.
 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, chúng


tôi xin chịu hoàn toàn trách nhiệm.
Sinh viên,
Huỳnh Đức Dũng
Nguyễn Văn Huỳnh
% &#'()(*+, /0111 

MỤC LỤC
CHƯƠNG 0
MỞ ĐẦU
I. Giới thiệu đơn vị thực tập
Công ty TNHH Truyền Thông - Kỹ Thuật Số Toàn Cầu Xanh234#56 5789:;
<"6= '6,>?>??#@ '#5 5+ 59A#6B '8=CD#+# '6 5 '5E5=9
2F '#5G,HC= 'I 5J#K< 535HLH85+CM #+#N 'O 'CP  E 
3Q 'R85+885S "E"5HLH 57 ; 53T '5;Toàn Cầu XanhJ56=#U234#
"F2F 'V#5,P P  5* P '6L 5 '5;"LH 5N##5,P "W X29 '
YF 'V3Q ,( #G#W ',Toàn Cầu XanhW 2Z '56 5#@ 'L5+#556 ' 5["
23C 5\ ''R85+8X3 5Q" '2H J56] '#5=L5+#556 'D 5\ 'R
85^"#U#5Q34 '#=#@ 'D'+56 5548_
:D"O#PC`56 5"F2T a#U,( C= 'I 5J#K<9:;<"6A#
2"9 5\ '; (#5#5=L5+#556 '#5b 'WcL5W ' 'd ' * '#=Ce 52F#G '#X
2F 'V#RH  * '#=#5Q34 'R 85^"2M '6,#6 '#U 5\ 'R 85^"X5T
85O#OL5+#556 '
II. Giới thiệu đề tài
:;<"C= ' 5\ ' f"'S 2*,#U3D#85+CM Q 34 '9=J '234#
5e 5R 562M"2H 5* 5; 5Q8g L5+#5BX34 'L5+#5hX#H2H :;
<"2 ' '6,#6 'f '<H 53 f"???:;<"2U C;34L5+#5
hX#H f"??6C;34L5+#5hX#H6 f"??XL5+#5a#52H 
:;<"c34#= XC;3434"O#P 2S6C;34:D
X#2Ff 'C3` 'C 'e 556 ' f"E34 'L5+#5L5=R '?i:;<" '6,
#6 'L5j '2a 56"F2M"2H 5Q8g CP R 2Za#55H'DBXL5+#5

F2a f"??#V '3D#29C;345 578da#5L5=R '???k
2Z '2U ''U8L5=R 'ilm0'Rh,H;#6"#5=C;=2F '
d5J#n 2U 5U"#5b '""= '"X N 'O ' 5o#6=I 5J#
a#52M'U885S a#5:;<" '6,#6 '6"F2M"2H ,P5(#5CP 5H'D
mJ+ pm-a#5:;<"q6"F5;5X ''Z"r685S "E"#59,CP 
2F 's5L5+#52H :;<"D 5\ '#5H#"C85= CP ,5eL5+#5
a#5n6 '2a 5a234#o2F#G"e 5 5thl0B<HL5+#5#U#685S 
"E"pm-a#5:;<"q5en6 '#5u 5\ '5e 5R 5"e 5#5O8234#P 
rhl0vBYZ '5t85S "E"CP 2F '#] # '#Q8 5E5W ' 
w(#5Ea#5 53e"23t 'e""+,xy#+#2a 5a#5'S aC(5; 
9#+#h+ f 2z#R :Drd 5\ '5e 5R 5# '#Q8d '3t@ '6
L5+#55e92"2H #5= '3t@ 'CR '5;"a#5hR 5CQ5J#H
c'X ' 53"F"9 '%5FEa#5{9 2a#59 #5u5e 5R 5P 
r{9 |#G9 6="H#R" 57 #5u Le 5#5o R 52}8{P
#9 5r#] #U 5\ '#5N# f '3T 'J 5385S "E"CP 2F 'e"
23t 'e"xy5e#] P LH2H D 5E 5656 'L5+#59 2M# '#Q8
5W ' P r#5=85~8P 5;2z56 '=  
III. Mục đích đề tài
1*,J '5;5X '85S "E"pm-a#5:;<"qCP r62; 5=92F '
•R '+5e 5R 5:;<"D9 ECP =6 5H'D
y '94 57 #5= '6 5L 5= 5a#5:;<"
IV. Mục tiêu và kết quả đề tài
• e"5MKL858
• e"5M€€y!
• e"5Ml=='y8x8
• l0B
•J+  6,#W ';##S 29#G 5U"6*,J '2M5;5X '(#5548'\
r62; 5=9•;5X '# '#Q8L5R f ' 53
• mJ6=l0B2a 5a234#o2F#GL5+#5
•  e"23t '2e"5W ' #S 5H 5656 'L5+#59 ; 5P #W '

P 
• 1*,J '234#rC#2MR 5#5O8d2; 5=9234#2f 'P r
• 1*,J '234#"9 '%5Fa#5CJ#,H
5=#5b 'W2*,6"F2E65,65H5J#<5U"#5b 'W"= ' 57 234#J
'U8_#G#+#5S,#W53D 'g 2M5J#5; 56 5"F2E6X '5;8
CHƯƠNG 1
CAKEPHP
I. Giới thiệu
KL8586"FC"r=CL85+CM  5 5#G0•0@ '#+#"W5e 55HLH85wH
234#H2H  53x#v#=Cx=#= my88 'C= K= C=C6y:KyO#
2(#5#5( 5#G#5b '6# '#Q8"F#QCb#C"r=CL#5=85~8 '3t@ '0•0`"o
#Q82F85+CM "F#+#5 5 5#5U '"FN 'O 'r"9 5"6L5W '6""Q2Q
#N( 5 55=9
yFC"r=CL0•06"FF#=#= #+#"%53; D86"WC3t 'C "
'b8 '3t85+CM *,J 'C 'r 5 55T ‚3` '#5( 5;#ƒO '#+#
C"r=CL6# '#Q8#5= '3t85+CM D#+##5N# f '5W '53t '6"F#QCb#
#TR 2M5o#U5M*,J 'CP N 'O '#G5o•S5H 5\ ' '3t85+CM 0•0#U
6L 5 '5;"6"F78#+#53; #G5o6#QCb#2M'b8#5b '85+CM  5 5
5T e5o#U5MƒO '#+#"%#TR #G5od"F8C=„# 6,D#+#8C=„#L5+#
<53 ';#*,J '"FN 'O 'rCP "FC"r=CL"% 'Z "` 53KL0•0
C…C6 '#U 5\ '4(#5#G U:D U '3t85+CM L5W '#5†ƒO 'L 5 '5;"#G
5o"6#] L 5 '5;"#G 5E '3t85+CM L5+#6 5\ ' '3t2%@ '685+CM
C"r=CLC"r=CL#V ' #7,5T e U234#@ '6LM"C` 5E '3t85+
CM N 'O '{P #9 52U@ '"FC"r=CL 53KL0•0#U 5E57 4"6Q#R
'3t85+CM P h C= '8C=„#85R5=h3D#6h‡#'X ' 52M#QCb#
N 'O 'YE 6,C` P n6 '5T #5= 5\ ' '3t85+CM "D2M'Rh,H H
#5b '#@ 'h3D##GC"r=CL
II. Cấu trúc thư mục của cake
s59 "`'UKL9 c5Q,234##+#=C#5( 5
 88K5N#+#6=C#5=N 'O '#G9 53"O#88653"O#85+

CM N 'O '#G9 #5N#+#=C6#+#P C= '
 #LK5N#+#53; #=CKL{9 L5W ' P 2O '6= 5\ '53"O# 6,Cd
L59 H9 2 '6"'e
 =#K5N#+#6;KL#5j '59  53C"#=8,C'565,2w#+#
='{9 #U5M3C\6;#G#5( 59 C= '53"O# 6,
  CK5N8C,#=53"O# 6,#U5M#5N#+#53; 5C8C,#5j '
59  53'UBryC#5=;#'`"F "
:;##553"O#53; "z#2a 5#=CKLd53"O#N '@ '6"#5=#UL5R
f '2M 5EN 'O 'L5+# 5#5u"FR #62zKL:D#QCb#53"O#
6,9 #U5Mn6 ' * '#Q885P R KL2%Z 9"6L5W 'R 553` 'DQ
#NN 'O ' 6=9 2%H{R '"WR#5H#QCb#53"O#KL"z#2a 5
53"O# yWR
88

#= '>

#= C=C>

#="8=  >
> 858
=#>
"=>
8' >
>

"8>
 =C>
r>

" >

CC=C>
58C>
,=>
rC==>
#>
>
"'>
„>
 53  "O#  #5  #5=  N '  O '  #G
9 
 K5N#+##Q5e 5#5=#QCb#
#5 '#5j '59  53LH X#T`
\;R="7C,#78#= C=
 K5N#+##= C=CC= 'N '
O '(OCˆ#= C=C858
 K5N  #+#    C 
#="8=  
 K5=  85~8  9  8=,CM  L5
KLD>88 53m=#" v==
 K5N#+#=# T n C
ƒ_DhX#H5U
 K5N#+#"=
 K5N#+#8' 
 K5N#+#53"O#6#+#
 m@ '#5=##56='
 K5N#+#53; 5C58C,
 K5N#+#53"O#6#+#r
#5=;#5M 5a'5=r#8
 !" 
 K="CC=C8'

 •8C
 K+#,=N 'O '
 m=#" v==#5=N 'O '
 K5N#+#N 'O ',5
 K5NQ#N 6=
 K5N2Z5o
 K5N#+#€B#C8
#L>  K5N#+#53; #=CKL
 =C>  K5N#+#53; 5C8C,#5=Q
#R#+#N 'O '
Figure 1: Cấu trúc thư mục Cake
III. Mô hình Model View Controller – MVC
KL* 5=#QCb#y:K#5=N 'O '#G9 Y*,6"W5e 55HLH234#
@ '5W '53t 'C= '85+CM 85S "E"`2U#=234##56"85S #5( 5
"=r#= C=Cy=#5==6 F3T '+#Dr#5=;#Q
C65M 5a#= C=C#5=Q#R#+#; 55,#C8#5= 5786=68C='C"=ryF
N 'O '2M 5e 50•0CF  5\ '#5N# f ' 6,C= '#@ '"F#=6"#5= UL5U,
Ce"  6'
Y*,6] 'C,E =r2M 5e 5#5=0•0#C8 '
Figure 2: The typical flow for PHP scripting
K '`,P#S2H "F0•0#C8[ ';#'…"F‰v-5=z###L6="F
 L
B#C8ƒ_\;62U'`,P#S\;CJ#H8D
B#C8 57 Q#N\;C6ƒ_\;
B#C89=C=86=CrC UDCe 5,;#G# 
<UU"9"o5N234##5NC= '"F0•0#C8{[ ';#ƒO '56" #
'3t85+CM #`ŠQ#R#+#56"5W '53t '6=#+# '=6L5+#6"#5= U#U
5M'R"234#J35dK+#N 'O '0•085N#98 5Q@ '#+#2X34 '#U5M'o
Q#N2*C= 'N 'O '2U6#5† 5ƒ@,5F#6=#+#H 6#+#5H78#5,M 
6=#5b '<'3t85+CM L5@ '#+#2X34 '6#+#D8#U5M#QCb#N 'O '5=

5E#+#5
y:K85+CM JCP 0•0=r66"FLI575;hRC= ';#9=C#+#2X
34 'D85;@ 'C= '=6 FN 'O 'yO#P#5( 52[ 'y:K69=C"‹
#5N# f '#GN 'O '234#H"FS 6#5†"FS e5H] '#=234#'R"3
5dKL29234#"O#2(#5 6,[ ';#L5W '#5†# '#Q86 ',P #5=y:K#U5M
6"234#"6#] [ ';#ƒO '"F853T '85+8 5Qh+ #5= T2M3C\#+#5=9
2F 'C= 'N 'O 'YT 'R 2zP #+##G9 "F#+#5#5‡##5‡ #5=85~8KL
548 5E#+#6 ',P D 5"6L5W '@ 'Q#N"%#5†2a 5 6=
IV. Cách làm việc của MVC
y:K#U5ML5+# 5@,5F#6=C"r=CL"69 2 '6";# 53 ' U#5 '
U6";# 53
Figure 3: How Cake makes use of the MVC structure
K '`,P#S"FC 'DN 'O '[ ';#'…"F‰v-5,##L6=
"F L5=h3D#"F‰v-2M 5e 553t '#U#QCb#
58>>Œm=" •#=">Œx88#= •>ŒK= C=C•>Œx#= •>Œ0C"C#•
m8#5C '3t'`2#C885* (#5#QCb#‰v-6h,H2a 5#= C=C
6=2M5J#5<U#V '#U5M#5,M 8#@ 'DQ#N56 52F '6#+#5"XD
#= C=C
•6"C= '#= C=C#U5M#S 2Mƒ_ 5E\;5T #+#5"X=CrC
`8#5C<U#U5M#59, 5EC,Q D#T`\;6‡8H8\;
s5"=Q,8Q#N\;d5=z#'`\;2H  UCRE
=8#G UD#= C=C
K= C=Cƒ_\;6QDr
:r5P"6=Q#N5HLH5=z#5M 5a\;D#= C=CQ6'`;#
Q#G UDCe 5,;#G# 
-4(#5#G;#ƒO 'y:K2M85+CM #+#C 'r6#+##5N# f '234#z89
6#+# 5;"O#U5M234##5#‡e7,#5=85~8#5† 5ƒ 5 55T 57"#5( U#U
5M'b8C= ';#'ŽCXyF‹234#'\C= 'Xh+Ce 53T '+#D
53t '53t 'Q 2Ec` T 6=2UC= '"F"=•M234#3T '+#R,
C#5†"F T6"#5= Un6 ''Rh,H 5\ 'Q 2E

IV.1. Model
C= 'KL0•0"F"=5M 5a"FR '#T`\;#O5M-;#U"F"=
Q#R"%0•0P h 2H C,#785P"#5† 5ƒ5,U#+#R '5dR '2E`
C= '"=y=#V '#5N#+##=2a 5 '5Ih 5;#G UD#+#
"=L5+#<U#V '2a 5 '5I#+#h‡#2EL; \;L55P"6#78 57\;
#5="=2Uy=#U5M234#5M 536S '\;#GN 'O 'y=#V '6 T
R,C ='#P h D"=2U P 234#2a 5 '5I:(O H#U"F"=
2M5M 5a#+#5TQ#R#+#56 52F 'P h 2H  U 53"+  P 234#
2a 5 '5IC= '"=2U
IV.2. Controller
C= ' KL0•0#= C=C2EL5M ] 'N 'O '5,='##GN 'O 'y‹
C 'r,P#S234#CJ#H82H "F#= C=C#O5M T"6 '3t@ ' 5786=\
;0•B5=z#l!234##5Q8 57 B2U#= C=C='##5Q8 57 2+8N ''e234#
9=CK= C=C='#53t '#5N#+#t'oD#+#"=2MC,#78\;6#V '#U
#+#  #5N#  f ' 53  LM" C  C,#78  2E  L5M   KX  #@ '  #= C=C  #5,M  2+8
N '=8DrK= C=C#U5M234#5M 53S '='##GN 'O '<532%2E
#78`CP "= P #UQ#R ='##G"FN 'O 'K= C=C P G, 5;"
#+#5=92F 'D"=5HLHL5=5o#53t '234# U2H  53p"= 5
#= C=Cq
IV.3. View
:r6#+#2SC=85=z##+#2+8N '234#'`C`9D '3t@ 'L5"F,P
#S234#ƒ_KTR #5b ''Z""%"CL8 53•y- 5b 'D"%0•0 53 '
#5b '#V '#U5M#U#+#=C"L5+##5=2SC 531y-0m@,5F#6=5=6 #R 5
:r#U5M234#5M 536S '5M 5a#GN 'O '
V. Quy ước đặt tên của cake
V.1. Cách đặt tên Controller
P D885R6X 5E685R#UK= C=C234# X5=(O‰CK= C=C
<H2X34 '#U 5E5T "Fd5ed5N585R‡2SD"F#5\5= 536
OnlineUsersControllers5W '@ 'L(J'9#53D2M#5#‡#+#d
P  85R6 X 5ED ˆ#= C=C X 5= 62W 6 858 ( O 53

users_controller.php<H2X34 '#U 5E5T "Fd5e5=#+#d6
Q'9#53D(O 53online_users_controller.php.
V.2. Cách đặt tên Model
P D885R6X( 53‰C<H2X34 '#U 5E5T "Fd5ed5N585R‡
2S[ 'L(J5= 53•  ‰C
P 85R6X(D2W858 53user.php<H2X34 '#U 5E5T "Fd
5e5=#+#d6Q'9#53D 53online_user.php.
V.3. Cách đặt tên View
P r234#Q,`P #G56 52F '#= C= '#= C=C:(O 532X
34 '  #U  "F  853T '  5N#  6 UsersController::show()  5e  23t '  g  6
88>r>C>5=r#8
V.4. Cách đặt tên bảng
P R 'C= '#T`\;85R6X 5ED#+#d234##5C`Q'9#53D
53#= C,ˆ#={9 #U5M'52|h3D#2zP  6,[ ';#5H785F#( 5
•#5=P R '"69 "X 
:(O9 #U5M5H78 53
$useTable=’mytable’;
:D",6P #G"FR 'C= '#T`\;
VI. Components
K="8=  6#+#D8234#2a 5 '5I2M5J#5#+# 5;"ON 'O '#O5M2M5‹
C4#= C=CKL*,J '‘  5E#="8=  #5j '59  53x5#5=+#5J#
'3t@ '6 5U"!"B= vh• Cx##5=2EL5M C,#78 '3t
@ '6 5U"K="8=  #U234#234#2a 5 '5I` '3t@ '
Q  #R  #+#  #="8=    "6  9  85+  CM  85R  234#  3  C\  C= '  53  "O#
88>#= C=C>#="8=  
VII. Helpers
•8C6#+#D85‹C42M'R"5t' 85+CM [ ';## '#Q8#+#5=C#2M
9=C#+#56 585S 5M 5aK+#58C234#3C\C= '53"O#88>r>58C
{R '"WU"‡658C#U‘ C= 'KLYMe"5MLI5T EKL58C5%,
6= LKLx0’9C '58>>8#L858=C'

•8C yWR
•y- lb89=CJ2F '#+#56 585S •y-
6#V '#5=85~89=C#+#5u•y-
[ ';##5Q8 57 685* (#5#+#H 
•8C 6,234#'oC= 'r[ ';#
ƒO '2X34 '•5"YM='Z""F
5"#5HD58C•y- @ 'H
$helpers=array(‘Html’).
=C" lb89=C#+#=C"6ƒ_m@ '2X
34 '•=C"D#+#56"#G U2M9=#+#
56 585S =C"
x„ lb82M2T 'R #+# 5;"Ox„<U
,P  #S  #*  ; 5 $javascript-
>link(array(‘prototype’))C= '
r  5"  #5H  0C==,8  €B#C8
C"r=CL2M6";#2b '#+#5C= '
"Fr
€B#C8 lb82T  'R  #+#  5;"O €B#C8
5369=C2X34 '€B#C8•„#
<==  €B•<  d  "F  "R '  @ '
$javascript->object(). YM  '‡
"F  J  L;  D  "F  56 5  85S  @ '
$javascript->event().
0' =C lb82a 59 '\;56 5 5EC '
5,‡8H8\;JCP 65"X
B= K '#Q8#+#56"2Mƒ_DCe 5hR
_  =   :(  O  2M  23  C  "F
"'@ ' $session->flash().
YM2o#Q#R#+#'+Ca3C\C= '"F
= #5=C3D#@ '

$session->read().
 K '#Q8#+#56"2MƒbD5=z#
C '
" lb8hR _6"
1y- lb85;#5† 51y-YM9=C#+#56 5
85S 1y-@ '56"$xml->elem().
Figure 4: Helpers
VIII. Data Validation
m:= 6"F85S 5H ,H#G2R" R==6 } 6#5( 5+#\;
"` '3t@ '5W 'h"Fr=C"KL*,J '6LI57P#5^ 
{9 #5†2a 5#+#h‡#C= '"F"=6KLcJ2F '+8O '#+#h‡#2UL5"F
r=C"234#LH XD"=2UK+#h‡#2U#V '#U5M+8O '#5=\;1y-
IX. Quan hệ các bảng trong cakephp
C= 'KL0•0h 5;'\#+#R 'C= '#T`\;234#2a 5 '5I5W 'hJ
LH548=#= {[ ';#ƒO 'KL0•0•vy=„#C= "88 '#U
5M3C,O#U\;P h 6=5=z#d 5ER 'L5+# 52T 'R 6 5 5
5T "6L5W '#S 85RH 5E#*; 5C,Q B•-85N#98D 5E#*; 5€•’<
\
2%H#ULMh 5;#TR '\#+#R 'C= '#T`\;
= == 5= 
= =" ,5" ,
" ,=" ,5 = '=" ,
YMe"5ME#+#"Xh 5; 6,#5b '*,J '"FN 'O '='2T 'R @ '
#= '2MLM"C“ 'O ' 6,c'b8#5b '5R=7 E#+#LH548C= '"F
#+#5n6 '5T @ 'KL9="FN 'O 'KLP ='
5HLH\;
CREATE TABLE `posts` (
`id` int(11) unsigned NOT NULL auto_increment,
`name` varchar(255) default NULL,
`date` datetime default NULL,

`content` text,
`user_id` int(11) default NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `comments` (
`id` int(11) unsigned NOT NULL auto_increment,
`name` varchar(100) default NULL,
`content` text,
`post_id` int(11) default NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `users` (
`id` int(11) unsigned NOT NULL auto_increment,
`name` varchar(100) default NULL,
`email` varchar(150) default NULL,
`firstname` varchar(60) default NULL,
`lastname` varchar(60) default NULL,
PRIMARY KEY (`id`)
);
{R 'Cc#5N 5+#5#+#+#'R5; #U#+#6='s5"F6H234#9=
C Uc234#'+ "F+#'RdR 'CK5b_C[ '#U"FC3t 'C= 'R '8=P
CˆK+ 6,c2b '"#5DC3t 'C= 'R 'C UP LH"F+#'RD
6H3T 'JC= 'R '#="" "‹#5b5(#5c234#'+ D"F6HC= '
#@ '"FLM3T 'JC= 'C3t '548 6,#U"FC3t 'P 8=ˆc2b '"#5
DC3t 'C= 'R '8=
C= '#+#"=9 c'R5(#5C…C6 '8=#+#LH548 6,2MKL#U5M
L~=8#5b 'D 5•T  \9 #U5MLM"CX#+#59 d#5†2a 5#+#LH548
6,@ '2z#( 5#= '
“Belongs To”
s5LH548#+#R '9 #S  U#5=KLLMh 5;'e"‹R 'D#+#R 'L5+#

{='c#U"Fh 5;p= '=qC= '"FF2W#=8#+#R 'YSP "‹6
H='c234#'+ D"F+#'R2%#5†2 5"‹68=='p= '=q"FC
{9 2z"FC3t 'CˆC= 'R '8=2M3"Xh 5; 6,y‹R ''5C= '
R '8="FC= '#+#R ''5dR 'Cc234#39[ ';#'+ "F’m#G U
DCˆ
YM*,J 'h 5; 6,C= '"=2SP C= '"=0=88>"=>8=858
5P"6=#+#] '#=2M'+  U"Fh 5;p= '=qD‰C"=
<?
class Post extends AppModel {
var $name = 'Post';
var $belongsTo = array('User');
}
?>
{9 6"2E 6,[ '#+#5'+ "F"R '#G#+#"=2U685S #Gh 5;D
"=5; 9{H 2X34 ' class KL@ '2M*,J 'h 5;p= '=q6
5F#( 5C$belongsTo.
C= 'Q#NN 'O 'KL"Xh 5;p= '=q234#9=C` 5\ '] '#=
CP {9 #V '#U5M5P"6=#+#"Xh 5;[ '#+#5 ##5b 'C= '"F#b85+8
, "R '
className
 yFdL5U#U5M234#='Z"D5H78•= '=6#<"YT 'R 
#<"6"="65; 9"=5F#EC= 'C3t '548 6, Uc234#5H78
6‰C '5I6P D8#G"=#GR 'C
foreignKey Parameter
dL5U 6,5H78L5U '=9e"5Q,C= '"=P h :;#5H78 6,5\
(#5#5=;##5†2a 5 5E"Xh 5;p= '=q
Conditions Parameter
dL5U 6,#5N"F#5‹B•-o##+#R ''5"=P h <U#5 ' Uc
#5N#*; 5B•-h> =h#5="FC3t '(O0=85”
Fields Parameter

yz#2a 5KLcCREQ#R#+#C3t 'dR 'LH548C= 'C3t '548 6,#+#
C3t 'dR ''5‰C234#LH548D8=5; 9c234#23C66"#5=5;
O 'D"=0={9 #U5M59 #5H2E 6,[ ';#@ 'dL5U
{9 #U5M5H78 5\ 'dL5U 6,#5=#+#'+Ca#G9 [ ';#'+ #5b ' 536
"F"R 'D"‹2X34 'C= '"R '•= '=Y=9 #=c#5†Ch 5;0=
p= '=qDQ#R#+#dL5U234#5M 5a
var $belongsTo = array(
'User'=>array(
'className'=>'User',
'foreignKey'=>'user_id',
'conditions'=>null,
'fields'=>null
)
);
“Has One”
 y‹h 5;DLH548+ 5985R234##5†2a 5C= '#R553D 'y‹68=
5F#E#+#C6#532G{9 85R#5†2a 5C= '"=‰C#+#5#+#C234#LH
548DQ#NR 'L5+#C= 'C3t '548 6,"FCc#U 5E8={"Xh
5;6p5= qq5" ,qq5 = '=" ,q
yXh 5;p5= q 6,5J##5Q6h 5;= == C= ' 5EN 'O ''+
8C=DC#5j '59 #+#C 'r"Xh 5;p5= q234#@ 'y‹C#U
"F8C=5; C9 '6"F8C=5F#E#5†"FC
YM5H78"Xh 5;p5= q9 5H785F#( 5$hasOne 53#+#59 2%
6"D$blongsTo C= '"=0=5H78h 5;
var $hasOne = array('Post');
className Parameter
C= '"Xh 5;p5= q#<"W W 234#5H78D"="6#5N
5F#( 5= '=#5†6=8= 6="=5; 9
foreignKey,conditions,and fields Parameters
lX ' 53C= 'p= '=q

dependent Parameter
s5U#+#R ''5C= 'h 5;p5= q#U5M9 "X #R5#5ELH548
234#U:(OL5"FC#U"F8C=6C2UaU9 "X 8C=LH548
#V 'aU5=C= 'C3t '548 6,dL5U8  c#5=85~89 6"2E 6,
"F#+#5n6 'yz#2a 5 U234#5H785H788  56 5C2MUQ
#R#+#C3t 'C= '#RR 'L556 52F 'U234##59,5W 'h#+#"=LH548
“Has Many”
{9 d9=C0="='t9=C‰C"=C= '53"O#88>"=9=CC
"=D] '#=
<?
class User extends AppModel {
var $name = 'User';
var $hasMany = array('Post');
}
?>
C= '='"‹Cc#U 5E68=57"#5( HC#5† 5786="F68=
9 g "X h 5; 6,c#U5M3C\ 5E5T "F8=CP C
 {[ ';# U#5=‰C"=C[ ' 5E8=C#=C234#LH548D U65=6
#5† 5h 5;C= '"=0=D5F#( 5= '=KL#U5MP LH"=D
5
YMƒ_ 5E5T 9 "X 5P"6=#+#5"X#5="Xh 5; 6,
className,foreignKey,conditions,and fields Parameters
K+#5"X 6,234#"WR`CP 
dependent Parameter
C= 'h 5;p5" ,q5H788  56 5Cc6";#"F#+#52;h,
<U  #+#5  L5+#  H  9  5H  78  5F#  ( 5  •5y ,  C= '  ‰C  "=  56 5
8  ”•C5eQ#NL5 6="FCaUQ#R#+#8=234#'+ DC2Uc
aU
Order Paramter
{9 #U5Mƒ_;#‡8H85NJ#+#R ''5LH548[ ';#5P"6=#b85+8

B•-  C= '  5"  X  6,  :(  O  C= '  ‰C  "=  9  #U  5M  5H  78  =CC  56 5
0="xBK6 Uc‡8H8Q#R#+#6HP LH8=D '6,'t5=5NJ
f 'S 
limit Parameter
       :6#T`\;,P#SCRE"FX34 '#+#R ''5LH548=#
{9 #U5M59 #5HX34 '#+#R ''5CRE2M#‡'R"5t' =CP CC{9
6"2E 6,[ ';#5H785F#( 5 6,D"F'+Ca5M 5aX34 'X2#+#
R ''5LH548KLc23Cd#T`\;
    yXh 5;p5" ,q#J#L–5\(#5#5=;#'b82Ž2M5HLH5;hR
<H9 HC[ '9 J2a 52z"F" #5o C= 'N 'O '#G9 #5=
5EJ#5o c234#3C\C= '"Xh 5; 6,c'b89 6"2E2U"6
L5W '85RH"F 5+#5I 5C= '•y-5,6=2U9 #U5M*,J '"FR '
2M3C\ 5\ 'J#5o  6,6LH548#5b '5W 'h#+#"=@ 'h 5;p5
" ,q
Kiểm tra các kết hợp này:
yF#+#52T 'R 2MLM"C2U6@ '5F#( 5#= '{9 2%9=C0=6
‰C"='t9 #S 9=C#+##= C=C2M#59,#=
9=8=ˆ#= C=C858C= '53"O#88>#= C=C65P"6] '#=
<?
class PostsController extends AppController {
var $name = 'Posts';
var $scaffold;
}
?>
9=C88>#= C=C>Cˆ#= C=C85865P"6=6] '#=
<?
class UsersController extends AppController {
var $name = 'Users';
var $scaffold;
}

?>
“Has and Belongs to Many”
Y*,6"Xh 5;#UN#"9 5D 8=rC 53 '#V '#U#5bL5UL5f 2MLM"
=+"C<5EC 'r@ ''5u2M5H8=CC F '#G5o<5E
=''+ "F#'=C,D"F8=c#U"F 5+#5#+#'#U5M234#'+  5ES
D 5E#*#5,; 6 '34#9Y*,6"Xh 5; 5E 5E'\8=6'yF
8=#U5M#U 5E'6"‹'#U5M5F#E 5E8=
KT`\;#U5Mƒ_#+#"Xh 5;" ,=" , H#U"FR '5N3
C\"Xh 5; 6,C= '(O8=='"FR '5NP 8='c234#9=C
<Uc#5†#U5C3t '68=ˆ6'ˆ
YM5P""Xh 5;p5 = '=",q6=N 'O '='#S 9=C"F
R '"DP 'C= '#T`\;
CREATE TABLE `tags` (
`id` int(11) unsigned NOT NULL auto_increment,
`name` varchar(100) default NULL,
`longname` varchar(255) default NULL,
PRIMARY KEY (`id`)
);
{R ' 6,c3C\5W ' #'=C,=9'2Mw#5N#X5T C3t ' "c
6C3t '85 "C#234#ƒ O ' C= ';# C,#78' 5W 'h‰v-C3t '
= ' "c3C\#+##G#'=C,#5=;#@ ' L68'5 '
:eR ''cP LHDR '8=C= '"Xh 5;p5 = '=" ,q
9 85R9=C"FR 'L5+#2M3'\#+#LH548 6,P R ' 6,c5=h,‡#2z
P #GKLYU6P 85R234#‡8H85=5NOD"‹P #+#R 'LH548234##5
#+#5`L(J'9#53D{P C= 'R ' 6,9 # '#Q8L5U '=96L5U '=9LH
548 53#+#C3t 'D#+#P 5=h,3D#2zP #5="Xh 5;= =" ,C= '
C3t '548 6,#+#C3t 'P 234#2z5=5NJ85#,D8=ˆ2SP 6
'ˆ5N5{R '"Dc68=ˆ'
CREATE TABLE `posts_tags` (
`id` int(11) unsigned NOT NULL auto_increment,

`post_id` int(11) unsigned default NULL,
`tag_id` int(11) unsigned default NULL,
PRIMARY KEY (`id`)
);
9=C88>"=>'858
<?
class Tag extends AppModel {
var $name = 'Tag';
var $hasAndBelongsToMany = array('Post');
}
?>
K5† 5ƒC= '"=0=
<?
class Post extends AppModel {
var $name = 'Post';
var $belongsTo = array('User');
var $hasAndBelongsToMany = array('Tag');
}
?>
KX#@ '9=C'#= C=CD#= '2M9 #U5M'2MLM"C
h 5;p5 = '=" ,q
<?
class TagsController extends AppController {
var $name = 'Tags';
var $scaffold;
}
?>
YMƒ_X5T CP h 5; 6,@ '#+#5"X
className Parameter
P  6,3T 'N 'D"=LH548C= '(O0='"=0=c#S

#<"234#5H7856 5'
joinTable Parameter
KS  5DC[ '#+#59 9=CR '5N2M#5NQ#R#+#LH548#5=8=6'
YE 6,234#+"#5†2H 6„= 6#U5M234#5H78@ '5"X„= {9
c5H788=ˆ'
foreignKey and associationForeignKey Parameters
s5U#G"=5; 9C= 'R ' X6 associationForeignKeyC= '
C3t '548 6,c68=ˆ#5=0="=5"X=C' L,6#5=#+#"=L5+#2U
6'ˆ#5=0="=
#= = =CC "0C"C
<5\ '5"X 6,234#ƒ_'X ' 53#+#LH548L5+#
CHƯƠNG 2
J2ME
I. Giới thiệu
€y!€0=C"y#C=!= 6 E R '€85P R 5 5Š#GB
y#C=,"€y!234#*,J ' 5["" '2H L5R f '85+CM N 'O '29 '
85= '85b#5=#+#5Ha2F ':D35H#G 'W  '\€JCP 59S '"9 '#U
‘ #Gx0€y!#U5M@ '2M*,J '#+#N 'O 'd2T 'R 2H 85N#98 HLH
548D#+##W ' '5;85(CC
€y!5‹C4#+#5Hap"#C=q29 '"6 U'o6#+#p5; C9 'q8C= 53 '
Q#R#5b '2EL~"L5R f '5T =D"+,( 5#+ 5* C= '€y!N#"9 5K0‰F
5D3C\6L5R f 'LH X2Ea59 #5H#U5M6CQ '5P" 'z
I.1. Khái quát lớp J2ME
yO#P#G€y!6#5=85~8 '3t78Ce 5H#+#N 'O '2F#78D5Ha
2F 'L5W '#S h *"2H 85S #N '57JYM29234#"O#P 6,€y!234#*,
J '[ '#+#S ',CL5+# 52M'Q2;#5J#5; 85S #N 'L5Š 5685+CM 
B2*,6#+#S '#G€y!234#*,J 'CP K-mK
Figure 5: Các tầng của CLDC J2ME
y‹S '`CP S '5CrC6S 'Cd34 '5T # '#Q8#5=78Ce 5P  5E
'=; 78Ce 5N 'O 'x0’—x88#= 0C='C"’ C#5* 5; 5T 

S '3DP CP 
S '85S #N '5Ham#•CrC-,C
Y*,#5( 565Ha2F '57JD#Q5e 585S #N '#G UEF 5D6X#2F
ƒ_mI 5P 57C UL5W '85R6"F85S #G€y! 53 ' U6 TQ85+K+#
5Ha2F 'L5+# 5#U5M#U#+#Fƒ_L5+# 5D78"%; 5L5+# 5
yO#P#G€y!6# '#Q8"F#5^ #5=Q#R#+#=95Ha2F 'L5+# 5
S '"+,R=€€:Cy#5 -,C
s5"% 'Z €234#P a#5 U234##5,M 2w56 5"%,#=y%,#=
6,2U234##5,M 56 5"% 'W  '\"+,#G5Ha2F 'S '"+,R=€=
'Z"s:ys:Cy#5 6FP a#5"%,#=#U 5;"O#5,M "%
,#=#G#53T 'Ce 5€56 5 'W  '\"+,2M#59,CP 5Ha2F 'S ' 6,
# '#Q8"FJ#5^ 5U#5=#+#5Ha2F '2MN 'O '€y!L52%P a#5
#U5M5=92F 'CP QL–5Ha2F ' 6=#U€y!s:y
S '#Q5e 5K= 'C= -,C
S '#Q5e 5#GK-mK2a 5 '5I'=;  'W  '\€€- ''’ C#
#TR 2M#5=85~8#53T 'Ce 5€#59,CP 5Ha2F 'Y*,6"F78#+#x0’2a 5
'5I…#G 'W  '\€y!-78Ce 5P #U5MƒO '#+#D86853T '5N##G#+#
x0’ 6,, '5P 78#+#x0’5\O '5T 234##5NC= 'S '5; C9 '0C=
-,C
S '5; C9 '0C=-,C
S '5; C9 '5,y’m05; C9 '5Ha5W ' 2F '—y=’ =C"=
m#0C=# '#Q878#+#x0’5\O '5T #5=78Ce 5P yO#2(#5#G5;
C9 '6*,J 'CP D8#Q5e 56# '#Q8 5E53; N 'O '5T y’m02a 5
'5I#+#x0’CP ';#5=5Ha2F 'KV '#U5M#U#+#5; C9 '6#+#x0’L5+#
'=6y’m0234#@ '#5=N 'O ':(O#U5M#U5; C9 '0mx2a 5 '5I#+#D86
853T '5N#5\O '#5=;#9=#+#N 'O '0mxa#5w5} w2a#5†KV '#U5M
#U"F5; C9 '2a 5 '5I#+#x0’#5=;#9=#+#N 'O '{==55J#H#+#5;
C9 'LMCP 678#+#x0’2 '234#*,J 'K5^ 5; C9 '0mx62z#R€Bv—
6#5^ {==5x0’62z#R€Bv—D€Bv6H‡#G€B8##= vh
I.2. Máy ảo Java (hay KVM)

:C]#G"+,R=€5,s:y6a#5"%,#=234# 5Cd#53T 'Ce 5€
2%P a#5 ' 'W  '\"+,K5( 5s:yc#5^ 5U=8#G#+##53T 'Ce 5€
#5=#+#5Ha2F 'L5+# 5#U5M#UFƒ_678; 5L5+# 5s5W '#U
s:y#+##53T 'Ce 5€85R234#P a#556 578; 5#5="‹5Ha2F '
<537,78Ce 5P 85R*,J ' 5E2(#5#5="‹=95Ha2F '•e 52*,
Mn H Ce 5*,J 'N 'O 'y’m5=6 #5† 56C]#Gs:y
Figure 6: Tiến trình xây dựng MIDlet
•+Ce 585+ CM N 'O 'y’mD ’m! yWC3t '85+CM (#5 548—
’ 'Cm=8" ! C=" 
-78Ce 5P 9=#+#78  'Z €
{3D#2SP 678Ce 5P 85R9="% 'Z €#U5M#U 5E78 ˜„
CP ’m!{FP 5„€€K="8C{P a#5"% 'Z 56 5"%,#=
{FP a#5€cP a#5"% 'Z 56 5"%,#=y%,#= 6,c234#
s:ya#556 5"%"+,y%,#=2%P a#5c234#3C= '#+#78 ˜#6
c#U"F78 ˜# 5C#5="‹D8€
CP ’m!{FE LM"C0CCCsM"C( 5548;#G"%,#=
yFC= ' 5\ ',P#S =6 #G€y!6R=2R""%,#=#5,M #5=s:y6
548;6L5W 'C,Q#+#D85,F 5D '=6'D59 #G#5b 'm=2UQ#R#+#D8
2E85R234#E LM"CC3D#L5#5b '#U5M234#=r =E5Ha2F ':;#
E LM"C234#"6"F85S #G"WC3t '85+CM 6"#5=s:y#U5M234#5
5Š5T {FE LM"Cc'+  5% D8[ '"F5F#( 5C2z#;#5†C[ '
D82U2%234#E LM"C5F#( 5 6,f '5P"L5=R 'iL(#553D##GD86c
234#LM"C`FLM"CCP 5Ha2F '
CP ’m!9=78 €xv
’m!c9="F78 €xv#53
 Q#R#+#78 ˜#
 K+#5e 5R 5#GN 'O '•; 9#5†5‹C478 ˜8 '
 K+#78 \;#U5M234#,P#S`N 'O '
 yF78 LPL5" "# '#Q8"WREN 'O '#5=FhR _N '
O '88#= " 'CCP 5Ha2F '

 78 €xv234#+ 5=z#234#85* 85X2H  '3t@ '2S#X
BL52%'ŽCX6LM"C"%; 5CP Ce 5"W85Š '"=C"%; 52%‘
 '234#LM"CCP 2; 5=92F '62U234#85* 85X#5= '3t@ '
<'3t@ 'm=r =N 'O 'E5Ha2F '
<'3t@ '2U=r =78 €xv#5NN 'O 'E5Ha2F 'C= '5S
5H#+#2; 5=92F '#U#+#52M=r =N 'O '
 sH X#+8\;d0K '#w '\;#G2; 5=92F ':;# 6,,P#S
'3t@ '85R#U78 €xv57J685S "E"C,E 5W '2M=r =N '
O ' '5Ha5W 'h#+8\;
 Kw '5Z ' '=9’v’ Cv0=C:;# 6,,P#S '3t@ '85R#U78
€xv57J685S "E"C,E 5W '2M=r =N 'O ' '5Ha5W 'h
#w '5Z ' '=9
 •x•C5xCBƒO '853T '5N# 6, '3t@ '85RH2a#5†‰v-#5†
2H 78 €xv
CP 5Ha2F '
{FE LM"CsM"C"%,#=
{FE LM"CLM"CQ#R#+#D82E#U"F5F#( 5548;2%234#5P"6=
`FE LM"CCP C9"85+85+CM N 'O '<HH Ce 5E LM"C5Q
95eN 'O 'cL5==' =r =E5Ha2F '
{FhR _N 'O '-3C\#53T 'Ce 5
{FhR _N 'O 'CP 5Ha2F 'c3C\#53T 'Ce 5CP 5Ha2F '{w
hR _N 'O '#V '2EL5M C9 '5+#GN 'O 'C= '5t' 5J#56#U
5M9"d 'N 'O 'L5#U#F#'o5=z#  5‡ 2H 
<'3t@ '5J#5N 'O '
{FhR _N 'O 'c#5,M N 'O '#5=s:y2M#59,CP 5Ha2F '
s:y5J#5"%,#=L5#53T 'Ce 5#59,
s:ya#5"%,#= ' 'W  '\"+,#G5Ha2F '2M#59,
I.3. Tầng CLDC (Connected Limited Device Configuration)
S '€y!LHCP S 's:y6K-mK5,#Q5e 55HaLH X'D59 yO#2(#5
#GS ' 6,6# '#Q8"F78X5M#+#53; #5=85~8"FN 'O '€#59,CP

5Ha2F '<U# '#Q8#T`#5=S '5; C9 'S ' 6,c#5N 5Ex0’#5,P
;5T 
K+#K-mKx0’234#2a 5 '5IDJ548+#D#W ',6F857 #G€K0€
K="" ,0C=#<5U" 6,'b8R=2R"C[ '#+#x0’234#2a 5 '5Ic5\O '6
5H5J##5=#R 5685+CM g  56R Q5Ha2F 'K+#2z#R#G€K0234#'+
#+#X€Bv€B8##= vh•,2a 5K-mK85P R ?234#'+ X€Bv—
?
I.3.1. CLDC – Connected Limited Device Configuration
059"Ya 5 '5I#+#53; X5M6#+#x0’
Ya 5 '5I
 3T '5(#5 'W  '\€:y
 K+#53; …
 ’>•
 y9 '
 {R="7
 •X#H5U
s5W '2a 5 '5I
 K5L–X 'N 'O '
 l=;  '3t@ '
 •R _JL;
 l=; N 'O '6 '3t@ '
K+#D8…€#TR "8>=8"9 '6R="7234#2a 5 '5IC= 'K-mK
K+#x0’5\O '5T  53'=;  '3t@ '6hR _JL; 234#6 5#5=5;
C9 'y’m0
€y!6"F85P R 5 5Š#G€B!ƒO '(F 5D5T 2M U#U5M5(#5548
D#+#5Ha2F 'a'D59 F 5DyO#P#G€y!6"F78#= ??i3T '
5(#5#G€B!
•e 5Mn "XP 5;'\€B!6€y!KmK6K-mK
Figure 7: J2ME và J2SE
I.3.2. Sự khác nhau giữa J2ME và J2SE

K+#2M"L5+# 56="FC= '5_=m=D8€2%aŠ22M'R"L(#553D#
#G€y!5=z#=D8aŠ`e UR 553` '2H J =6 R="7#G5Ha2F '
5,#G#+#N 'O 'L5+#CP 5Ha2F '#U5Mg 2H 85+CM C
YM"L5+#;#5( 56L5W '#U85~8=+ X5J#s5W '#U€<’€<’ C#
B88=C=2U9 L5W '5MC,Q#+##53T 'Ce 5L5+#234#H[ ' 'W  '\#G
5Ha 53K5,K™™,H 2=9 5C234##5=85~8 53 'L5W '#U#+# 5U"
,H 2=9 5C'C=86#+#"= 5C
K-mK2a 5 '5I"F"W5e 5 =6 R="7234#5HLH2MR=;5Ha2F '
s:y6#+#N 'O 'L5+#L5Š#+#"%85+5=9•F857 234#2a 5 '5I`K-mK
6,6FE LM"C6"W5e 5 =
•e 5Mn #+#5"6FE LM"C6FLM"C6";#D 52MLM"C
"%#53T 'Ce 5€C3D#L5#5,M  U#5=s:y

×