You are on page 1of 32

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


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ề
contact.aiti@gmail.com 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


Nội dung
Chương 1 Giới thiệu PHP.........................................................................................................................................3
A.Tóm tắt lý thuyết...............................................................................................................................................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
A.Tóm tắt lý thuyết...............................................................................................................................................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
A.Tóm tắt lý thuyết...............................................................................................................................................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 PHP
................................................................................................................................................................................12
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


A.Tóm tắt lý thuyết.............................................................................................................................................15
B.Tham khảo.......................................................................................................................................................21
C.Bài tập.............................................................................................................................................................21
Chương 6 : Làm việc với mảng trong PHP
................................................................................................................................................................................21
A.Tóm tắt lý thuyết.............................................................................................................................................21
B.Tham khảo.......................................................................................................................................................24
C.Bài tập.............................................................................................................................................................25
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ập
............................................................................................................................................................................25
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. <?php
7. 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


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.phpvn.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ỉ URL do trình duyệt gửi lên, được phân biệt với tên file script bằng dấu hỏi chấm (?). Ví dụ,
khi ta gõ vào trình duyệt địa chỉ URL sau:

http://www.phpvn.org/topic.php?TOPIC_ID=161
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
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à 161 (TOPIC_ID=161).


Chúng ta cũng có thể đưa lên nhiều cặp biết=giá_trị bằng cách phân cách chúng bởi dấu &:

http://www.phpvn.org/index.php?method=Reply&TOPIC_ID=161&FORUM_ID=20
Với địa chỉ URL 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=Reply, TOPIC_ID=161 và FORUM_ID=20.

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à
$HTTP_GET_VARS[] để nắm 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 chuỗi 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ỉ URL sau:

http://www.phpvn.org/post.php?method=Reply&TOPIC_ID=161&FORUM_ID=20

Thì PHP sẽ tự động sinh ra một mảng $HTTP_GET_VARS có nội dung sau:
$HTTP_GET_VARS["method"] = "Reply" // tương ứng với cặp method=Reply
$HTTP_GET_VARS["TOPIC_ID"] = 161 // tương ứng với cặp TOPIC_ID=161
$HTTP_GET_VARS["FORUM_ID"] = 20 // tương ứng với cặp FORUM_ID=20

Sau đó, trong trang web của mình, các bạn có thể tha hồ 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ị "Hello, my
Boss", còn nếu biến user khác sinh thì "Hello " + giá trị của biến:

<?
// Hàm isset được sử dụng để kiểm tra xem một biến đã được thiết lập hay chưa
if (isset ($HTTP_GET_VARS["user"]))
{
if ($HTTP_GET_VARS["user"]=="sinh")
{
echo "Hello, my boss. Good morning!";
}
else
{
echo "Hello, " . $HTTP_GET_VARS["user"] . ". Good morning!";
}
}
else
{
echo "Hello, guest. How do you do?";
}
?>

OK, bây giờ hãy save lại. Giả sử tôi lưu với tên là welcome.php trong thư mục www. Mở trình duyệt
lên, gõ vào ô Address dòng chữ sau:
http://localhost/welcome.php?user=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


Hãy xem kết quả hiển thị trên màn hình, sau đó thay chữ sinh bằng 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 form HTML có method ="POST" (xin xem lại bài về HTML).

Để lấy các biến theo kiểu POST, PHP sẽ tự động sinh ra mảng có tên là $HTTP_POST_VARS[]. Mảng
này có chỉ số chính là tên của các phần tử trong form (các thẻ input, select... có thuộc tính name)
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:

<form method="POST">
<p>
User Name:<input type="text" name="T1" size="20"> </p>
<p>
Password:
<input type="password" name="T2" size="20"></p>
<p>Sex: <Select name ="sex">
<option value =1>Male </option>
<option value =0>Female </option>
</select>
</p>
<input type="submit" value="Gui di" name="B1">
</form>

