Baitap PHP

47
Sách bài tập PHP AiTi-Aptech “Kiến tạo tương lai” Tài liệu lưu hành nội bộ Bài tập PHP Trung tâm đào tạo Lập trình viên Quốc tế AiTi-Aptech Page 1 of 32 35/115 Phố Định Công - Hoàng Mai

description

bai tap php

Transcript of Baitap PHP

Page 1: Baitap PHP

Sách bài tập PHP AiTi-Aptech “Kiến tạo tương lai” Tài liệu lưu hành nội bộ

Bài tập PHP

Trung tâm đào tạo Lập trình viên Quốc tế AiTi-Aptech Page 1 of 32

35/115 Phố Định Công - Hoàng Mai

Page 2: Baitap PHP
Page 3: Baitap PHP

Sách bài tập PHP AiTi-Aptech “Kiến tạo tương lai” Tài liệu lưu hành nội bộ

Lời giới thiệu

Sách bài tập do tập thể giáo viên AiTi-Aptech thiết kế và được sử dụng như một phần không thể tách rời khỏi giáo trình đang học của Aptech Ấn Độ với các học viên đang theo học tại Trung tâm.

Tập sách bài tập này là tài liệu lưu hành nội bộ, chỉ dành cho các học viên theo học tại Trung tâm đào tạo Lập trình viên Quốc tế AiTi-Aptech. Mọi hình thức sao chép lại nội dung của sách là vi phạm bản quyền và không tuân thủ Luật Sở hữu trí tuệ của Nhà nước Việt Nam.

AiTi-Aptech luôn mong mỏi tạo dựng một môi trường học tập tốt cho các bạn học viên theo học tại trung tâm. Mọi ý kiến đóng góp về xây dựng Sách bài tập, cải tiến hệ thống xin gửi mail về [email protected] hoặc đường dây nóng (04) 6 64 8848. Chúng tôi sẽ ghi nhận và cải tiến để có thể cung cấp cho các bạn một môi trường học tập ngày một tốt hơn.

“Sự nghiệp tương lai của các bạn là thành công của chúng tôi”

Đội thiết kế Sách bài tập

Việt Nam luôn thiếu Lập trình viên đẳng cấp Quốc tế

Trung tâm đào tạo Lập trình viên Quốc tế AiTi-Aptech Page 3 of 32

35/115 Phố Định Công - Hoàng Mai

Page 4: Baitap PHP

A.Tóm tắ t lý thuyế t

A.Tóm tắ t lý thuyế t

A.Tóm tắ t lý thuyế t

A.Tóm tắ t lý thuyế t

A.Tóm tắ t lý thuyế t

Nội dung Chươ ng 1 Giớ i thiệ u PHP...................................................................................................................................................3

3

1. Định nghĩa................................................................................................................................................................3

2.Cách s ửdụ ng...........................................................................................................................................................3

B. Bài tậ p.........................................................................................................................................................................3

C.Tham khả o...................................................................................................................................................................3

Chươ ng 2 X ửlý Form trong PHP...........................................................................................................................................3

3

B. Bài tậ p.........................................................................................................................................................................3

C.Tham khả o...................................................................................................................................................................4

Chươ ng 3 S ửdụ ng biế n và biể u thứ c trong PHP..................................................................................................................4

4

B. Bài tậ p.......................................................................................................................................................................12

C.Tham khả o.................................................................................................................................................................12

Chươ ng 4 : Câu lệ nh điề u khiể n và vòng lặ p trong PHP12

A : Tóm tắ t lý thuyế t.......................................................................................................................................................12

B - Tham khả o...............................................................................................................................................................14

C - Bài tậ p.....................................................................................................................................................................14

3- Dùng vòng lặ p giả i quyế t bài toán : Vừ a gà vừ a chó,bó lạ i cho tròn, 36 con, 100 chân chẵ n?..........................................15

Chươ ng 5 : S ửdụ ng hàm trong PHP..........................................................................................................................................15

15

B.Tham khả o........................................................................................................................................................................21

C.Bài tậ p..............................................................................................................................................................................21

Chươ ng 6 : Làm việ c vớ i mả ng trong PHP21

21

B.Tham khả o........................................................................................................................................................................24

C.Bài tậ p..............................................................................................................................................................................25

Page 5: Baitap PHP

Sách bài tập PHP AiTi-Aptech “Kiến tạo tương lai” Tài liệu lưu hành nội bộ

Chươ ng 7 : Thao tác vớ i CSDL.................................................................................................................................25

A.Bài tậ p25

Chươ ng 8 . Cookie và Session trong PHP..................................................................................................................27

A. Bài tậ p.............................................................................................................................................................27

Chươ ng 9 : Email và OOP........................................................................................................................................29

A.Bài tậ p..............................................................................................................................................................29

Chương 1 Giới thiệu PHP

A.Tóm tắt lý thuyết

