Để in ra các mã HTML, đấu đô la @ và giá trị của các biến, chúng ta sử dụng câu lệnh echo và cung cấp cho nó một loạt giá trị cách nhau bằng dấu phẩy.. Một hằng được khởi tạo bằng hàm de
Trang 1
41
$total = §quantity * §price;
Stotal = ệtotal + (§total * §taxrate);
Dòng lệnh thứ nhất thiết lập tổng giá trị của hóa đơn mua hãng theo công thức tính: số lượng hàng nhân với đơn giá Dòng lộnh thứ nhì, cộng thêm phần thuế vào kết quả tính được ở dòng lệnh thứ nhất Thuế được tính bằng cách nhân tỉ thuế với tổng giá trị đã tính ở dòng lệnh thứ nhất
4, Dinh dang kết quả:
$total = number_format (Stotal, 2);
Ham number_fornat() s@ chia dữ liệu số theo nhóm hãng ngàn, hàng triệu và làm tròn với hai số lẻ Kết quả này sẽ thích hợp hơn cho người ding
5 In kết quả:
echo ‘Ban mua <b>', Squantity, ‘</b> mat hang vol gia <b>$',
> Sprice, ‘</b> Cong them thue, tong #0 tien se la <b»
> Stotal, ‘</>:
Bước cuối cùng trong mã kịch bản này là in ra kết quả Để in ra các mã HTML, đấu đô la (@) và giá trị của các biến, chúng ta sử dụng câu lệnh echo() và cung cấp cho nó một loạt giá trị cách nhau bằng dấu phẩy
6 Bổ sung các mã lệnh sau để hoàn tất mã PHP và trang HTML:
>
</boay>
</atml>
7 Lưu tập tin theo tên numbers.php, tải lên máy chủ Web và thử nó trong trình đuyệt (xem hình 1-17) Mã lệnh đẩy đủ của tập tin này được thể hiện trong đoạn mã 1.9
Hình 1-17: Mỡ kịch bản thực hiện oiệc tính toán dựa trên các gid tri đã được
thiết lập
8 Nếu muốn, bạn có thể thay đổi giá trị của ba biến và chạy lại mã kịch bản này (xem hình 1-18).
Trang 242 Chương 1: Giới thiệu về PHP
Ban mua 10 mat hang voi ga §258.95, Cong them thua,
1 $2,848.45 tong so ben
Hinh 1-18: Dé thay đổi trang Web được tao, bạn thay đổi giá trị của ba biển
trong mã kịch bản
Đoạn mé 1.9: Mã kịch bản mình họa các phép tính cơ bản của một máy tính thương mại điện từ
<IDOCTYPE html PUBLIC "~//W3C//DTD XHTML 1
> Transitional//EN" “http://www.w3.org/TR/2000/REC-xhtmli-
920000126/DTD/xhtml1-transitional.dta">
<html xnlng="http://wrw.w3.0rg/1999/xhtml" xml:lang="en"
> lange"en">
<head>
<meta bttp-equiv="content-type" contente"text/html;
> charset=is0-8859-1" />
<title>so</title>
</nead>
<body>
<?php # Doan ma 1.9 - numbers.php
// Thiet lap bien
Squantity = 30;
Sprice = 119.95;
Staxrate = 05;
// Tỉnh tong,
Stotal = $quantity * §price;
Stotal = Stotal + (§total * §taxrate); „
$total = number_format (§total, 2); // Dinh dang ket qua
// 1m ket qua
echo 'Ban mua <b>', $quantity, ‘</b> mat hang vol gia <b>$',
> Sprice, ‘</b> Cong them thue, tong so tlen ge la <b>$',
> Stotal, '</b>."s
>
</body>
</ntml>
Trang 3
PHP hé trợ giá trị số nguyên cực dại khoảng 2 tỷ trong hậu hết các môi trường
Trong tép tin php.ini, ban cé thể thiết lập sổ số lẻ cho sổ thập phân sẽ
sử dụng
\e tới các phép tính sẽ phát sink vdn dé vé do wu tien (thứ tự Khi lam v
thực hiện các phép tính) Để xác định độ ưu tiên, bạn nên gom các mệnh:
đề trong một biểu thức bằng các dấu ngoặc
Néu ting dung Web ddi hỏi tính toán ới độ chỉnh xác cao, bạn có thể tham khảo phẩn ndi vé các con số tà hàm trong các tài liệu của PHP để biết thêm chỉ tiết
Néu thiết lập giá mà không sử dụng hai số lề (ef dụ như 119.9 hoặc 34),
có thể sử dụng hàm aumber_format() dé thống nhất định dạng trước
hi in ra
Giéi thiéu vé hing (constant)
Hang 1a mot kidu du ligu'dac bigt trong PHP Nó khác với biển ở chỗ giá trị khỏi tạo của nó được giữ nguyên trong toàn bộ mã kịch bản Trong thực tế, không thể thay đổi giá trị của một hằng khi nó đã được thiết lập
Một hằng được khởi tạo bằng hàm define() (thay vi sử dụng toán tử gán (=) như khi khởi tạo giá trị biển), Vi đụ:
đefine“NAME, 'giá trị
Chú ÿ, tuy không bất buộc nhưng các tên hằng thường ở dang cha hoa Một điều
quan trọng cẩn ghi nhớ là hằng không có đấu § ở đầu như các biến (vì về mật kỹ
thuật hằng không phải là biến)
Hãng có thể được in ra bằng một trong hai kỹ
echo ‘Hello, * NAME;
hoặc:
echo ‘Hello, !, NAME;
Khong thể in hằng bằng cách sử dụng echo "Hello, NAME" vì khi đó PHP sẽ
in ra giá trị là Hello, NAME chit không in ra giá trị của hằng NAME
PHP chạy với một số hằng được định nghĩa sẵn, cũng giống như các biến được định nghĩa sẵn đã sử dụng trước day Các hằng này là PHP_VERSION (cho biết phién ban PHP dang sit dung) va PHP_os (cho biét hệ điều hành của máy chữ)
“Thực hành sử dung hằng theo các bước sau:
1 Tạo một hồ sơ PHP mới trong trình soạn thảo văn bản
<IDOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
> Pransitional//EN" "http://www.w3.org/TR/2000/REC-xhtnl1~
20000126/D7D/xhtmli-transitional.dtd">
Trang 444 Chương 1:
<html xmlni
> langeten">
ttp://www.w3.0rg/1999/xhtml" xnl:lang="en"
<head>
<meta http-equiv="content-type" content="text/html;
> charset=iso-8859-1" />
<titlesHang</title>
</head>
<boay>
<?php # Doan ma 1.18 - constants.php
2 Tạo một hằng ngày tháng:
đefine (TODAY', ‘January 8, 2003+)
Ví dụ này chỉ mang tính mình họa cách định nghĩa một hằng, vi hằng TODAY được định nghĩa như trên sẽ không có ứng dụng thực tế Chương 6 “Sử dụng PHP
và MySQL” sẽ để cập kỹ hơn vẻ cách sử dụng các hằng để lưu giữ thông tin truy xuất cơ sở dữ liệu được an toàn
3 In ra ngày, phiên bản PHP và thông tin về hệ điều hành:
echo ‘Hom nay la ' TODAY ",<br />May chu nay đang su
> dung phien ban PHP <b>! PHP_VERSION ‘</b> tren he
> dieu hanh <b>! PHP_OS '</b>.<br/><br/>'
Vi céc hing khong thé in ra khi chúng được đặt trong phạm vi của các đấu nháy (không có dấu $ ở đầu sẽ làm cho chúng ïn ra ở dạng chữ in hoa), nên toán tử kết hợp đã được sử dung trong câu lệnh echo()
4 Hoàn tất mã PHP và trang HTML:
>
</body>
</atml>
5 Lưu lại tập tin theo tên constants.php, tải lên máy chủ Web và thử nó trong trình duyệt Web (xem hình 1-19) Mã lệnh đẩy đủ của tập tin nay được thé
Hom nay la January 8, 2003,
‘May chủ nay dang su dung phien ban PHP 5.03 ren he
eu hack WINNT,
Hinh 1-19: Bang cách sử dụng hằng trong PHP, bạn có thể tìm hiểu thêm nhiễu
thông tin uề PHP đã cài dat.
Trang 5Chương 1: Giới thiệu vẻ PHP 45
Doan ma 1.10: Hang là kiểu dữ liệu bạn có thể sit dung trong PHP
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
> Transitional//EN" "http://www.w3.org/TR/2000/REC-xhtmli-
~> 20000126 /DTD/xhtmli-transitional.ata">
<html xmlne="http://www.w3.0rg/1999/xhtml" xnl:lang="en™
> lang="en">
<head>
<meta http-equiv="content-type" content="text/html;
> charset={e0-8859-1" />
<titlesHang</title>
</head>
<body>
<?php # Doan ma 1.10 - constants.php
define (‘TODAY!, ‘January 8, 20031); // Thiet lap ngay
// Bien thi thong bao
echo 'Hom nay la ' TODAY ‘.<br />May chu nay dang eu dung
> phien ban PHP <b>' PHP_VERSION ‘</b> tren he đieu hanh
> <b>! PHP_OS '</b>.<br/><br/>"s
a
</body>
</html>
Nếu có thể, hãy chạy mã hịch bản này với một máy chủ Web khác (xem hành 1-20)
Hình 1-24
k Chạy cùng một mã hịch bản (tham khảo mã kịch bản 1.10) trên các máy chủ khác nhau sẽ cho các kết quả khác nhau
9) Chương ? “Cookie vi Session", sẽ dễ cập đến một hàng khác, dé la StD
(Session 1D)
Q Chương 9 “Phát triển ứng dụng Web”, sẽ nói đến hai hồng nữa là
_—FILE, _ tà _ LINE, _
Trang 646 Chương 1:
Các dấu nháy kép và nháy đơn
Trong PHP, một điều quan trọng là phải phân biệt được sự khác nhau vẻ công dụng của dấu nháy đơn và nháy kép Như bạn đã thấy trong các ví dụ của chương, này, câu lệnh echo() và print() có thể sử đụng cá hai kiểu đấu nháy Vậy đâu là
sự khác biệt giữa chúng và vì sao phải sử dụng cả hai kiểu? Bây giờ, chúng ta sẽ
để cập vấn để này một cách chỉ tiết hơn
Với PHP, các giá trị được đặt trong cập nháy đơn sẽ được xem như hằng chữ, trong khi đó các giá trị được đặt trong cặp nháy kép sẽ được biến đổi Nói cách khác, việc đặt các biến và các ký tự đặc biệt (xem bảng 1.2) trong cặp nháy kép
sẽ làm cho giá trị của chúng được in ra thay vì các giá trị hằng chuỗi của chúng
Ví dụ, chúng ta có biển §var như sau:
Svar = ‘tes
Câu lệnh echo "var is equal to $var"; sé in ra chubi var is equal to test, trong khi câu lệnh echo 'var 1s equal to $var' sẽ in ra chuỗi var is equal to
$war Bằng cách sử dụng dấu đô la ($) được mã hóa oscapo, câu lệnh echo
*\jvar 1s equal to §var" sẽ ïn ra chuỗi §uar is equal to test, trong khi dé cu lệnh eeho "\$var 1ø equal to $var' sé in ra chubi \Svar is equal to Svar
Trong ví dụ này, cặp nháy kép sẽ thay thế tén bién (Svar) bang gid tri cla né (test) và mã ký tự đặc biệt (\$) sẽ thay thế cho giá trị của biến Các giá trị trong cập nháy đơn luôn in ra chính xác những gì đã nhập, ngoại trừ đấu nháy don (\")
và đấu chéo ngược (\\) được mã hóa escape
Nguyên tắc trên được áp dụng cho các cặp dấu nháy đơn và nháy kép, cho dù nó,
được sử dụng trong các câu lệnh echo() hoặc print(), hoặc khi gán giá trị cho
một chuỗi, hoặc khi truyén đữ liệu cho một hàm đưới dạng tham số Để có một ví
dụ nữa về sự khác biệt của hai kiểu đấu nháy, chúng ta sẽ chỉnh sửa lại mã kịch ban numbers.php
Bang 1.2: Cac hy tự này có ý nghĩa đạc biệt khí được sử dụng phía trong cap nháy kép
Ma Ý nghĩa
Trang 7Chương 1: Giới thiệu vẻ PHP 4T Bây giờ, chúng ta sẽ thực hành sử dụng dấu nháy đơn và nháy kép theo các bước sau:
1 Mở tập tin nunbers.php (tham khảo đoạn mã 1.9) trong trình soạn thảo văn bản
8 Thay đổi câu lệnh echo để sử dụng đấu nháy kép thay cho đấu nháy đơn
echo “Ban mua cb»§quantity</b> mat hang voi don gia
> <b»\§§prlee</b>, Cong voi thue, tong so tien la
+ <bo\$Stotal</b>.\n";
Chúng ta vẫn có được kết quả mong muốn bằng cách sử dụng dấu nháy kép thay cho các đấu nháy đơn và toán tử kết hợp chuỗi Chú ý, kỹ thuật \$§vartable đã được sử dụng để tạo ra các kết quả chẳng hạn như $3778.43 (dấu đô la đẩu tiên được in ra và dau dé la thứ hai cho biết bắt đầu một biển)
3 Tạo một số đồng trống trong trình duyệt Web:
echo ‘<br /»<br /
ĐỂ thuận tiện so sánh hai dòng lệnh eeho(), chúng được phân cách bằng các
ngắt dòng
4 Lặp lại câu lệnh eeho thứ nhất, nhưng lần này sử dụng đấu nháy đơn
echo ‘Ban mua <b>$quantity</b> mat hang vol don gia
—> <b»\§§prlce</b> Cong voi thue, tong so tien la
> <bo\$stotal</b>.\n';
Các mã lệnh đã được in ra để thấy rõ sự khác biệt giữa việc sit dung dau nháy đơn và nháy kép
5 Thay đổi tiêu để trang, nếu muốn
6 Lưu lại tập tin theo tôn quotes.php, tải lên máy chủ Web và thử nó trong trình đuyệt Web (xem hình 1-21) Mã lệnh đẩy đủ của tap tin được thể hiện trong đoạn mã 1.11
eine
Ban mia Squantity mat hang vot
'SStotal
Hinh 1-21: Két quả trên minh hoa cho cách sử dung va sự khác biệt trong vite
sử dụng đấu nháy đơn nà nháy hếp của mã lệnh
Trang 848 vé PHP
Chương 1:
Đoạn mã 1.11: Mã kịch bản này cho thấy sự khác biệt trong vite sử dụng dấu nháy đơn tà nháy kép
<?php
$total
§total
1a
2
<IDOCTYPE html PUBLIC
> Transitional//EN" "http://www.w3.org/TR/2000/REC-xhtmli~
> 20000126/prp/xhtmi1-transitional.ata">
<html xmlnss"http://vww.w3.org/1999/xhtml" xml:lang="en"
> lang="en">
<head>
<meta bttp-equiv="content-type" content="text/html;
> charset=is0-8859-1" />
<title>Dau nhay</title>
</head>
<body>
// Thiet lap bien
$§quantity = 36;
§price = 119.95;
Staxrate = 05;
// Tỉnh tong
§total = number_format ($total, 2); // Dinh đang ket qua
echo "Ban mua <b>$quantity</b> mat hang vol don gia
~> <b»\§@price</b> Cong voi thue, tong so tien la
—> <b»\§§total</b>.\n!
echo ‘<br /><br />!
echo ‘Ban mua <b>$quantity</b> mat hang vot don gia
> <bo\$$price</b> Cong vol thue, tong so tien la
> <ba\gstotal</b>.\n'5
</body>
</html>
//M3C//DTD XHTML 1.0
# Doan ma 1.11 - quotes.php
= Squantity * price;
= §total + (total * §taxrate); // Bo sung thue
ket qua
Q
oO
Vì PHP sẽ cổ gắng biên dịch tất cả các giá trị bên trong dấu nháy kép, nên uễ mặt lý thuyết, uiệc sử dụng đấu nháy đơn sẽ nhanh hơn Các dấu nháy đơn thường được sử dụng khi bạn không muốn biên dich những gi
có trong chuỗi
PHP cang hé trợ phương pháp heredoc dé biểu diễn chuỗi Nếu đã quen vdi khái niệm này, bạn có thể tham khảo các tài liệu vé PHP dé tim hiéu thêm uễ cú pháp
Trang 9Chương 9: Lập trình với PHP M
Chương 2:
LẬP TRÌNH VỚI PHP
Một số kiến thức cơ bản về ngôn ngữ lập trình PHP đã được giới thiệu trong các chương trước Bây giờ, bạn sẽ sử dụng những kiến thức này để bắt đầu lập trình Trong Chương 2, đồng thời với việc tạo các mã kịch bản phức tạp hơn, bạn sẽ tiếp tục tìm biểu về thuật ngữ và cú pháp chuẩn của ngôn ngữ
Chúng ta sẽ khởi đấu bằng việc viết các biểu mẫu HTML và dùng PHP để xử lý các giá trị gửi đi Sau đó, bạn sẽ tìm hiểu về các câu lệnh điều kiện, các toán tử còn lại, mảng (kiểu dữ liệu cuối cùng được để cập trong cuốn sách này) và vòng lặp (dạng kết cấu ngôn ngữ sau cùng)
Tạo biểu mẫu HTML
PHP quản lý biểu mẫu HTML theo một quá trình gồm bai bước Đầu tiên, tạo biểu mẫu HTML bằng một trình soạn thảo văn bản (hoặc một trình soạn thảo WYSIWYG) Sau đó, tạo mã kịch bản PHP để nhận dữ liệu
'Tuy không đi sâu vào chỉ tiết, nhưng trong chương này, biểu mẫu HTML sẽ được mình họa bằng một ví dụ đơn giản
Biểu mẫu HTML được tạo với các thẻ <#orm> và một số dạng nhập Ví dụ về thé form:
<form action="script.php" method="post"></form>
“Thuộc tính quan trọng nhất cia thé form la action Thuộc tinh này cho biết dữ liệu của biểu mẫu sẽ được gửi đi đầu Thuộc tính thứ hai là method (tham khảo mục "Chọn phương pháp gửi dữ liệu"), tùy chon post của thuộc tính này thường được sử dụng nhất
Q Chọn phương pháp gửi dữ liệu
Thuộc tính method của một biểu mẫu quy định cách gửi dữ liệu đến trang xử lý chúng Thuộc tink này có hai tùy chọn là get va post, dé
cập đến cách thức sử dụng Phương pháp get truyền dữ liệu đến trang
xử lý dưới dạng một chuỗi các cặp tênagiá trị nổi tiếp sau URL V{ dự: ttp://Iocalboat/aeript.php?nane=Eoner&gender=M
Lợi điểm của uiệc sử dụng phương pháp get là trang kết quả có thể được cghỉ nhận lại trong trình duy‡t của người dùng (tì nó là URE) Vì lý do
đó, bạn có thể nhấp nút Bach để quay trở lại trang get hode tai lai nó
mà không gập phải uấn để gì (cả hai đặc điểm này đâu không có trong
Trang 10
HP
phương pháp post Tuy nhiên, phương pháp get có nhược điểm là bị giới han vé lượng đỡ liệu được truyễn uà không được an toan (vt moi người đễu có thể nhìn thấy dữ liệu)
Vi cde ly do trên, chúng tôi chủ yếu sử dụng phương pháp post Để biết them thong tin uề hai phương pháp gửi dữ liệu, bạn có thể tham khảo các chuẩn vé HTML tai Website http:/ /www.w3.0rg
Các trường nhập sẽ duge dat trong phạm vi thẻ mở và đồng của thể form Các trường này có thể là hộp văn bản, nút chọn lựa, menu lựa chọn, hộp kiểm mỗi dạng trường nhập trong biểu mẫu sẽ cần tới các mã PHP khác nhau để xử lý
“Thực hành tạo biểu mẫu HTML theo các bước sau
1 Tạo một hỗ sơ HTML mới trong trình soạn thảo văn bản:
<IDOCTYPE html PƯBLIC "~//W3G//DTD XHTML 1.0
> Transitional//EN"*http://www.w3.0rg/TR/2000/REC-xhtml1-
> 20000126/DTD/xhtmli-transitional.ata">
<html xmino="http://www.w3.0rg/1999/xhtml" xml:lang="en"
> lang="en">
<head>
meta bttp-equiv="content-type" content="text/html;
> charseteiso-8859-1" />
<titlesBleu mau HTML</title>
</head>
<body>
<i Doan ma 2.1 - form.htal >
9 Chèn vào dòng khỏi tao thé form:
<form action="handle_form.php" method="post">
Vì thuộc tính action cho biét ma kich ban ma di liệu sẽ được gửi đến, nên nó, phải có tên thích hợp (handle_form để ứng với mã kịch bản form.html) với phần mỡ rộng pbp (vì đây sỡ là một mã kịch ban PHP)
8 Tạo biểu mẫu HTML:
<fleldset><legend>Nhap vao thong tín cua ban:</legend>
size="20"
<p><b>Ten:</b> <input type="text" name="nam
> maxlength="40" /></p>
<pocb>Emall:</b> <input type="text" name="email™ aize="40"
> maxlength="60" /> </p>
<p><beGiol tinh:</b> <input type="radio" name="gender"
—> value="4" /> Nam <input type="radio" name="gender"
> values"F™ /> Nu</p>
<p><b»Tuoti</b>