Bài giảng hướng dẫn cách chèn PHP và trang HTML; thao tác với chuỗi; các cấu trúc cơ bản như khai báo biến, lệnh rẽ nhánh, vòng lặp; cách tạo mảng số và mảng kết hợp từ một chiều đến nhiều chiều; tạo hàm và gọi hàm, từ hàm không tham số đến hàm có tham số, gọi hàm không có kết quả trả về và gọi hàm có kết quả trả về; lấy dữ liệu từ form gởi lên và xử lý.
Trang 11
PHP CƠ BẢN
Trần Thị Bạch Huệ
2
Nội dung
Web tĩnh và web động
Web server và web client
Các phần mềm cần thiết
Tổng quan về PHP – Nhúng PHP vào trang HTML – Biến, kiểu dữ liệu, toán tử, cấu trúc rẽ nhánh, vòng lặp – Mảng, hàm, phạm vi biến, biến tĩnh
– Chèn file
Tài liệu tham khảo
http://www.w3schools.com/php/default.asp
“Bài tập PHP”, trung tâm đào tạo lập trình
viên quốc tế AiTi-Aptech
Bài giảng của Đào Việt Cường, Khoa CNTT–
ĐHSP Hà Nội
Web tĩnh và web động
Web tĩnh
Trang 25
Tất cả người dùng cùng nhận được kết quả
giống nhau
Trang Web tĩnh được viết bằng các thẻ
HTML và nó chỉ bị thay đổi bởi người bao trì
trang Web này
Có khả năng tương tác với người dùng yếu
6
Web động
7
Mỗi người sử dụng có thể nhận được nội
dung khác nhau, phụ thuộc vào kết quả chạy
chương trình
Trang Web động được viết bằng các thẻ
HTML + ngôn ngữ lập trình phía server như
PHP, ASP,… và có thể được thay đổi bởi
người sử dụng
Khả năng tương tác với người dùng mạnh
8
Web server
Server là máy chuyên cung cấp tài nguyên, dịch vụ cho các máy tính khác
Một máy chủ có thể dùng cho một hoặc nhiều mục đích Tên máy chủ thường gắn với mục đích sử dụng
– Ví dụ: File server, mail server, Web server,…
Trên thực tế, máy chủ có cấu hình khá cao với khả năng hoạt động ổn định
Trang 39
Web server là máy chủ chuyên cung cấp
dịch vụ Web
Một số phần mềm Web server chuyên dụng
như Apache, Internet Information Services
(IIS),…
10
Web client
Là phần mềm dùng để truy cập và hiển thị nội dung trang web
Một số web browser thông dụng như Internet Explorer (IE), FireFox, Opera, Netscape,…
Các phần mềm cần thiết
Để có thể thực hành tạo trang Web bằng PHP trên
máy tính của bạn, cần cài đặt các phần mềm sau:
– Cài Apache (hoặc IIS) để cấu hình web server, download
miễn phí tại http://httpd.apache.org/download.cgi
– Cài PHP, download miễn phí tại
http://www.php.net/downloads.php
– Cài MySQL, download miễn phí tại
http://www.mysql.com/downloads/
Để đơn giản cho việc cài đặt và cấu hình, bạn có thể
sử dụng gói WampServer / Vertrigo / Xamp
Tổng quan về PHP
PHP là gì?
– PHP (PHP: Hypertext Preprocessor) là ngôn ngữ lập trình
phía server, được dùng để phát triển web động và có thể được nhúng vào các trang HTML
– Bộ biên dịch PHP là phần mềm mã nguồn mở, có thể chạy trên các Web server như Apache, IIS,…
– PHP có thể kết hợp với nhiều hệ quản trị như MySQL, Oracle,…
– PHP có thể được download miễn phí tại http://www.php.net/
Trang 413
Nhúng PHP vào trang HTML
Có thể nhúng mã PHP vào vị trí bất kỳ trong trang
HTML
Đoạn mã PHP được đặt giữa: <?php … ?>:
<?php
//Đoạn lệnh PHP ở đây
?>
Kết quả do đoạn mã PHP thực hiện được đưa vào vị
trí mà đoạn mã PHP đang chiếm chỗ
14
Ví dụ: Tạo trang “Hello.php” có code như sau:
<html>
<head>
<title>Trang PHP dau tien</title>
</head>
<body>
<?php echo “Chao mung ban den voi PHP”;
?>
</body>
</html>
15
Thử nghiệm:
– Mở IE, gõ địa chỉ: http://localhost/Hello.php
16
Mỗi lệnh PHP kết thúc bằng dấu chấm phẩy (;)
File PHP được lưu với phần mở rộng php
Nếu file có phần mở rộng html, mã PHP sẽ không được thực thi
Có thể dùng lệnh echo hoặc print để xuất
văn bản ra trang web
Trang 517
Chú thích trong PHP
//Bắt đầu dòng chú thích
# Bắt đầu dòng chú thích
/*
Bắt đầu đoạn chú thích
*/
18
Biến
Là vùng nhớ dùng để lưu trữ thông tin
Khai báo biến: $tên_biến = giá_trị;
– Tên biến bao gồm chữ cái, chữ số, dấu gạch nối (_) và phải bắt đầu bằng chữ cái hoặc dấu gạch nối
– Ví dụ: $a=1; $b_12=“Hello”;
Không cần khai báo trước, được tự động khai báo vào lần gán giá trị đầu tiên
Việc sử dụng biến chưa khởi tạo sẽ gây lỗi
PHP tự động xác định kiểu dữ liệu cho biến tùy vào giá trị gán cho nó
Kiểu dữ liệu
PHP hỗ trợ các kiểu dữ liệu sau:
– Số nguyên (integer) và số thực (float)
– Chuỗi (string)
– Boolean
– Mảng (array)
– Đối tượng (object),…
Kiểu số
Số nguyên từ -231 đến 231-1
– Hệ thập phân: Ví dụ: $a = 16;
– Hệ 16 (thập lục phân): Ví dụ: $a=0x10;
– Hệ 8 (bát phân): VD: 020;
Số thực (thập phân): Từ 1.7E-308 đến 1.7E+308
– Biểu diễn: $a = 0.017
– Dạng khoa học: $a = 17.0E-03
Trang 621
Kiểu chuỗi
Chuỗi có thể được bao trong dấu nháy đơn
(‘) hoặc kép (“)
Nháy đơn:
– Cách đơn giản nhất để xác định một chuỗi là bao
nó trong dấu nháy đơn
– Nếu nội dung của chuỗi có dấu nháy đơn thì đặt
dấu \ trước nó (\’), có dấu \ thì đặt \\
– Ví dụ:
22
<?php echo ‘hello’;
// Outputs: Arnold once said: "I'll be back"
echo 'Arnold once said: "I\'ll be back"';
// Outputs: You deleted C:\*.*?
echo 'You deleted C:\\*.*?';
// Outputs: This will not expand: \n a newline echo 'This will not expand: \n a newline';
// Outputs: Variables do not $expand $either echo 'Variables do not $expand $either';
?>
23
Nháy kép:
– Chuỗi đặt trong nháy kép bị thay thế và xử lý ký
tự thoát
– Ví dụ:
$a = “Hello”;
echo “$a world”; // Xuất “Hello world”
echo ‘$a world’; // Xuất ‘$a world’ (không thay đổi)
24
Để chỉ rõ biến trong chuỗi, cần bao biến vào giữa cặp ngoặc móc { }
Ví dụ:
$a = “He”;
echo “ $a llo”; //lỗi do PHP hiểu là biến $allo nên nó báo biến chưa được định nghĩa
echo “{$a}llo”; //đúng ($c = “Hello”)
Trang 725
Ký tự thoát: \
– Sử dụng để viết các ký tự đặc biệt trong chuỗi
– Ví dụ: Cần có chuỗi: Người ta nói “PHP rất tốt”
$a = “Người ta nói “PHP rất tốt””; //Sai
$a = “Người ta nói \“PHP rất tốt\””; //Đúng
– Một số ký tự phải sử dụng ký tự thoát: $, \, “
– Ngoài ra:
\n: Xuống dòng
\r: trở về đầu dòng
\t: dấu tab
…
26
Kiểu tài liệu (heredoc):
– Cho phép viết 1 chuỗi trên nhiều dòng, không cần sử dụng ký tự thoát:
– Cách viết:
$biến = <<<Ký_hiệu nội dung trên nhiều dòng Ký_hiệu;
– Chú ý: Ký_hiệu phải được viết ở ký tự đầu tiên của dòng – Ví dụ:
$a = <<<EOD Đây là chuỗi nằm trên nhiều dòng sử dụng cú pháp kiểu tài liệu ‘heredoc’
EOD;
Kiểu logic
Có 2 trạng thái: TRUE và FALSE
Toán tử
Toán tử cộng chuỗi: dấu chấm (.) – Ví dụ:
<?php $txt1="Hello World!";
$txt2="What a nice day!";
echo $txt1 " " $txt2;
?>
– Hàm strlen(chuỗi): trả về chiều dài chuỗi
– Hàm strpos(chuỗi, chuỗi_con): Tìm chuỗi_con trong chuỗi
Nếu tìm gặp trả về vị trí chuỗi so khớp đầu tiên, ngược lại trả
về FALSE
Trang 829
Ví dụ:
<?php
echo strlen("Hello world!");
?>
Kết quả hiển thị: 12
Ví dụ:
<?php
echo strpos("Hello world!","world");
?>
Kết quả hiển thị: 6
30
Các toán tử số học:
– +, -, *, /
– %: chia lấy dư
– ++: tăng 1 đơn vị
– : giảm 1 đơn vị
31
Các toán tử gán:
– =, +=, -=, *=, /=, =, %=
Ví dụ: x +=y (x = x+y)
Các toán tử so sánh:
– ==, !=, <>, >, >=, <, <=
Các toán tử logic:
– && (và), || (hoặc), ! (phủ định)
32
Cấu trúc rẽ nhánh
Cú pháp lệnh IF:
if (điều kiện)
mã khi điều kiện đúng;
Else
mã khi điều kiện sai
Trang 933
Ví dụ:
<body>
<?php
$d=2;
if ($d==1)
{
echo "Hello!";
}
else echo “everybody”;
?>
</body>
34
Ví dụ:
<body>
<?php
$d=date("D");
if ($d=="Fri") echo "Have a nice weekend!";
elseif ($d=="Sun") echo "Have a nice Sunday!";
else echo "Have a nice day!";
?>
</body>
Cú pháp lệnh Switch:
switch (n)
{
case label1:
mã khi n=label1;
break;
case label2:
mã khi n=label2;
break;
default:
mã khi n khác các trường hợp trên;
}
Giá trị n được so sánh với giá trị của từng case
Nếu khớp, mã của case tương ứng sẽ được thực thi
Lệnh break được sử dụng để mã của các case bên dưới không bị thực thi tự động
Mã của default được thực thi khi n không khớp với tất cả các case trên
Trang 1037
Ví dụ:
<?php
$x=2;
switch ($x)
{
case 1: echo "Number 1";
break;
case 2: echo "Number 2";
break;
case 3: echo "Number 3";
break;
default: echo "No number between 1 and 3";
}
?>
38
Vòng lặp
Có 2 loại vòng lặp:
– Không biết trước số lần lặp – Biết trước số lần lặp
Vòng lặp while: Thường được dùng khi không biết
trước số lần lặp while (điều kiện)
{
mã trong vòng lặp;
}
39
Vòng lặp while thực hiện khi điều kiện đúng, thoát khi điều kiện
sai
Ví dụ:
<body>
<?php
$i=1;
while($i<7){
echo "Hello<br>";
$i++;
}
?>
</body>
40
Vòng lặp do…while:
do {
}
while ( điều kiện);
Vòng lặp do…while thực hiện khi điều kiện đúng, thoát khi điều kiện sai Vòng lặp này lặp ít nhất một lần
Trang 1141
Ví dụ:
<?php
$i=1;
do
{
$i++;
echo "The number is " $i "<br />";
}
while ($i<=5);
?>
42
Vòng lặp For:
– Dùng khi biết trước số lần lặp
– Cú pháp:
{
mã trong vòng lặp;
}
– Vòng lặp thực hiện cho tới khi điều kiện sai
Ví dụ:
<body>
<?php
for ($i=1; $i<=5; $i++)
{
echo “hello”;
}
?>
</body>
Vòng lặp Foreach: Dùng quét qua một mảng foreach ($array as $value)
{
mã cuả vòng lặp;
}
– Mỗi lần lặp, giá trị của phần tử mảng hiện hành được gán cho biến $value và con trỏ mảng dịch chuyển lên một
Trang 1245
Ví dụ:
<?php
$x=array("one","two","three");
foreach ($x as $i)
{
echo “$i <br>”;
}
?>
Output:
one two three
46
break : Kết thúc lệnh for, while,
do-while hoặc switch
continue : Bỏ qua các lệnh phía sau continue trong vòng lặp, chuyển sang lần lặp kế tiếp
47
Mảng
Biến chỉ có thể lưu trữ được một giá trị như một con
số hay một chuỗi văn bản
Mảng là một biến đặc biệt Nó lưu trữ được nhiều
giá trị
PHP có 2 loại mảng:
– Mảng số: Là mảng có index là số
– Mảng kết hợp: Là mảng có mỗi index kết hợp với một giá
trị
Mảng nhiều chiều: Là mảng chứa một hoặc
nhiều mảng khác
48
Mảng số:
– Là mảng có index là số
– Có 2 cách tạo mảng số:
Index được gán tự động và bắt đầu là 0
$cars=array("Saab","Volvo","BMW","Toyota");
Index được gán một cách thủ công
$cars = array( );
$cars[0]="Saab";
$cars[1]="Volvo";
$cars[2]="BMW";
$cars[3]="Toyota";
Trang 1349
Ví dụ sau cho thấy cách truy cập một phần tử trong
mảng số
<?php
$cars[0]="Saab";
$cars[1]="Volvo";
$cars[2]="BMW";
$cars[3]="Toyota";
echo $cars[0] " and " $cars[1] " are Swedish
cars.";
?>
50
Mảng kết hợp:
– Là mảng có mỗi index kết hợp với một giá trị
– Ví dụ:
$ages = array("Peter"=>32, "Quagmire"=>30, "Joe"=>34);
Hoặc $ages=array();
$ages['Peter'] = 32;
$ages['Quagmire'] = 30;
$ages['Joe'] = 34;
Ví dụ:
<?php
$ages['Peter'] = "32";
$ages['Quagmire'] = "30";
$ages['Joe'] = "34";
echo "Peter is " $ages['Peter'] " years
old.";
?>
Mảng nhiều chiều:
– Trong mảng nhiều chiều, mỗi phần tử trong mảng chính có thể là một mảng Mỗi phần tử trong mảng con cũng có thể
là một mảng khác,…
– Ví dụ:
$families = array(
"Griffin"=>array("Peter","Lois","Megan"), "Quagmire"=>array("Glenn"),
"Brown"=>array("Cleveland","Loretta","Junior") );
Trang 1453
Sau đây là ví dụ cách truy xuất một phần tử
trong mảng nhiều chiều
echo "Is " $families['Griffin'][2] " a part of
the Griffin family?";
Kết quả xuất:
Is Megan a part of the Griffin family?
54
Một số hàm liên quan đến mảng
Hàm sắp xếp mảng: asort, sort, rsort
In mảng: print_r
Một số hàm khác:
– array_sum
– count
– array_reverse
– array_search
– array_replace
55
Hàm
Trong PHP, có hơn 700 hàm xây dựng sẵn
giúp việc lập trình đơn giản hơn
Trong phần này chúng ta nghiên cứu việc tự
tạo một hàm
Hàm có một số đặc điểm:
– Hàm chỉ được thực thi khi nó được gọi
– Có thể gọi hàm ở bất kỳ vị trí nào trong trang
56
Cú pháp tạo hàm:
function tên_Hàm(số lượng tham số)
{
mã của hàm;
}
– Các tham số cách nhau bằng dấu phẩy
Gọi hàm:
tên_Hàm(số lượng đối số);
Trang 1557
Ví dụ 1:
<?php
function writeName()
{
echo "Kai Jim Refsnes";
}
echo "My name is ";
writeName(); //gọi hàm
?>
58
Chú ý:
– Nếu hàm không có tham số, khi gọi hàm vẫn giữ lại cặp ngoặc ()
– Để khai báo hàm với các tham số mặc định, khi khai báo ta gán ngay giá trị cho tham số đó
function tên_hàm(ts1=gt1, ts2=gt2,…)
Ví dụ 2:
<?php
function writeName($fname)
{
echo $fname " Refsnes.<br />";
}
echo "My name is ";
writeName("Kai Jim");
echo "My sister's name is ";
writeName("Hege");
echo "My brother's name is ";
writeName("Stale");
?>
Ví dụ 3:
<?php function writeName($fname,$punctuation) {
echo $fname " Refsnes" $punctuation "<br />";
} echo "My name is ";
writeName("Kai Jim",".");
echo "My sister's name is ";
writeName("Hege","!");
echo "My brother's name is ";
writeName("Ståle","?");
?>
Trang 1661
Để trả kết quả về cho hàm, sử dụng lệnh
return biểu_thức;
Để thoát khỏi hàm, sử dụng lệnh
return; hoặc exit;
62
Ví dụ 4:
<?php function add($x,$y){
$total=$x+$y;
return $total;
}
$kq = add(1,16);
echo "1 + 16 = " $kq;
?>
63
Phạm vi biến (scope)
Phạm vi biến là phạm vi ở đó biến còn có thể
được sử dụng
Có 3 phạm vi:
– Biến cục bộ (Local variables):
Khởi tạo trong hàm
Có tác dụng kể từ lúc khởi tạo đến hết hàm
– Biến toàn cục (Global variables):
Khởi tạo ngoài hàm
64
– Có tác dụng từ khi khởi tạo đến hết file trừ ở trong hàm
– Để khai báo một biến toàn cục bên trong hàm, sử dụng khai báo:
global $biến, $biến,…;
Hoặc mảng $_GLOBAL
Biến siêu toàn cục (Super global variables):
Một số biến có sẵn trong PHP như
$_SERVER, $_GLOBAL, $_GET,
$_POST,…
Trang 1765
Ví dụ:
<?php
function BienTC( )
{
global $x;
$x=3;
}
BienTC( );
echo $x;
?>
66
Biến tĩnh
Khai báo trong hàm
Giá trị được lưu trữ qua nhiều lần gọi hàm
Chỉ được khởi tạo ở lần khai báo đầu tiên
Để khai báo:
static $biến_tĩnh=giá_trị;
Ví dụ:
<?php
function BienTinh( )
{
static $x=3;
$x++;
return $x;
}
echo BienTinh(); //4
echo BienTinh(); //5
?>
Chèn file
include (“địa_chỉ_file”);
require (“địa_chỉ_file”);
include_once (“địa_chỉ_file”);
require_once (“địa_chỉ_file”);