1. Định nghĩa PHP (viết tắt hồi quy "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 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.

2.Cách sử dụng Mã php được lồng vào mã HTML

1. <html>2. <head>3. <title>Mã mẫu</title>4. </head>5. <body>6. <?php7. echo "Chào thế giới PHP!";8. ?>9. </body>10. </html>

Thẻ <?php và thẻ ?> sẽ đánh đấu sự bắt đầu và sự kết thúc của phần mã PHP qua đó máy chủ biết để xử lý và dịch mã cho đúng. Đây là một điểm khá tiện lợi của PHP giúp cho việc viết mã PHP trở nên khá trực quan và dễ dàng trong việc xây dựng phần giao diện ứng dụng HTTP.

Trung tâm đào tạo Lập trình viên Quốc tế AiTi-Aptech Page 5 of 32

35/115 Phố Định Công - Hoàng Mai

Page 6: Baitap PHP

Ngôn ngữ, các thư viện, tài liệu gốc của PHP được xây dựng bởi cộng đồng và có sự đóng góp không nhỏ của công ty Zend .

B. Bài tập 1.Cài đặt PHP và Apache web server bản mới nhất lên máy tính cá nhân

2. lưu file sau vào thư mục web của apache với tên vd1.php và chạy thử bằng trình duyệt:

<html><head><title>Testing page</title></head> <body><?php echo "Hello, world!"; ?></body> </html>

C.Tham khảo 1.Phpvietnam group http://groups.google.com/group/phpvietnam

2.Diễn đàn phpviet http://www. php vn.org

3.Chuẩn viết mã php http://pcdinh.googlepages.com/phpvietnamcodingstandards

Chương 2 Xử lý Form trong PHP

A.Tóm tắt lý thuyết

Dữ liệu của người dùng từ trình duyệt sẽ được gửi lên máy chủ dưới dạng từng cặp biến=giá_trị và có thể đi theo 3 con đường khác nhau. Tuỳ theo từng con đường cụ thể, trên máy chủ ta cũng có các cách khác nhau để lấy dữ liệu được gửi lên.. 3 con đường đó là: GET, POST và COOKIES. 1. Truyền dữ liệu thông qua phương thức GET Dữ liệu gửi từ trình duyệt lên qua phương thức GET là phần dữ liệu được nhập trực tiếp theo sau địa chỉ efL do trình duyệt gửi lên, được phân biệt với tên gile script bhng dấu hỏi chấm ijk. Ví dụ, khi ta gl vào trình duyệt địa chỉ efL sau:

http://mmm.phpvn.org/topic.phpjTOPIC_ID=1n1 Khi đó, trình duyệt sẽ gửi theo địa chỉ trên một cặp biến = giá trị, trong đó biến có tên là TOPIC_ID

Page 7: Baitap PHP

Sách bài tập PHP AiTi-Aptech “Kiến tạo tương lai” Tài liệu lưu hành nội bộ

và giá trị là 1n1 iTOPIC_ID=1n1k. Chúng ta cũng có thể đưa lên nhiều cặp biết=giá_trị bhng cách phân cách chúng bởi dấu o:

http://mmm.phpvn.org/index.phpjmethod=feplyoTOPIC_ID=1n1opOfeM_ID=qr Với địa chỉ efL trên, chúng ta sẽ gửi lên 3 cặp biến=giá_trị theo phương thức GET, đó là: method=feply, TOPIC_ID=1n1 và pOfeM_ID=qr.

Khi trình duyệt gửi các thông tin này lên máy chủ, PHP sẽ tự động sinh ra một mảng có tên là sHTTP_GET_VAfStu để nvm giữ tất cả các cặp biến và giá trị đó, trong đó, chỉ số của mảng chính là một chuwi mang tên của tên biến và giá trị của chỉ số đó chính là giá trị của biến do trình duyệt gửi lên. Ví dụ, với địa chỉ efL sau:

http://mmm.phpvn.org/post.phpjmethod=feplyoTOPIC_ID=1n1opOfeM_ID=qr

Thì PHP sẽ tự động sinh ra một mảng sHTTP_GET_VAfS có nội dung sau: sHTTP_GET_VAfStxmethodxu = xfeplyx // tương ứng với cặp method=feply sHTTP_GET_VAfStxTOPIC_IDxu = 1n1 // tương ứng với cặp TOPIC_ID=1n1 sHTTP_GET_VAfStxpOfeM_IDxu = qr // tương ứng với cặp pOfeM_ID=qr

Sau đó, trong trang meb của mình, các bạn có thể tha hy sử dụng các biến này. Ví dụ, tôi làm một đoạn chương trình sau để khi người dùng nhập vào biến user=sinh thì cho hiển thị xHello, my zossx, c{n nếu biến user khác sinh thì xHello x | giá trị của biến:

}j // Hàm isset được sử dụng để kiểm tra xem một biến đ~ được thiết lập hay chưa ig iisset isHTTP_GET_VAfStxuserxukk

ig isHTTP_GET_VAfStxuserxu==xsinhxk

echo xHello, my boss. Good morningÄxÅ Ç else

echo xHello, x . sHTTP_GET_VAfStxuserxu . x. Good morningÄxÅ Ç Ç else

echo xHello, guest. Hom do you dojxÅ Ç jÉ

OK, bây giờ h~y save lại. Giả sử tôi lưu với tên là melcome.php trong thư mục mmm. Mở trình duyệt lên, gl vào ô Address d{ng chữ sau: http://localhost/melcome.phpjuser=sinh

Trung tâm đào tạo Lập trình viên Quốc tế AiTi-Aptech Page 7 of 32

35/115 Phố Định Công - Hoàng Mai

Page 8: Baitap PHP

H~y xem kết quả hiển thị trên màn hình, sau đó thay chữ sinh bhng một cái tên gì đó xem kết quả ra sao.

II. Phương thức POST

Post là phần dữ liệu được gửi qua các gorm HTML có method =xPOSTx ixin xem lại bài về HTMLk.

Để lấy các biến theo kiểu POST, PHP sẽ tự động sinh ra mảng có tên là sHTTP_POST_VAfStu. Mảng này có chỉ số chính là tên của các phần tử trong gorm icác thÑ input, select... có thuộc tính namek và giá trị là nội dung giá trị do người sử dụng nhập vào các phần tử có tên tương ứng. ChÖng hạn với mÜu biểu HTML sau:

}gorm method=xPOSTxÉ }pÉ eser Name:}input type=xtextx name=xT1x siáe=xqrxÉ }/pÉ }pÉ Passmord: }input type=xpassmordx name=xTqx siáe=xqrxÉ}/pÉ }pÉSex: }Select name =xsexxÉ }option value =1ÉMale }/optionÉ }option value =rÉpemale }/optionÉ }/selectÉ }/pÉ }input type=xsubmitx value=xGui dix name=xz1xÉ }/gormÉ

Khi người dùng nhập user name igiả sử là Sinhk, passmord igiả sử là 1q3à5nk và chọn sex là Male, khi đó, mảng sHTTP_POST_VAfS sẽ có các phần tử sau: sHTTP_POST_VAfStxT1xu = Sinh sHTTP_POST_VAfStxTqxu = 1q3à5n sHTTP_POST_VAfStxsexxu = 1

Sau khi lấy được các giá trị này ryi, các bạn có thể thoải mái sử dụng.

Đây là ví dụ một chương trình giải phương trình bậc nhất icho nó đơn giản k }gorm method=xPOSTxÉ }p style=xmargin-top: rÅ margin-bottom: rxÉ Nhập a:}input type=xtextx name=xax siáe=xqrxÉ}/pÉ }p style=xmargin-top: rÅ margin-bottom: rxÉNhập b:}input type=xtextx name=xbx siáe=xqrxÉ}/ pÉ }p style=xmargin-top: rÅ margin-bottom: rxÉ }input type=xsubmitx value=xTínhx name=xz1xÉ}/pÉ }/gormÉ }jphp sa=rÅ sb=rÅ