Khi người dùng nhập user name (giả sử là Sinh), password (giả sử là 123456) và chọn sex là Male,
khi đó, mảng $HTTP_POST_VARS sẽ có các phần tử sau:
$HTTP_POST_VARS["T1"] = Sinh
$HTTP_POST_VARS["T2"] = 123456
$HTTP_POST_VARS["sex"] = 1

Sau khi lấy được các giá trị này rồi, 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 (cho nó đơn giản )
<form method="POST">
<p style="margin-top: 0; margin-bottom: 0">
Nhập a:<input type="text" name="a" size="20"></p>
<p style="margin-top: 0; margin-bottom: 0">Nhập b:<input type="text" name="b" size="20"></
p>
<p style="margin-top: 0; margin-bottom: 0">
<input type="submit" value="Tính" name="B1"></p>
</form>
<?php
$a=0;
$b=0;
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ộ

if (isset ($HTTP_POST_VARS["a"]))
{
$a =$HTTP_POST_VARS["a"];
}
if (isset ($HTTP_POST_VARS["b"]))
{
$b =$HTTP_POST_VARS["b"];
}
if ($a<>0)
{
echo "<BR>Nghiem la: " . $b/$a;Chỗ này là -$b/$a
}
else
{
if ($b==0)
{
echo "<BR>Vo so nghiem";
}
else
{
echo "<BR>Vo nghiem";
}
}
?>

B. Bài tập
1.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

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

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

C.Tham khảo
1. http://www.w3schools.com/php/php_forms.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ỆU
PHP 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


• 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';
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 bọc bởi dấu nháy đơn, hoặc sử dụng dấu
nháy kép đặt giữa chuỗi được bọc bởi dấu nháy kép thì bạn để thêm ký tự \ (gọi 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ữa
chuỗ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 để bọc chuỗi, ngoài \', \" và \\, PHP có thể nhận 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ự về đầu dòng CR (ký tự có mã 13 trong bảng mã ASCII)
• \t: ký tự tab (ký tự có mã 9 trong bảng mã ASCII)
• \$: ký tự $
• \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ụ \101 sẽ là ký tự 'A' (101 trong hệ cơ số 8 tương đương 65 trong hệ cơ số 10, ký tự ASCII
có mã 65 chính là ký tự 'A').
• \xhh: (với h là 1 chữ số từ 0 đến 9 hoặc 1 chữ cái từ A tời F) biểu thị 1 ký tự có mã ASCII hh
trong hệ cơ số 16.
Ví dụ \0x41 sẽ là ký tự 'A' (41 trong hệ cơ số 16 chính là 65 trong hệ cơ số 10).
Ngoài ra, nếu bạn để 1 biến vào giữa 1 chuỗi được bọc 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 nhiều 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


Mả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 object (đối tượng) lưu giữ 1 bản thể (instance) của 1 lớp (class). Ta sẽ tìm kiểu kỹ thêm về kiểu
object trong phần Lập trình 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 mysql_connect sẽ trả
về kiểu resource). Ta sẽ tìm hiểu kỹ hơn về 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 rằng 1 biến nào đó chưa/khô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 tận bây giờ ta mới tìm hiểu tới biến trong PHP. Một biến trong PHP được bắt đầu
bằng ký tự $ 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 vẫn còn nhiều điều thú vị về biến đang chờ ta khám phá.
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ộ

• Biến trong PHP phân biệt chữ hoa và chữ thường. Tức $Abc và $abc 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..z hoặc A...Z), chữ số (0...9) và ký tự gạch dưới
(_); nhưng tên biến không được bắt đầu bằng ký tự gạch dưới hoặc chữ số. Các tên biến sau là
không hợp lệ!
$_abc Không hợp lệ! bắt đầu bằng ký tự gạch dưới
$1abc Không hợp lệ! bắt đầu bằng chữ số
$nguyễn Không hợp lệ! tên biến có ký tự đặt biệc (ễ)
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 vì
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() {
echo $a;
} //end test
?>
Ở ví dụ trên, câu lệnh echo $a sẽ không in ra giá trị nào hết vì câu lệnh này nằm bên trong hàm test nên
$a ở đây được hiểu là biến cục bộ $a của hàm (mà hàm này ta chưa khai báo biến cục bộ nào cả).
Để truy cập 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() {
//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


} //end test
?>
Cách 2:
<?php
$a = 1; //biến toàn cục