Page 9: Baitap PHP

Sách bài tập PHP AiTi-Aptech “Kiến tạo tương lai”

ig iisset isHTTP_POST_VAfStxaxukk

sa =sHTTP_POST_VAfStxaxuÅÇig iisset isHTTP_POST_VAfStxbxukk

sb =sHTTP_POST_VAfStxbxuÅÇig isa}Érk

echo x}zfÉNghiem la: x . sb/saÅChw này là -sb/saÇelse

ig isb==rk

echo x}zfÉVo so nghiemxÅÇelse

echo x}zfÉVo nghiemxÅÇÇjÉ

B. Bài tập1.Viết chương trình cộng 2 số được nhập từ form

2.Viết trang login.php yêu cầu người dùng nhập username và password

Tài liệu lưu hành nội bộ

Xác nhận username là admin và password là 123456 thì in ra dòng “Hello Admine

Nếu sai thì yêu cầu đfng nhập lại .

C.Tham khảo 1. http://www.w3schools.com/php/phpgforms.asp

Chương 3 Sử dụng biến và biểu thức trong PHP

A.Tóm tắt lý thuyết

KIỂU DỮ LIỆUPHP hỗ trợ 8 kiểu dữ liệu chính:

4 kiểu dữ liệu vô hướng: boolean, integer, float (double), string.

Trung tâm đào tạo Lập trình viên Quốc tế AiTi-Aptech Page 9 of 32

35/115 Phố Định Công - Hoàng Mai

Page 10: Baitap PHP

2 kiểu dữ liệu tổ hợp: array, object. 2 kiểu dữ liệu đặt biệc: resource, NULL.

Kiểu Boolean Kiểu boolean mang 1 trong 2 giá trị TRUE (đúng) hoặc FALSE (sai). Ví dụ: <?php $a = TRUE; $b = FALSE; //phép toán == kiểm tra xem 2 biểu thức có giá trị bằng nhau hay không $c = (1==2); //vì 1 khác 2 nên $c mang giá trị FALSE $d = ("abc" == "def"); //$d mang giá trị TRUE ?> "Ép" kiểu sang boolean: một số giá trị được chuyển đổi thành FALSE trong các biểu thức boolean nếu như giá trị đó là:

số nguyên 0, số thực 0.0, chuỗi rỗng "", hoặc chuỗi "0", mảng rỗng (không chứa phần tử nào) Array(), đối tượng không chứa phần tử nào (chỉ đúng với PHP4), giá trị NULL

Các giá trị còn lại sẽ được chuyển đổi thành TRUE. Kiểu Integer Kiểu integer mang các giá trị số nguyên ..., -2, -1, 0, 1, 2, ...Trên hầu hết các hệ thống, kiểu số nguyên có kích thước 32 bit, mang giá trị từ -2147483647 cho đến 2147483648. Ví dụ: <?php $a = 1234; $b = -123; $c = 0123; //giá trị 123 ở hệ cơ số 8, tương đương với 83 ở hệ cơ số 10 $d = 0x1F; //giá trị 1F ở hệ cơ số 16, tương đương với 31 ở hệ cơ số 10 ?> Kiểu Float (Double) Kiểu float (hoặc double) là kiểu số thực, có thể mang bất cứ giá trị số thực nào. Trên hầu hết các hệ thống, kiểu số thực có kích thước 64 bit. Ví dụ: <?php $a = 1.234; $b = 1.2e3; //= 1.2*10^3 = 1200 $c = 7E-10; //= 7*(10^-10) = 0.0000000007 $d = -1.23; ?> Kiểu String Kiểu string lưu giữ 1 chuỗi ký tự, mỗi ký tự có kích thước 1 byte. Nội dung string được đặt giữa 2 dấu nháy, nháy đơn (') hoặc nháy kép ("). Ví dụ <?php $a = 'Đây là 1 chuỗi được đặt giữa dấu nháy đơn';

Page 11: Baitap PHP

Sách bài tập PHP AiTi-Aptech “Kiến tạo tương lai” Tài liệu lưu hành nội bộ

$b = "Đây là 1 chuỗi được đặt giữa dấu nháy kép"; $c = 'Đây là 1 chuỗi được đặt giữa dấu nháy đơn với "vài dấu nháy kép ở giữa"'; $d = "Đây là 1 chuỗi được đặt giữa dấu nháy kép với 'vài dấu nháy đơn ở giữa'"; ?> Nếu bạn muốn sử dụng dấu nháy đơn ở trong 1 chuỗi được bec bởi dấu nháy đơn, hoặc sử dụng dấu nháy kép đặt giữa chuỗi được bec bởi dấu nháy kép thf bạn để thêm ký tự g (gei là ký tự escape) ở phía trước. Ví dụ: <?php $a = 'Dấu \'nháy đơn\' ở giữa chuỗi'; //$a mang giá trị: Dấu 'nháy đơn' ở giữa chuỗi $b = "Dấu \"nháy kép\" ở giữa chuỗi"; //$b mang giá trị: Dấu "nháy kép" ở giữachuỗi$c = "Dùng ký tự \\ ở giữa câu \\ thì sao?"; //$c mang giá trị: Dùng ký tự \ ởgiữa câu \ thì sao??>Khi sử dụng dấu nháy đôi để bec chuỗi, ngoài \', \" và \\, PHP có thể nhhn dạng thêm một số chuỗi ký tựescape đặt biệc nữa:

\n: ký tự xuống hàng LF (ký tự có mã 10 trong bảng mã ASCii) \r: ký tự vj đầu dòng CR (ký tự có mã 13 trong bảng mã ASCii) \t: ký tự tab (ký tự có mã k trong bảng mã ASCii) \$: ký tự l \ooo: (với o là 1 chữ số từ 0 đến 7) biểu thị 1 ký tự có mã ASCii ooo trong hệ cơ số 8.

Ví dụ g101 sẽ là ký tự 'A' (101 trong hệ cơ số 8 tương đương 6m trong hệ cơ số 10, ký tự ASCiicó mã 6m chính là ký tự 'A').

\xhh: (với h là 1 chữ số từ 0 đến k hoặc 1 chữ cái từ A tời F) biểu thị 1 ký tự có mã ASCii hhtrong hệ cơ số 16.Ví dụ g0x41 sẽ là ký tự 'A' (41 trong hệ cơ số 16 chính là 6m trong hệ cơ số 10).

Ngoài ra, nếu bạn để 1 biến vào giữa 1 chuỗi được bec với dấu nháy kép, giá trị của biến sẽ được thay thế vào trong chuỗi. ví dụ: <?php $a = 1; $b = 2; $c = 3; $d = "$a $b $c"; //$d sẽ mang giá trị là chuỗi "1 2 3" ?> Kiểu Array Array là một mảng gòm nhiju phần tử. Array được tạo qua lệnh Array. Ví dụ: <?php $a = Array(1,2,3); Lúc này $a sẽ là 1 mảng gồm 3 phần tử số nguyên là 1, 2 và 3

Các phần tử trong mảng $a được tạo ở trên sẽ được đánh số thứ tự từ 0, 1 cho đến 2 Để truy cập tới từng phần tử của $a echo $a[0]; //in ra giá trị 1 echo $a[2]; //in ra giá trị 3

$a[1] = 5; //giờ đây $a = Array(1,5,3) ?>

Trung tâm đào tạo Lập trình viên Quốc tế AiTi-Aptech Page 11 of 32

35/115 Phố Định Công - Hoàng Mai

Page 12: Baitap PHP

nảng còn có thể được tạo thành bởi các cặp (khoá, giá trị). Ví dụ: <?php $a = Array(

"khoá 1" => "giá trị 1", "khoá 2" => "giá trị 2", "khoá 3" => "giá trị 3"

); echo $a["khoá 1"]; //in ra: giá trị 1

$b = Array( "a" => "Nguyễn","b" => "Bá","c" => "Thành"

);echo $b["a"]; //in ra: Nguyễn

$b["a"] = "Nguyen"; $b["b"] = "Ba"; $b["c"] = "Thanh"; //giờ đây $b = Array("a" => "Nguyen", "b" => "Ba", "c" => "Thanh") ?> Kiểu Object Kiểu oboect (đối tượng) lưu giữ 1 bản thể (instance) của 1 lớp (class). Ta sẽ tfm kiểu kp thêm vj kiểu oboect trong phần Lhp trfnh hướng đối tượng với PHP. Kiểu Resource Kiểu resource (tài nguyên) được sử dụng bởi các hàm đặt biệc của PHP (ví dụ hàm mysqlqconnect sẽ trả vj kiểu resource). Ta sẽ tfm hiểu kp hơn vj kiểu resource trong các bài viết khác. Kiểu NULL Đây là 1 giá trị đặt biệc, báo cho PHP biết rrng 1 biến nào đó chưaskhông mang giá trị nào cả. Ví dụ: <?php $a = 1; //$a mang giá trị 1

$a = NULL; //bây giờ $a không mang giá trị nào cả $a =

2; //giờ đây $a mang giá trị 2

//hàm unset sẽ làm cho 1 biến có giá trị là NULL unset($a); //giừo $a lại là NULL ?>

BIẾN Có lẽ hơi muộn khi tới thn bây giờ ta mới tfm hiểu tới biến trong PHP. nột biến trong PHP được btt đầu brng ký tự l và đi theo ngay sau đó là tên của biến. Ví dụ: $a: biến có tên là a $abc123: biến có tên là abc123 Tuy nhiên vun còn nhiju điju thú vị vj biến đang chờ ta khám phá.

Page 13: Baitap PHP

Sách bài tập PHP AiTi-Aptech “Kiến tạo tương lai” Tài liệu lưu hành nội bộ

viến trong PHP phân biệt chữ hoa và chữ thường. Tức lAbc và labc là 2 biến hoàn toàn khác nhau.

Tên biến chỉ được bao gồm các ký tự chữ cái (a..w hoặc A...Z), chữ số (0...k) và ký tự gạch dưới (q)x nhưng tên biến không được btt đầu brng ký tự gạch dưới hoặc chữ số. Các tên biến sau là không hợp lệy $_abc Không hợp lệy btt đầu brng ký tự gạch dưới $1abc Không hợp lệy btt đầu brng chữ số $nguyễn Không hợp lệy tên biến có ký tự đặt biệc (z)