//hàm do tự tạo
function test() {
echo $GLOBALS['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


} //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/php_variables.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 While.


Vòng lặp While 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 điều kiện trả về giá trị True.
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ộ

While( biểu thức điều kiện)

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

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

2- Vòng lặp Do-While


Vòng lặp này không khác vòng lặp While 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

Do

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

While( biểu thức điều kiện)

Khối lệnh được thực thi nếu biểu thức điều kiện trả về 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 ; Biểu thức điều kiện ; Tăng giá trị ban đầu)

Khối lệnh được thực thi nếu biểu thức điều kiện trả về 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


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

Break n;

Câu lệnh trên sẽ ngắt từ n. n là số vòng lặp trong cùng nhất. như vậy 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. Bạ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- Nhập 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ự bằng số đã nhập vào. Bảng trình bày giống bảng sau.
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 tiền


1
2
3
Tổng

2- Dùng vòng lặp vẽ một bảng bất kỳ với số dòng và số cột nhập 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 trình tính tổng của dãy sau :

1 + 2 + 3 + … + n (n nhập từ bàn phím)

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

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


1- Giới thiệu về 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 nhiều lần
trong một chương trình. Nhưng bạn không muốn viết đi viết lại nhiều lần thì 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


+ 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à lập trình viên tự xây dựng. Mục đích chính
là áp dụng các hàm đó cho công việc của mình. Lập trình viên giỏi, nhiều kinh
nghiêm, làm việc lâu năm là người tự trang bị cho mình rất nhiều 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 lập trình
viên trong các Project

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:

+ Mathematical Function

+ String Function

+ Date and Time Function

+ Error Handling Function

+ Database Function

+ Array Function

+ Mail Function

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

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

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

Function ten_ham()

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


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ộ

VD

<?php

Function tinh_tong()

$a=100;$b=200;

$c=$a+$b;

Echo “Tong cua 100 và 200 là : $c”;

tinh_tong();

?>

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

Function ten_ham(doi_so1, doi_so2, …)

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


Đố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.

VD :

Function mac_dinh(&$num, $increment = 1)

$num += $increment

$num =4;

mac_dinh($num);

mac_dinh($num,3);

- Đố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. Giá trị của nó sẽ được
gán cho biến ở trong hàm.

- Đối số tham chiếu


Việc chuyển theo tham chiếu bắt buộc đối số phải là một biến. Thay vì giá trị
của một biến được chuyển đi thì 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

VD

Function tinh(&$n)

$n=$n*$n;

}
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ộ

$number = 4;

tinh($number);

print $number;

Dấu & đứng trước $n trong các đối số hàm cho PHP biết rằng cần chuyển nó
theo tham chiếu và kết quả của cuộc gọi hàm này la $number bình phương.

c- Giá 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ả về nơi gọi hàm.

VD

<?php

Function tinh_luong($luongcoban)

$luong = 0.25*$luongcoban;

Return $luong;

$luongcoban = 500;

$B = tinh_luong();

Echo $B;

d- Đệ quy

Đệ quy là một phương thức gọi hàm P ở ngay bên trong hàm P mà bạn tạo ra. Mục
tiêu của đệ quy là đưa bài toán về 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


cho đến khi đạt đến những bài toán cơ bản, dễ giải quyết. Mộ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 bằng phần neo, cần
xác định phương thức con và gọi đệ quy giải các phương thức con đó, khi đã có

kết quả trả về của những phương thức con thì 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 gọi các phương thức là chiều sâu của đệ quy

+ Phương thức đệ quy có thể dẫn tới tràn vùng nhớ stack

+ Mọi phương thức đệ quy phải có điều kiện kết thúc đệ quy

VD

Tính giai thừa

<?php

$A=4;

function giai_thua($A)

If($A <= 1)

Return 1;
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ộ

Else

Return $A*giai_thua($A-1);

Echo “Giai thua của 4 là : “;

$B=giai_thua($A);

Echo $B;

?>
B. Tham khảo

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

2, Viết chương trình nhập 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 trình tính tổng của những dãy sau :

a, 1 + 2 + 3 + … + n (n nhập từ bàn phím)

b, 11 + 22 + 33 + … + nn (n nhập từ bàn phím, chỉ nhận giá trị từ 1 - 6)

c, 1! + 2! + 3! + … + n! (n nhập từ bàn phím, chỉ nhận giá trị từ 1 - 9)

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


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
Mảng là kiểu dữ liệu chứa một tập các biến đã được đặt tên và có cùng kiểu.
Mỗi biến trong mảng gọi 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()


$array_name = 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ụ về khởi tạo mảng.

array(1,2,3) giống như array(0 => 1, 1 => 2 , 2 => 3)

array(1=>”ONE”, “TWO”, “THREE”) tương đương với

array(1=>”ONE”, 2=> “TWO”, 3=> “THREE”)

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

$department = array(

“a” => ‘Finance’,

“b” => ‘Sales’,

“c” => ‘HR’,

“d” => ‘Purchase’)

echo $department[“c”] displays:


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 cập các thành phần của mảng


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

$array_name[key] = “element_value”;

VD :

$department = array(

1 => ‘Finance’,

2 => ‘Sales’,

3 => ‘HR’,

4 => ‘Purchase’)

echo $department[1]

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

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

$merged_array_name = array_merge($first_array, $second_array);

VD :

$ITdept = array(

0 => “Testing”,

1 => “Training”);

$SalesPurcahsedept = 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


0 => “Advertising”,

1 => “Marketing”);

$AdminDept = array_merge($ITdept, $SalesPurchasedept)

5- Mảng đa chiều
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 chiều. Cú pháp như sau :

$array_name = array(

array(key => value), array(key => value))