Tầm vực (scope) của biến Tầm vực của biến là ngữ cảnh mà ở trong đó biến được định ngh{a. Ví dụ: <?php $a = 1; //tầm vực của biến $a bắt đầu từ đây

include 'b.php'; trải dài tới bên trong file b.php

//tới cuối file vẫn còn hợp lệ ?> Tuy nhiên khi gặp 1 hàm do người d|ng định ngh{a, bên trong hàm, biến cục bộ sẽ được d|ng thay vf biến toàn cục. Ví dụ: <?php $a = 1; //biến toàn cục

//hàm do tự tạo function test() e

echo $a; f //end test ?> } ví dụ trên, câu lệnh echo $a sẽ không in ra giá trị nào hết vf câu lệnh này nrm bên trong hàm test nên la ở đây được hiểu là biến cục bộ la của hàm (mà hàm này ta chưa khai báo biến cục bộ nào cả). Để truy chp tới các biến toàn cục ở bên trong 1 hàm do người d|ng định ngh{a, ta có thể d|ng 1 trong 2 cách sau: Cách 1: <?php $a = 1; //biến toàn cục

//hàm do tự tạo function test() e

//từ khoá global báo cho php biết là bên trong hàm test //bây giờ ta sẽ dùng biến toàn cục $a global $a;

echo $a; //in ra giá trị: 1 f //end test ?> Cách 2: <?php $a = 1; //biến toàn cục

//hàm do tự tạo function test() e

echo $gLhBALi['a']; //in ra giá trị: 1

Trung tâm đào tạo Lập trình viên Quốc tế AiTi-Aptech Page 13 of 32

35/115 Phố Định Công - Hoàng Mai

Page 14: Baitap PHP

f //end test ?>

BIỂU THỨC

Biể u thứ c là nề n tả ng quan trọ ng củ a PHP. Hầ u nh ưmọ i th ứbạ n ghi trong file php đề u là biể u thứ c. Nói mộ t cách đơ n giả n, bấ t c ứcái gì mang 1 giá tr nào đó đề u có th ểlà 1 biể u thứ c. Ta xét câu lệ nh đơ n giả n sau:ị $a = 5; Ở đây 5 là mộ t biể u thứ c, kế t củ a củ a biể u thứ c này là giá trị 5, và kế t qu ảnày đư ợc gán cho biế n $a. $b = $a;Ở đây $a lạ i là 1 biể u thứ c, giá trị củ a $a đư ợc gán cho biế n $b.

Biể u thứ c trong PHP có th ểphứ c tạ p hơ n thế , ví dụ:$a = 1;$b = 2; $c = 3; $d = $a + $b + $c;

B. Bài tập

1.Viết chương trình tính giai thừa của một số nhập vào từ form

C.Tham khảo

1.http://www.w3schools.com/php/phpgvariables.asp

Chương 4 : Câu lệnh điều khiển và vòng lặp trong PHP

A : Tóm tắt lý thuyết

1- Vòng lặp ~hile. Vòng lặp ~hile là vòng lặp đơn giản. vòng lặp này chỉ thực thi các khối lệnh bên trong nó khi biểu thức điju kiện trả vj giá trị True.

Page 15: Baitap PHP

Sách bài tập PHP AiTi-Aptech “Kiến tạo tương lai”

~hile( biểu thức điju kiện)

Khối lệnh được thực thi nếu biểu thức điju kiện trả vj giá trị True

Ä

Khối lệnh được thực thi nếu biểu thức điju kiện trả vj giá trị False

2- Vòng lặp Åo-~hile

Tài liệu lưu hành nội bộ

Vòng lặp này không khác vòng lặp ~hile là mấy. Vòng lặp này thường được sử dụng nếu bạn muốn khối lệnh trong vòng lặp được thực hiện ít nhất là 1 lần

Åo

Khối lệnh được thực thi nếu biểu thức điju kiện trả vj giá trị True

Ä

~hile( biểu thức điju kiện)

Khối lệnh được thực thi nếu biểu thức điju kiện trả vj giá trị False

3- Vòng lặp For Khác với 2 vòng lặp trên. vòng lặp For d|ng để chỉ định khối lệnh trong vòng lặp được thực hiện bao nhiêu lần.

for( giá trị ban đầu x viểu thức điju kiện x TÇng giá trị ban đầu)

Khối lệnh được thực thi nếu biểu thức điju kiện trả vj giá trị True

Ä

Trung tâm đào tạo Lập trình viên Quốc tế AiTi-Aptech Page 15 of 32

35/115 Phố Định Công - Hoàng Mai

Page 16: Baitap PHP

4- Câu lệnh vreak Đôi lúc bạn muốn kết thúc sự thực thi của một vòng lặp đang dizn ra. Đối với mục đích này PHP cung cấp câu lệnh break.

vreak nx

Câu lệnh trên sẽ ngtt từ n. n là số vòng lặp trong c|ng nhất. như vhy break 1 sẽ tương đương với break.

5- Câu lệnh Continue

Câu lệnh này thường được sử dụng trong trường hợp trong số các vòng lặp. vạn muốn dừng thực thi khối lệnh trong 1 vòng lặp nào đó rồi chuyển sang vòng lặp kế tiếp.

6- Câu lệnh Exit

Câu lệnh này giúp bạn thoát ra khỏi vòng lặp và chuyển sang khối lệnh kế tiếp

B - Tham khảo

C - Bài tập 1- Nhhp 1 số bất kÉ từ bàn phím và d|ng vòng lặp để đưa ra một bảng có số dòng và số thự tự brng số đã nhhp vào. vảng trfnh bày giống bảng sau.

Page 17: Baitap PHP

Sách bài tập PHP AiTi-Aptech “Kiến tạo tương lai” Tài liệu lưu hành nội bộ

STT Tên sản phÑm Số lượng Đơn giá Thành tijn

1

2

3

Tổng

2- Å|ng vòng lặp vẽ một bảng bất kÉ với số dòng và số cột nhhp từ bàn phím.

3- Dùng vòng lặp giải quyết bài toán : Vừa gà vừa chó,bó lại cho tròn, 36 con, 100 chân chẵn?

4- Viết chương trfnh tính tổng của dãy sau :

1 Ö 2 Ö 3 Ö Ü Ö n (n nhhp từ bàn phím)

Chương 5 : Sử dụng hàm trong PHP

A. Tóm tắt lý thuyết 1- áiới thiệu vj Hàm

Khi bạn có một đoạn script hay một chức nÇng mà bạn có thể sử dụng nhiju lần trong một chương trfnh. Nhưng bạn không muốn viết đi viết lại nhiju lần thf bạn hãy ngh{ đến hàm(Function). Hàm trong PHP có 2 loại chính.

Trung tâm đào tạo Lập trình viên Quốc tế AiTi-Aptech Page 17 of 32

35/115 Phố Định Công - Hoàng Mai

Page 18: Baitap PHP

Ö Loại thứ 1: Là những Hàm đã được xây dựng sàn trong PHP.

Ö Loại thứ 2 : Là những hàm mà lhp trfnh viên tự xây dựng. nục đích chính là áp dụng các hàm đó cho công việc của mfnh. Lhp trfnh viên giỏi, nhiju kinh nghiêm, làm việc lâu nÇm là người tự trang bị cho mfnh rất nhiju những hàm tự xây dựng. Những hàm này được đúc kết từ các kinh nghiệm làm việc của lhp trfnh viên trong các Prooect

2- Hàm trong PHP Hàm đã được xây dựng sàn trong PHP. Các hàm này có mấy loại chính như sau:

Ö nathematical Function

Ö String Function

Ö Åate and Time Function

Ö Error Handling Function

Ö Åatabase Function

Ö Array Function

Ö nail Function

vạn có thể tham khảo thông tin vj các Hàm loại này trên trang âeb php.net

3- Hàm tạo bởi người d|ng

a- Cú pháp định ngh{a hàm

Function tenqham()

Khối lệnh của hàm

Page 19: Baitap PHP

Sách bài tập PHP AiTi-Aptech “Kiến tạo tương lai”

Ä

äãphp

Function tinhqtong()

Tài liệu lưu hành nội bộ

laå100xlbå200x

lcålaÖlbx

Echo çTong cua 100 và 200 là : lcéx

Ä

tinhqtong()x

ãè

b- Định ngh{a hàm với đối số

Function tenqham(doiqso1, doiqso2, Ü)

Khối lệnh của hàm

Ä

Đối số của hàm được chia ra làm 3 loại

- Đối số mặc định

Trung tâm đào tạo Lập trình viên Quốc tế AiTi-Aptech Page 19 of 32

35/115 Phố Định Công - Hoàng Mai

Page 20: Baitap PHP

Đối số loại này cho phép bạn chỉ định một giá trị mặc định cho đối số của hàm. Các giá trị mặc định của bạn phải là một giá trị không đổi.

VÅ :

Function macqdinh(êlnum, lincrement å 1)

lnum Öå lincrement

Ä

lnum å4x

macqdinh(lnum)x

macqdinh(lnum,3)x

- Đối số theo giá trịĐối số loại này có thể là bất kÉ biểu thức hợp lệ nào. áiá trị của nó sẽ được gán cho biến ở trong hàm.

- Đối số tham chiếuViệc chuyển theo tham chiếu btt buộc đối số phải là một biến. Thay vf giá trị của một biến được chuyển đi thf biến tương ứng trong hàm sẽ trực tiếp tham chiếu đến biến được chuyển bất cứ khi nào được sử dụng

Function tinh(êln)

lnålnëlnx

Ä

Page 21: Baitap PHP

Sách bài tập PHP AiTi-Aptech “Kiến tạo tương lai” Tài liệu lưu hành nội bộ

lnumber å 4x

tinh(lnumber)x

print lnumberx

Åấu ê đứng trước ln trong các đối số hàm cho PHP biết rrng cần chuyển nó theo tham chiếu và kết quả của cuộc gei hàm này la lnumber bfnh phương.

c- áiá trị trả lại của hàm

Trong này ta sử dụng câu lệnh return để cho ra giá trị từ hàm hay nói cách khác một bản sao của giá trị được tạo và được trả vj nơi gei hàm.

äãphp

Function tinhqluong(lluongcoban)

lluong å 0.2mëlluongcobanx

Return lluongx

Ä

lluongcoban å m00x

lv å tinhqluong()x

Echo lvx

d- Đệ quy

Đệ quy là một phương thức gei hàm P ở ngay bên trong hàm P mà bạn tạo ra. nục tiêu của đệ quy là đưa bài toán vj một bài toán c|ng dạng nhưng độ phức tạp giảm dần

Trung tâm đào tạo Lập trình viên Quốc tế AiTi-Aptech Page 21 of 32

35/115 Phố Định Công - Hoàng Mai

Page 22: Baitap PHP

cho đến khi đạt đến những bài toán cơ bản, dz giải quyết. nột phương thức đệ quy được chia làm 2 phần

Ö Phần neo : Phần này được thực hiện khi công việc quá đơn giản , có thể trả lại kết quả trực tiếp chứ không cần 1 phương thức con nào cả.

Ö Phần đệ quy : Trong trường hợp phương thức chưa thể giải brng phần neo, cần xác định phương thức con và gei đệ quy giải các phương thức con đó, khi đã có

kết quả trả vj của những phương thức con thf phối hợp kết quả của chúng lại để trả lại kết quả của phương thức ban đầu

Các đặc điểm của phương thức đệ quy :

Ö Số lần gei các phương thức là chiju sâu của đệ quy

Ö Phương thức đệ quy có thể dun tới tràn v|ng nhớ stack

Ö nei phương thức đệ quy phải có điju kiện kết thúc đệ quy

Tính giai thừa

äãphp

lAå4x

function giaiqthua(lA)

if(lA äå 1)

Return 1x

Page 23: Baitap PHP

Sách bài tập PHP AiTi-Aptech “Kiến tạo tương lai”

Ä

Else

Return lAëgiaiqthua(lA-1)x

Ä

Ä

Echo çáiai thua của 4 là : çx

lvågiaiqthua(lA)x

Echo lvx

ãè

B. Tham khảo

C. Bài tập

Tài liệu lưu hành nội bộ

1, Sử dụng hàm đệ quy viết chương trfnh tính dãy Fibonacci ở vị trí thứ n. Với số n nhhp từ bàn phím. n chỉ nhhn giá trị từ 1 cho đến 1m

2, Viết chương trfnh nhhp vào một chuỗi ký tự bất kÉ. Rồi cho biết tổng số ký tự trong chuỗi đó là chàn hay lí.

3, Sử dụng hàm viết chương trfnh tính tổng của những dãy sau :

a, 1 Ö 2 Ö 3 Ö Ü Ö n (n nhhp từ bàn phím)

b, 11 Ö 22 Ö 33 Ö Ü Ö nn (n nhhp từ bàn phím, chỉ nhhn giá trị từ 1 - 6)

c, 1y Ö 2y Ö 3y Ö Ü Ö ny (n nhhp từ bàn phím, chỉ nhhn giá trị từ 1 - k)

Trung tâm đào tạo Lập trình viên Quốc tế AiTi-Aptech Page 23 of 32

35/115 Phố Định Công - Hoàng Mai

Page 24: Baitap PHP

Chương 6 : Làm việc với mảng trong PHP

A. Tóm tắt lý thuyết 1- Định ngh{a mảng

nảng là kiểu dữ liệu chứa một thp các biến đã được đặt tên và có c|ng kiểu. nỗi biến trong mảng gei là một thành phần của mảng. Để tham chiếu đến một thành phần của mảng phải sử dụng chỉ mục của thành phần đó.

2- Cú pháp tạo mảng sử dụng hàm array() larrayqname å array(ìkey åè î value, ìkey åè î value)

key : khóa của mảng. khóa có thể là số hoặc là chuỗi

value : là giá trị của khóa tương ứng.

Ví dụ vj khởi tạo mảng.

array(1,2,3) giống như array(0 åè 1, 1 åè 2 , 2 åè 3)

array(1åèéïNEé, çT~ïé, çTHREEé) tương đương với

array(1åèéïNEé, 2åè çT~ïé, 3åè çTHREEé)

Với những mảng có khóa là chuỗi thf cần phải để khóa ở trong dấu ngoặc kép.VÅ :

ldepartment å array(

çaé åè ñFinanceó,

çbé åè ñSalesó,

çcé åè ñHRó,

çdé åè ñPurchaseó)

echo ldepartmentìçcéî displays:

Page 25: Baitap PHP

Sách bài tập PHP AiTi-Aptech “Kiến tạo tương lai” Tài liệu lưu hành nội bộ

HR

3- Truy chp các thành phần của mảng Để truy chp vào các thành phần của mảng ta sử dụng cú pháp sau :

larrayqnameìkeyî å çelementqvalueéx

VÅ :

ldepartment å array(

1 åè ñFinanceó,

2 åè ñSalesó,

3 åè ñHRó,

4 åè ñPurchaseó)

echo ldepartmentì1î

Ví dụ trên sẽ hiện thị kết quả là Finance

4- áhép mảng Để có thể ghép được mảng ta sử dụng hàm arrayqmerge()

lmergedqarrayqname å arrayqmerge(lfirstqarray, lsecondqarray)x

VÅ :

liTdept å array(

0 åè çTestingé,

1 åè çTrainingé)x

lSalesPurcahsedept å array(

Trung tâm đào tạo Lập trình viên Quốc tế AiTi-Aptech Page 25 of 32

35/115 Phố Định Công - Hoàng Mai

Page 26: Baitap PHP

0 åè çAdvertisingé,

1 åè çnarketingé)x

lAdminÅept å arrayqmerge(liTdept, lSalesPurchasedept)

5- nảng đa chiju Khi ta khai báo giá trị của 1 thành phần của 1 mảng là một mảng khác sẽ cho ta kết quả là một mảng đa chiju. Cú pháp như sau :

larrayqname å array(

array(key åè value), array(key åè value))

VÅ : array ( array(çnameé åè çòohné, çageé åè 28),

array(çnameé åè çvarbaraé, çageé åè 67))

6- Các hàm có liên quan đến mảng a, Hàm sort()

Hàm này có chức nÇng stp xếp lại các giá trị của các thành phần củamảng

Cú pháp : sort(tên mảng)

VÅ : sort(lgiatri)

b, Hàm rsort()

Hàm này công tương tự như hàm sort() ở trên nhưng là stp xếp theo chiju ngược lại

Cú pháp : rsort(tên mảng)

VÅ : rsort(lgiatri)

c, Hàm arsort()

Page 27: Baitap PHP

Sách bài tập PHP AiTi-Aptech “Kiến tạo tương lai” Tài liệu lưu hành nội bộ

Hàm này công stp xếp giống như hàm rsort() nhưng điểm khác nhau là hàm này stp xếp theo cả chỉ mục và giá trị của mảng

B. Tham khảo

C. Bài tập 1- Viết chương trfnh sử dụng hàm rand() (đưa ra số interger nguu nhiên) để nhhp dữ liệu cho mảng có độ dài n. Với n nhhp từ bàn phím rồi sử dụng mảng đó để làm các câu sau:

a- Đếm xem có bao nhiêu thành phần trong mảng có giá trị là số chàn.

b- Đếm xem có bao nhiêu thành phần trong mảng có giá trị là số nhỏ hơn 100 2-

Với một mảng đã được nhhp sàn dữ liệu.Viết chương trfnh để làm các câu sau:

a- in ra vị trí của các thành phần trong mảng giá trị là số âm

b- in ra vị trí của các thành phần trong mảng giá trị có số brng 0

3- Viết chương trfnh sử dụng hàm rand() (đưa ra số interger nguu nhiên) để nhhp dữ liệu cho mảng có độ dài n. Với n nhhp từ bàn phím rồi in các số đó ra màn hfnh. Tiếp theo stp xếp các số đó theo thứ tự tÇng dần rồi lại in ra màn hfnh

4- Cho một mảng là 1 biểu thức toán hec dạng trung tố đầy đủ dấu ngoặc cho sàn. VÅ :

((8 Ö ((6 ö 2) s 3)) ë (m ë (7 Ö 2)))

Viết chương trfnh tính biểu thức đấy

Chương 7 : Thao tác với CSDL

A. Bài tập

Trắc nghiệm: Hãy chọn các phương án đúng:

1. Để kết nối tới CSÅL nySõL, ta sử dụng hàm:

a. nysqlqfetchqarray()

Trung tâm đào tạo Lập trình viên Quốc tế AiTi-Aptech Page 27 of 32

35/115 Phố Định Công - Hoàng Mai

Page 28: Baitap PHP

b. Sqlqfetchqarray()

c. nysqlqconnect()

d. Sqlqconnect().

2. Hàm mysqlqselectqdb() được d|ng để:

a. Lựa chen máy chủ chạy CSÅL nySõL

b. Lựa chen một cơ sở dữ liệu do nySõL quản lý

c. Lựa chen một bảng do nySõL quản lý

d. Lựa chen một dòng dữ liệu trong bảng do nySõL quản lý 3.

Câu lệnh SõL insert into được d|ng để:

a. Thêm một record vào bảng

b. úoá một record

c. Chỉnh sửa thông tin của record

d. Cả ba phương án trên đju sai

4. Hàm mysqlqquery() được d|ng để:

a. Truy vấn dữ liệu từ nySõL

b. Lựa chen CSÅL nySõL

c. Kết nối tới CSÅL nySõL

d. Ngtt kết nối tới CSÅL nySõL.

5. Hàm nào trong số các hàm dưới đây được d|ng để lấy ra một bản ghi từ thp kết quả trả vj:

a. nysqlqselectqdata()

b. nysqlqfetchqarray()

c. nysqlqgetqrecord()

d. nysqlqfetchqrecord()

Bài tập thực hành:

Trên các ~ebsite, việc phân quyjn sử dụng cho một ngườisnhóm người có ý ngh{a quan treng. VÅ: người quản trị có quyjn xem, xoá, sửa tất cả thông tin trên ~ebsite, thành viên có quyjn tham gia bfnh luhn ...

Page 29: Baitap PHP

Sách bài tập PHP AiTi-Aptech “Kiến tạo tương lai” Tài liệu lưu hành nội bộ

Các thông tin vj người sử dụng ~ebsite được lưu vào một bảng như sau:

STT Tên trường nô tả

iÅqnEnvER (int, auto increment)

Userqname (varchar 20)

Passâord (varchar 60)

Fullqname (varchar m0)

Email (varchar 200)

ároups (int)

ùêu cầu: Sử dụng PHP để viết chương trfnh:

- Thêm mới một thành viên vào bảng.

- úoá bỏ một thành viên

úác định định danh của thành viên

úác định tên truy chp của thành viên

úác định mht khÑu của thành viên

úác định he tên đầy đủ của thành viên

Địa chỉ email của thành viên

úác định nhóm quyjn truy chp. VÅ: với các member có nhóm quyjn å1 thf người đó có toàn quyjn với ~ebsite (Administrator).

- Chỉnh sửa thông tin của một thành viên.

- Hiển thị danh sách các thành viên theo thứ tự AvC của trường Userqname.

Chương 8 . Cookie và Session trong PHP

A. Bài tập

vài thp trtc nghiệm: Lựa chen các phương án đúng:

1. Hàm setcookie() có thể được d|ng

a. Trước khi gửi bất kÉ dữ liệu gf xuống trfnh duyệt

b. Sau khi đã gửi hết dữ liệu xuống trfnh duyệt

c. } bất kÉ vị trí nào.

2. Cookie được lưu ở:

a. Trfnh duyệt

Trung tâm đào tạo Lập trình viên Quốc tế AiTi-Aptech Page 29 of 32

35/115 Phố Định Công - Hoàng Mai

Page 30: Baitap PHP

b. náy chủ

c. Cả hai phương án trên đju đúng

d. Cả hai phương án trên đju sai

3. viến mảng nào sau đây được d|ng để lấy dữ liệu lưu trong cookie:

a. lqCïïKiEìî

b. lqCïïKiESìî

c. lqáETìî

d. lqPïSTìî

4. Các câu nào sau đây là đúng:

a. Cookie và session đju được lưu trên máy chủ

b. Cookie và session đju được lưu trên máy khách

c. Cookie được lưu trên máy chủ, còn session được lưu trên máy khách

d. Cookie được lưu trên máy khách, còn session được lưu trên máy chủ Bài

tập thực hành: Login Form.

Trong các ứng dụng thực tizn, để xác định xem một thành viên nào đó đã đÇng nhhp vào hệ thống hay chưa, người ta sử dụng một form HTnL để người sử dụng nhhp tên truy chp và mht khÑu. Sau khi người sử dụng bấm nút submit, một chương trfnh sẽ tfm kiếm trong cơ sở dữ liệu xem tên truy chp và mht khÑu có tồn tại hay khôngã Nếu như tên truy chp và mht khÑu mà người d|ng nhhp vào giống như trong CSÅL, hệ thống sẽ thiết lhp một session để xác định rrng NSÅ đang sử dụng hệ thống.

Hãy xây dựng một chương trfnh như sau:

- Hiển thị form nhhp tên truy chp và mht khÑu.

- Nếu NSÅ nhhp thông tin vào form, kiểm tra xem tên truy chp và mht khÑu có đúng hay không.

- Nếu đúng:

o Thiết lhp session để xác định phiên làm việc của người sử dụng đó

o Hiển thị thông báo rrng NSÅ đã đÇng nhhp thành công kûm liên kết logout.

o Nếu người d|ng kích chen logout, xoá phiên làm việc và hiển thị thông báo chia tay.

- Nếu sai, thiết lhp cookie để đếm số lần người d|ng đÇng nhhp, đồng thời hiển thị lại form đÇngnhhp.

Page 31: Baitap PHP

Sách bài tập PHP AiTi-Aptech “Kiến tạo tương lai” Tài liệu lưu hành nội bộ

- Nếu người d|ng nhhp sai tên truy chp và mht khÑu quá ba lần thf thông báo rrng người đó khôngđược phép thử đÇng nhhp nữa.

Chương 9 : Email và OOP

A. Bài tập vài thp trtc nghiệm: Lựa chen phương án đúng

1. Câu lệnh nào sau đây sẽ gửi email thành công:

a. mail (çadminüaptech.comé,éHelloé,é~elcome to AiTié)x

b. mail (éHelloé, çadminüaptech.comé,é~elcome to AiTié)x

c. mail (éHelloé,é~elcome to AiTié, çadminüaptech.comé)x 2.

Tham số tuÉ chen thứ 4 trong hàm mail() được d|ng để:

a. áửi thêm các thông tin trong phần header của email

b. áửi đính kûm file theo email

c. Định dạng email theo dạng HTnL

d. Tất cả các phương án trên đju đúng

3. nột lớp các đối tượng được khai báo bởi từ khoá:

a. neâ

b. class

c. create neâ

d. create class

4. lthis-è mang ý ngh{a:

a. Tham chiếu tới một phương thứcs thuộc tính trong lớp hiện hành

b. Tham chiếu tới một phương thứcs thuộc tính trong lớp cha

c. Tham chiếu tới một phương thứcs thuộc tính trong lớp con

5. Để khởi gán một đối tượng a thuộc lớp b, ta sử dụng câu lệnh:

a. la å neâ lbx

Trung tâm đào tạo Lập trình viên Quốc tế AiTi-Aptech Page 31 of 32

35/115 Phố Định Công - Hoàng Mai

Page 32: Baitap PHP

b. la å neâ bx

c. a å neâ lbx

d. a å neâ bx

Bài tập thực hành:

- úây dựng class userqinfo với các thuộc tính tương ứng với các trường trong bảng như mô tả ở chương Thao tác với CSÅL và các phương thức sau đây:

o Function ShoâLoginForm(): Hiển thị form đÇng nhhp HTnL.

o Function CheckLogin(): Kiểm tra xem tên truy chp và mht khÑu có đúng như đã lưu trong CSÅL hay không. Nếu đÇng nhhp đúng thf lưu các thông tin của người d|ng vào các thuộc tính trong lớp.

- úây dựng class member kế thừa từ class userqinfo, bổ sung phương thức ShoâÅata để hiển thịdanh sách các thành viên lưu trong CSÅL.

- úây dựng class admin kế thừa từ class member, viết lại phương thức ShoâÅata trong class admin, kiểm tra xem nếu như người đÇng nhhp thuộc nhóm 1 thf hiển thị các liên kết xoá, sửa từng thành viên trên danh sách.