VD : array ( array(“name” => “John”, “age” => 28),

array(“name” => “Barbara”, “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 sắp xếp lại các giá trị của các thành phần của
mảng

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

VD : sort($giatri)

b, Hàm rsort()

Hàm này cũng tương tự như hàm sort() ở trên nhưng là sắp xếp theo
chiều ngược lại

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

VD : rsort($giatri)

c, Hàm arsort()
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 sắp xếp giống như hàm rsort() nhưng điểm khác nhau
là hàm này sắp 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 trình sử dụng hàm rand() (đưa ra số interger ngẫu nhiên) để nhập dữ
liệu cho mảng có độ dài n. Với n nhập 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 nhập sẵn dữ liệu.Viết chương trình để 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ố bằng 0

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

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

VD : ((8 + ((6 – 2) / 3)) * (5 * (7 + 2)))

Viết chương trình 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 CSDL MySQL, ta sử dụng hàm:

a. Mysql_fetch_array()

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


b. Sql_fetch_array()

c. Mysql_connect()

d. Sql_connect().

2. Hàm mysql_select_db() được dùng để:

a. Lựa chọn máy chủ chạy CSDL MySQL

b. Lựa chọn một cơ sở dữ liệu do MySQL quản lý

c. Lựa chọn một bảng do MySQL quản lý

d. Lựa chọn một dòng dữ liệu trong bảng do MySQL quản lý

3. Câu lệnh SQL Insert into được dùng để:

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

b. Xoá một record

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

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

4. Hàm mysql_query() được dùng để:

a. Truy vấn dữ liệu từ MySQL

b. Lựa chọn CSDL MySQL

c. Kết nối tới CSDL MySQL

d. Ngắt kết nối tới CSDL MySQL.

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ừ tập kết quả trả về:

a. Mysql_select_data()

b. Mysql_fetch_array()

c. Mysql_get_record()

d. Mysql_fetch_record()

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

Trên các Website, việc phân quyền sử dụng cho một người/nhóm người có ý nghĩa quan trọng. VD: người quản trị
có quyền xem, xoá, sửa tất cả thông tin trên Website, thành viên có quyền tham gia bình luận ...
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 về người sử dụng Website được lưu vào một bảng như sau:

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

ID_MEMBER (int, auto increment) Xác định định danh của thành viên

User_name (varchar 20) Xác định tên truy cập của thành viên

Password (varchar 60) Xác định mật khẩu của thành viên

Full_name (varchar 50) Xác định họ tên đầy đủ của thành viên

Email (varchar 200) Địa chỉ email của thành viên

Groups (int) Xác định nhóm quyền truy cập. VD: với các member
có nhóm quyền =1 thì người đó có toàn quyền với
Website (Administrator).

Yêu cầu: Sử dụng PHP để viết chương trình:

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

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

- 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ự ABC của trường User_name.

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

A. Bài tập

Bài tập trắc nghiệm: Lựa chọn 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 gì xuống trình duyệt

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

c. Ở bất kỳ vị trí nào.

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

a. Trình 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


b. Máy chủ

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

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

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

a. $_COOKIE[]

b. $_COOKIES[]

c. $_GET[]

d. $_POST[]

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

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

b. Cookie và session đều đượ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 tiễn, để xác định xem một thành viên nào đó đã đăng nhập vào hệ thống hay chưa, người
ta sử dụng một form HTML để người sử dụng nhập tên truy cập và mật khẩu. Sau khi người sử dụng bấm nút
submit, một chương trình sẽ tìm kiếm trong cơ sở dữ liệu xem tên truy cập và mật khẩu có tồn tại hay không? Nếu
như tên truy cập và mật khẩu mà người dùng nhập vào giống như trong CSDL, hệ thống sẽ thiết lập một session
để xác định rằng NSD đang sử dụng hệ thống.

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

- Hiển thị form nhập tên truy cập và mật khẩu.

- Nếu NSD nhập thông tin vào form, kiểm tra xem tên truy cập và mật khẩu có đúng hay không.

- Nếu đúng:

o Thiết lập 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 rằng NSD đã đăng nhập thành công kèm liên kết logout.

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

- Nếu sai, thiết lập cookie để đếm số lần người dùng đăng nhập, đồng thời hiển thị lại form đăng
nhập.
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 nhập sai tên truy cập và mật khẩu quá ba lần thì thông báo rằng người đó không
được phép thử đăng nhập nữa.

Chương 9 : Email và OOP

A. Bài tập
Bài tập trắc nghiệm: Lựa chọn 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”,”Welcome to AITI”);

b. mail (”Hello”, “admin@aptech.com”,”Welcome to AITI”);

c. mail (”Hello”,”Welcome to AITI”, “admin@aptech.com”);

2. Tham số tuỳ chọn thứ 4 trong hàm mail() được dùng để:

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

b. Gửi đính kèm file theo email

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

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

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

a. new

b. class

c. create new

d. create class

4. $this-> mang ý nghĩa:

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

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

c. Tham chiếu tới một phương thức/ 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. $a = new $b;

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


b. $a = new b;

c. a = new $b;

d. a = new b;

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

- Xây dựng class user_info 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 CSDL và các phương thức sau đây:

o Function ShowLoginForm(): Hiển thị form đăng nhập HTML.

o Function CheckLogin(): Kiểm tra xem tên truy cập và mật khẩu có đúng như đã lưu trong
CSDL hay không. Nếu đăng nhập đúng thì lưu các thông tin của người dùng vào các thuộc
tính trong lớp.

- Xây dựng class member kế thừa từ class user_info, bổ sung phương thức ShowData để hiển thị
danh sách các thành viên lưu trong CSDL.

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

You might also like