a
Để có thể tiếp tục bước vào phần rộng lớn
hợn của lập trình thiết kế web này, mình mong
chắc bạn:
*.Bắt buộc bạn phải có kiến thức về HTML
*.Rất nên biết một client script như javascript
Sau đây là thông tin để chúng ta ba hoa về
PHP
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.
Wikipedia
Bấy nhiêu đó là đủ để chúng ta ba hoa rồi, tiếp
theo là hiểu được
PHP làm gì.
_PHP là một sever script giống như ASP.
_PHP miễn phí (ASP là của Microsoft, chả mấy
khi Microsoft cho không cái gì, nếu có cho
không thì vẫn có cách lấy tiền khác).
_PHP làm việc được với nhiều hệ CSDL
_PHP được sử dụng rất rộng rải. Dám nói 85%
website mà các bạn đã từng viếng thăm viết từ
PHP
_Nhìn chung thì PHP hơi dễ hơn các ngôn ngữ
cùng loại khác.
_Khác biệt giữa sever và client script là cái
client script(như javascript chẵ hạn) là sau khi
trình duyệt load nó về (view source lên là thấy)
nó mới chạy. Còn sever script thì đã xử lý tử
trên sever òi. Trang mà các bạn đang xem
cũng được viết với sever script. Bạn view
source thì chỉ thấy một mớ html và javascript
quen thuộc. Nhưng thật ra bản thân nó không
phải như vậy đâu! Nó viết rất khác.
_Đây cũng là một trong những điểm hay của
sever script, bạn nhớ cách viết chương trình
lam tn1 cộng hai số của javascript không. Ta
tất nhiên là có thể tính toán với PHP, nhưng có
điều khi tính toán xong, in ra, người dùng xem
nguồn trang chỉ có kết quả. Khỏi sợ người ta
ăn cắp trương rình của mình.
_Và đây cũng có thể là điều mà các bạn sẽ
không quen nếu chỉ từng dùng các client
script, bạn còn nhớ cách kích hoạt một
function với event không!? Tới bây giờ với
những gì mình biết thì các sever script chỉ
dừng lại sau khi đả "dịch" ra mọi thứ ở sever
và in ra code dựng ra thứ ta mong muốn.
_Nhưng vì các sever script có thể dễ dàng in
ra các client script và tại đây, một lần nữa xuất
hiện sự cần thiết của con người.
_Một điều rất tuyệt ở PHP là không như
javascript, chả thể nào có chuyện khác biệt
giữa các trình duyệt, và thậm chí cả loại máy
sever. Và cũng không có chuyện tuỳ từng nhà
sản xuất muốn chế tạo cái hàm, đối tượng nào
thì làm, có một tổ chức chuyên làm những
chuyện ấy. Và mỗi lần có cái gì mới thì tất cả
những người dùng nguồn (những nhà cung
cấp cho chúng ta) sẽ đồng loạt thay đổi.
_Điểm mạnh của các sever script là làm việc
với các CSDL, và làm việc với các CSDL xứng
đáng để có một trang hướng dẫn riêng.
_Tuy không bắt buộc và rất cần thiết nhưng
kiến thức cơ bản về lập trình sẽ rất và cực kỳ
hữu ít cho bạn. bạn sẽ dễ dàng làm quen với
cú pháp mới, khi đả hiểu thế nào là hàm, thế
nào là biến, vòng lặp....
Cú pháp có thể thay đổi nhưng cách hoạt
động vẫn thế.Nếu bạn quyết định đi tiếp vào
ngôn ngữ này là bạn đã quyết định nghiên cứu
một thứ rất mới và rất mạnh mẽ,nhưng cái gì
càng mạnh mẽ, phức tạp thì lại càng...........
các bạn hiểu ý mình rồi đó!
CHUẨN BỊ
Để làm việc với php, thật đáng tiếc là không
phải chỉ cần tới anh bạn già NotePad mà cần
phải có cái gọi là Websever (bao gồm nhiều
thứ gộp lại), nơi mà thực hiện việc dịch và các
thứ khác.
Đầu tiên tìm một cái host hỗ trợ php..Nếu có
điều kiện thì mua luôn một cái host(cái host
nho nhỏ khoảng vài trăm nghìn một năm).
Không có điều kiện thì tìm cho mình một cái
host free.
Một số địa chỉ web free host:
byethost.com
summerhost.info
000webhost.com..........................
các bạn có thể tìm thêm với google.
_Một số lời khuyên của mình là nên tìm những
phần mềm chuyên nghiệp để thiết kế luôn như
Dreamweaver(cái này hay lắm). Chứ anh bạn
già NotePad củng phải nghĩ hưu chứ. cái này
ra tịm đĩa mua, 7000 một bộ đủ các phần
mềm.
_Nếu dư tiền thì đầu tư cho mình một cái USB,
cài đặt những gì cần kiếp, đừng tiếc tiền,
chừng nào xài tiền phung phí, cho gái, đánh
bạc thì đáng trách, chứ đầu tư cho kiến thức
thì không sao
_À thêm một lời khuyên nữa là đừng dùng
trình duyệt IE, chuyễn qua xài FF đi.
TRANG ĐẦU TIÊN
PHP tuy dễ dàng sinh ra mã HTML nhưng
cũng có thể chèn vào giữa nội dung file HTML.
Mã nguồn:[Chọn]
<html>
<head>
<title>Ví dụ php</title>
</head>
<body>
<?php
echo'Đây là text được sinh ra bởiPHP';
?>
</body>
</html>
Để đánh dấu nội dung PHP, ta đặt code PHP
trong cặp<? và ?>bạn copy đoạn mã trên, save
lại với tên php code.php chẵn hạn, lưu ý
là.php, đặt nó vào trong thư mục gốc của
host ,websever và mở trình duyệt chạy thử
nhé.
File php có nhiều phần mở rộng khác nhau
như là .php3, .php4, nhưng cứ .php thôi cho
nó khoẻ .
Một trang sẽ được hiện ra. hãy thử xem
source nguồn của nó, bạn sẽ không thể tìm
thấy các cặp<?và?>cũng như từ echo, chỉ
những HTML và text bình thường.
CHƯƠNG 1
BIẾN PHP
Trước tiên, dành cho các bạn mới bước chân
vào lĩnh vực lập trình:
Biến là đại lượng được đặt tên, dùng để lưu
giữ gái trị và gái trị có thể thay đổi trong quá
trình thực hiện chương trình.
SAK 11
Quả thật khái niệm được coi là cơ bản này khá
là mơ hồ cho những người mới bắt đầu như
chúng ta,nhưng các bạn sẽ từ từ hiểu rỏ mọi
vấn đề khi tiếp tục đi sâu vào!
Một ví dụ đời thường:
Bạn có một bao thuốc lá, bạn lấy cây viết đặt
tên nó là a, bạn nhét 10,000 VND vào bao
thuốc lá, thì lúc này bao thuốc là có giá trị là
10,000 VND (tất nhiên là không tính tiền cái
bao hihihi ) rồi một hồi sau, bạn lấy 10,000 ra,
bỏ vào tờ 5,000 thì nó có giá trị 5,000....hay là
x,y,z trong một bài toán, ta cho x=5, y=6, z=x
+y thì Z=11
Còn trong lập trình php
Để đánh dấu đây là một biến, ta dùng ký tự $
và một số ký tự tiếp theo, các ký tự kiếp theo
cần tuân thủ một số nguyên tắc như sau:
Quy tắc đặt tên biến
Có 3 quy tắc:
* Ký tự bắt đầu phải là một chữ cái, còn các ký
tự tiếp theo có thể là chữ số, gạch dưới, chữ
cái. Ngoài mấy thứ kể trên ra, bạn không nên
thêm bết cứ thứ gì khác vào tên biến!
* Không được có khoản trắng
* Các biến phân biệt chữ hoa chữ thừơng, vì
thế ANH sẽ khác với Anh cũng như anh, để
tránh rắc rối, ta nên dùng chữ thường cho tất
cả tên biến và dùng dấu _ để phân cách thay
cho khoảng trắng
Một số ví dụ:
Các tên biến không hợp lệ:
$11a2 $lop 11
Các tên biến hợp lệ:
$lop11A2 $lop_a2
CÁC GIÁ TRỊ CỦA BIẾN
Trước tiên, mình xin trình bày với các bạn 3
kiểu giá trị cơ bản nhất
Boolean
Boolean là gái trị logic có hai giá trị là TRUE
hoặc FALSE.(TRUSE có nghĩa là đúng, FALSE
là sai)
Số
là loại giá trị dùng đễ tính toàn đó, đừng nói
bạn không biết số là gì nha!Số thì có số động,
số nguyên......
Chuỗi
Chuỗi là các kí tự bảng chữ cái + kí tự đặc biệt
+ số, nói chung là bất kì cái gì mà ta viết ra
trên bàng phím được, thì là chuỗi!
Câu lệnh gán:
Lệnh gán là 1 trong những lệnh cơ bản nhất
của ngôn ngữ lập trình, trong javascript có
dạng:
<tên biến>=<biểu thức>;
Nếu gán biến với giá trị chuỗi:
<tên biến>="<biểu thức>";
cần có thêm cặp dấu nháy.
VD:
ta gán biến a và b với các giá trị như sau:
$a=1;
$b="1";
$a sẽ mang gái trị số 1, còn $b mang giá trị
chuỗi "một" ==> đặt bên trong cặp dấu nháy là
chuỗi!
Gán biến với giá trị Boolean
VD:
$a=TRUE;
Gán như thế này có nghĩa là $a mang giá trị
ĐÚNG.
Chú ý là nếu bạn gán $a như thế này:
$a="TRUE";
Có nghĩa là bạn đơn thuần gán cho nó một
chuỗi gồm các chữ cái TRUE.
TOÁN TỬ
Biểu thức:
Trong lập trình đều có một số quy tắc chung,
ví dụ như việc ưu tiên tính toán với các phép
toán
+,-,*,/.
hay là ưu tiên với biểu thức trong dấu (). Mọi
quy tắc số học về mặt này đều đúng trong php
1.Toán tử số học
(+[cộng], -[trừ],*[nhân], /[chia] , %[chia lấy
dư],++[tự tăng 1], --[tự giàm 1])
+ : Phép cộng.(khỏi giả thích)
- : Phép trừ.(khỏi giả thích)
* : Phép nhân.(khỏi giả thích)
/: Phép chia.(khỏi giả thích)
% : Phép chia lấy phần dư.
VD: 5/3 được 1 dư 2 thì 5%3=2,
++: Phép tăng một đơn vị.
VD:
1++ = 2;
5++ = 6
--: Phép giảm một đơn vị.
VD:1--= 0;
9 -- = 82.
Toán tử so sánh
== : So sánh bằng.
> : So sánh lớn hơn.
< : Nhỏ hơn.
>= : So sánh lớn hơn hoặc bằng.
<= : Nhỏ hơn hoặc bằng.
!= : So sánh khác
Chú ý: chỉ có <= (bé hơn hoặc bằng) chứ
không có =<(bằng hoặc bé hơn, cũng như thế
đối với >=, không có chuyện =>)
3.Toán tử logic && (and):
Giá trị đúng khi cả hai cùng đúng.
VD:nếu(anh yêu em)và(em yêu anh)thì cưới
ngay.
ta chỉ cưới ngay khi hai điều kiện trong ngoặc
cùng đúng.
|| (or) : Giá trị đúng nếu một trong 2 đều đúng.
VD:nếu(em đau khổ)hoặc(anh đau khổ) thì chia
tay!
Chỉ cần một trong hai điều kiện đúng là chia
tay
Đối với chuỗi
Toán tử.
tượng trưng cho việc nối hai chuỗi lại.
VD:
$a="I am ";
$b="Nguyen";
$c=$a.$b;
thì c có giá trị là chuỗi "I am Nguyen".
Toán tử trong PHP cũng giống như trong các
ngôn ngữ khác.
Toán tử được sữ dụng khai báo trên tầm vực
script sẽ có tầm vực trên toàn script .
Biến khai báo trong hàm ( function ) sẽ có tác
dụng trên tầm vực của hàm đó .
1.Các phép toán học
========================
Toán tử| Tên| Ví dụ
-----------------------------------------
+cộng $a+$b;
-trừ $a-$b;
*Nhân $a*$b;
/chia $a/$b;
%Modulo $a%$b;
=======================
2.Các phép toán nối chuỗi
Các phép toán nối chuỗi là dấu "."
Ví dụ :
<?
$a="http://www.";
$b="library";
$b=$b."php.net";
$a=$a.$b;
echo$a;// bạn test xem
?>
3.Các phép toán trả về từ gán
Sữ dụng phép toán trả về phép toán học
khác .
<?
$a="http://www.";
$b="libraryphp";
$a=$a.$b;
echo$a.($c=".net");// bạn test xem
?>
4.Các phép gán kết hợp
Trong PHP các bạn có thể sữ dụng các phép
toán gán kết hợp,sẽ giảm bớt thời gian khai
báo.
Sau đây là bảng thống kê phép toán gán kết
hợp ( có 2 cách sữ dụng )
========================
Toán tử| sữ dụng| Tương ứng
========================
+=$a+=$b $a=$a+$b;
++$a++$a=$+1;
-=$a-=$b $a=$a-$b;
--$a--$a=$a-1;
/=$a/=$b $a=$a/$b;
*=$a*=$b $a=$a*$b;
%=$a%=$b $a=$a%$b;
.=$a.=$b $a=$a.$b;
========================
Bên trên là một số toán tử mà mình sưu tầm
được, hi vọng nó sẻ giúp ít phần nào cho các
bạn!
PHP VỚI CẤC KIỂU GIÁ TRỊ
Bài này sẽ nêu ra một số đểm linh động của
php về mặt tính toán và các giá trị.
Các bạn nên đọc bài này để tránh thắc mắc về
sau gặp phải bời những điểm khá linh động đó!
VD: Ta có đoạn code
Mã nguồn:[Chọn]
<?
php
$a=2;
$b="2 chuỗi";
$c=$a+$b;
echo$c;
?>
Nếu bạn chạy thử và kết quả in ra màn hình sẽ
là 4. Sỡ dĩ có điều này là do nếu một chuỗi bắt
đầu bằng một số nguyên hay số động PHP có
thể xử lý nó như kiểu số.
Còn một trường hợp như thế này:
Mã nguồn:[Chọn]
<?php
$a=2;
$b=2.345;
$c=$a+$b;
echo$c;
?>
$a là số nguyên, $b là số động và $c=$a+$b sẽ
là một số động 4.345
Với PHP làm việc với kiểu giá trị của biến thôi
không cũng là một nghệ thuật. Mình sẽ có
những loạt bài dành riêng cho mấy chuyện
này.
NHÁY ĐƠN - NHÁY KÉP
Mấy cái này ví dụ cái là các bạn hiểu ngay!
Dấu nháy và biến
Mình có hai đoạn code php, cả hai đều giống
nhau, chỉ khác nhau ở cặp dấu nháy dòng thứ
3.
Mã nguồn:[Chọn]
<?php
$dot=".net";
$domain="wapcry$dot";
echo$domain;
?>
Đoạn code php trên sẽ in ra kết quả
là:wapcry.net, nhưng với đoạn code này:
Mã nguồn:[Chọn]
<?php
$dot=".net";
$domain='wapcry$dot';
echo$domain;
?>
Kết quả sẽ là:wapcry$dot.
Bạn có thể bao lấy chuỗi bằng cặp dấu nháy
đôi, biến trong chuỗi sẽ được mỡ rộng, còn
khi bạn bao chuỗi bằng cặp dấu nháy kép, biến
trong chuỗi sẽ không được mỡ rộng!
Mình thường dùng kèm phép nối chuỗi vào,
làm thế sẽ không bị nhầm lẫn.
VD:
Mã nguồn:[Chọn]
<?php
$dot=".net";
$domain='wapcry'.$dot;
echo$domain;
?>
Mỗi khi in ra hay gắn cái gì có chứa chuỗi và
biến, mình đều bao đoạn chuỗi thứ nhất với
một cặp dấu nháy, sau đó thực hiện phép nối
chuỗi đó với biến bằng mộ dấu chấm, và cứ
thế.
Thay thế các cặp dấu nháy cho nhau
Nếu bạn muốn in ra một chuỗi chứ ký tự(")
thay vì đặt thêm trước nó một dấu \ ta có thể
đơn giản thay cặp dấu nháy bao ngoài chuổi
bằng cặp dấu nháy đơn.
VD:
Mã nguồn:[Chọn]
<?php
echo'Dấu nháy kép" ';
?>
PHP HẰNG
Định nghĩa hằng
Hằng số là đại lượng có giá trị không đổi, theo
nghĩa toán học. Còn trong lập trình thì cũng
hơi tương tự như thế.
Hằng được đặt ra để lưu giữ một giá trị
(tương tự như biến) nhưng chỉ khác một điều
duy nhất là sau khi khai báo giá trị , ta không
thể thay đổi giá trị của nó nữa!
Hàm define() được sử dụng để tạo một hằng
số:
Hàm này có cấu trúc sau:
define ("tên_hằng","giá trị của hằng");
Ví dụ:
define ("COMPANY","NS Co.Ltd");// Định
nghĩa hằng COMPANY với giá trị là "NS Co
Ltd"define ("diem_so",4.5);
// định nghĩa hằng diem_so với giá trị là 4.5
(hic... thi lại );
Sau khi một hằng số được tạo ra,ta có thể sử
dụng chúng thay cho giá trị của chúng:
echo ("Tên công ty: ".COMPANY);
Điều này tương đương với echo ("Tên công ty:
NS Co Ltd");
Một số hằng xây dựng sẵn(built in constant)
PHP có chứa một số hằng được xây dựng
sẵn.
TRUE và FALSE là 2 hằng đã được dựng sẵn
với chỉ định true (1) và false (=0 hoặc một xâu
rỗng)
Hằng số PHP_VERSION chỉ định phiên bản của
bộ phân tích PHP mà bạn đang dùng hiện tại.
HằngPHP_OS chỉ định hệ điều hành server mà
trình phân tích PHP đang chạy.
echo (PHP_OS);
// in ra màn hình"Linux" (ví dụ)_FILE_and_
LINE_ trả về tên của đoạn script (đoạn mã
nhúng) đang được phân tích tại dòng hiện thời
trong đoạn mã script.
PHP còn cung cấp một số hằng để thông báo
lỗi như E_ERROR, E_WARNING, E_PARSE và
E_NOTICE.
Ngoài ra, PHP còn cung cấp một số biến cung
cấp thông tin về môi trường PHP đang sử
dụng.
Để xem các thông tin này,bạn có thể dùng
hàm phpinfo() như sau:
<HTML>
<!-- phpinfo.php-->
<BODY>
<?php
phpinfo();
?>
</BODY>
</HTML>
PHP HẰNG
Định nghĩa hằng
Hằng số là đại lượng có giá trị không đổi, theo
nghĩa toán học. Còn trong lập trình thì cũng
hơi tương tự như thế.
Hằng được đặt ra để lưu giữ một giá trị
(tương tự như biến) nhưng chỉ khác một điều
duy nhất là sau khi khai báo giá trị , ta không
thể thay đổi giá trị của nó nữa!
Hàm define() được sử dụng để tạo một hằng
số:
Hàm này có cấu trúc sau:
define ("tên_hằng","giá trị của hằng");
Ví dụ:
define ("COMPANY","NS Co.Ltd");// Định
nghĩa hằng COMPANY với giá trị là "NS Co
Ltd"define ("diem_so",4.5);
// định nghĩa hằng diem_so với giá trị là 4.5
(hic... thi lại );
Sau khi một hằng số được tạo ra,ta có thể sử
dụng chúng thay cho giá trị của chúng:
echo ("Tên công ty: ".COMPANY);
Điều này tương đương với echo ("Tên công ty:
NS Co Ltd");
Một số hằng xây dựng sẵn(built in constant)
PHP có chứa một số hằng được xây dựng
sẵn.
TRUE và FALSE là 2 hằng đã được dựng sẵn
với chỉ định true (1) và false (=0 hoặc một xâu
rỗng)
Hằng số PHP_VERSION chỉ định phiên bản của
bộ phân tích PHP mà bạn đang dùng hiện tại.
HằngPHP_OS chỉ định hệ điều hành server mà
trình phân tích PHP đang chạy.
echo (PHP_OS);
// in ra màn hình"Linux" (ví dụ)_FILE_and_
LINE_ trả về tên của đoạn script (đoạn mã
nhúng) đang được phân tích tại dòng hiện thời
trong đoạn mã script.
PHP còn cung cấp một số hằng để thông báo
lỗi như E_ERROR, E_WARNING, E_PARSE và
E_NOTICE.
Ngoài ra, PHP còn cung cấp một số biến cung
cấp thông tin về môi trường PHP đang sử
dụng.
Để xem các thông tin này,bạn có thể dùng
hàm phpinfo() như sau:
<HTML>
<!-- phpinfo.php-->
<BODY>
<?php
phpinfo();
?>
</BODY>
</HTML>
ĐỔI KIỂU DỮ LIỆU
Như chúng ta đã biết, tất cả các biến PHP đều
có kiểu dữ liệu riêng.
Kiểu dữ liệu của biến sẽ được tự động xác
định bởi giá trị đặt vào biến
$a=1 // $a là kiểu integer
$a=1.2 // Bây giờ, nó là kiểu double
$a="1" // Và bây giờ nó là kiểu stringa)
Chuyển kiểu chuỗi và lừa kiểu dữ liệu
Nếu bạn làm các thao tác tính toán số trên
một chuỗi, PHP sẽ tính toán chuỗi như là một
số.
Điều này được biết đến với cái tên gọi là
"chuyển kiểu chuối (String conversion), mặc dù
giá trị chuỗi của nó có thể không cần phải thay
đổi.
Trong đoạn ví dụ sau, biến $str được xác định
là một chuỗi:
$str="756300 không có";
Nếu chúng ta cố cộng thêm một giá trị nguyên
là 3 vào biến $str, biến $str sẽ tự động tính với
số nguyên 756300:
$x=4+$str;//$x =756304
Nhưng bản thân giá trị của biến $str không
thay đổi
echo ($str); // In ra màn hình chuỗi "756300
không có"
Chuyển kiểu chuỗi phải tuân theo 2 nguyên tắc
sau:
- Chỉ những chuỗi bắt đầ là một xâu các chữ
số. Nếu chuỗi bắt đầu bằng một giá trị số hợp
lệ, chuỗi này sẽ được xác định như giá trị của
nó, trong trường hợp khác, nó sẽ trả về 0.
VD: chuỗi"35 tuổi" sẽ được ước lượng là 35,
nhưng chuỗi "tuổi 35" sẽ chỉ xác định giá trị 0.
- Một chuỗi sẽ chỉ được xác định như là một
giá trị kiểu double nếu giá trị kiểu double được
miêu tả bao gồm toàn bộ chuỗi. Chuỗi "3.4",
"-4.2" sẽ được ước lượng như giá trị thực 3.4
và -4.2.Nếu một ký tự không phải là ký tự kiểu
số thực được đưa vào chuỗi, giá trị của chuỗi
đó sẽ được ước lượng như là một số nguyên.
Chuỗi "3.4 dollar" sẽ thành số nguyên 3.
Trong việc cộng với chuỗi chuyển kiểu, PHP sẽ
thực hiện "lừa kiểu" giữa 2 kiểu số. Nếu bạn
thực hiện một phép toán số học giữa kiểu
thực và kiểu nguyên, giá trị sẽ là số thực
$a=1 //$ a là một số nguyên
$b= 1.0 //$b là số thực
$c=$a+$b //$c là kiểu số thực ,
= 2.0$d = $c+"6th" //$d là kiểu số thực= 8.0
Ép kiểu dữ liệu
Ép kiểu dữ liệu cho phép bạn thay đổi kiểu dữ
liệu của biến
$a=11.2// $a là kiểu thực
$a=(int)$a// Bây giờ, $ a là kiểu nguyên, giá trị
= 11$a= (double)$a// Bây giờ $a lại trở về kiểu
thực
= 11.0$b= (string)$a// $b là giá trị kiểu chuỗi
="11"Ngoài ra, chúng ta còn được phép ép
kiểu (array) và (object)(integer) tương đương
với (int); (fload) và (real) tương đương với
(double)
Một số hàm tiện ích khác
PHP có một số hàm hỗ trợ làm việc với các
biến- Hàm gettype($ten_bien) xác định kiểu
của biến. Nó sẽ trả về một trong các giá trị:
"integer","double", "string", "array","object",
"class", "unknown type"
(Chúng ta sẽ tìm hiểu kỹ hơn vể mảng (array)
và kiểu đối tượng (object) ở các bài sau.
Ví dụ:
echo(gettype($name));
- Hàm settype($ten_bien,"kieu_du_lieu") sẽ đặt
kiểu dữ liệu cho biến $ten_bien.
Kiểu dữ liệu được viết dưới dạng một chuỗi,
và có thể có một trong các kiểu sau:
"integer", "double", "string","array", "object".
Nếu kiểu dữ liệu không được đặt, giá trị false
sẽ được trả về, còn nếu thành công, nó sẽ trả
về giá trị true.
VD:
$a=7.5; //$a là kiểu thựcsettype($a,"integer");
// bây giờ nó là một số nguyên có giá trị 7-
Hàm isset($ten_bien) được sử dụng để xác
định xem biến $ten_bien đã đặt một giá trị nào
đó hay chưa. Nếu biến đó đã có giá trị,hàm trả
về true.Trong truờng hợp ngược lại, hàm trả
về giá trị false;
- Hàm unset($ten_bien) được sử dụng để huỷ
bỏ biến $ten_bien, giải phóng bộ nhớ chiếm
dụng của biến đó.
CÂU LỆNH IF
Trong cuộc sống, có nhiều việc ta chỉ làm khi
thoả mãn một số điều kiện cụ thể.
Ví dụ:
Một ông bố hứa với con trai:
_Nếu con đỗ đại học thì bố sẽ thưởng cho con
một chiếc xe.
Chừng nào mà điều kiện con đỗ đại học thì
ông bố mới lo tới chuyện thưởng cho con một
chiếc xe.
Tới một ngày kia, ông bố lại nói với cậu con
trai.
_Nếu con đỗ đại học thì bố sẽ thưởng cho con
một chiếc xe, nếu không thì đi nghĩa vụ quân
sự.
Ở câu nói thứ nhất của ông bố, không nói rõ
thi rớt thì có chuyện gì, còn ở câu thứ ai có
nói rõ.
Trong lập trình tuy hình thức từng ngôn ngữ
hơi khác nhau nhưng cũng có hai dạng cơ bản
của câu điều kiện, ta chỉ bàn tới câu lệnh này
trong phạm vi PHP
if-then
if( <điều kiện>)
{
câu lệnh 1;
câu lệnh 2;
................
}
Nếu chỉ có một câu lệnh sau vế điều kiện thì ta
không cần cặp dấu ngoặc {}, nhưng luôn có có
hiện diện của cặp dấu {} là một thói quan tốt,
giúp tránh nhầm lẫn!
if-then-else
if(<điều kiện>)
{
//các câu lệnh sẽ thực hiện nếu điều kiện thoả
mản
câu lệnh 1;
câu lệnh 2;
................
}else{
//các câu lệnh thực hiện khi điều kiện không
thoả mản
câu lệnh 1;
câu lệnh 2;
................
}
Cách xác định đúng hay sai
Ví dụ ta có đoạn script:
$a=3;
$b=5;
if($a<$b)
{
echo"Đúng";
}else{
echo"Sai";
}
Trường hợp này thì kết quả sẽ là Đúng
Nhưng hãy xét thêm trường hợp:
$a=3;
$b=5;
if($a<$b==false)
{
alert("Đúng");
}else{
alert("Sai");
}
Thì kết quả sẽ là một hộp thông báo với nội
dung là Sai??????
Vì:bản thân biểu thứ ca<b với a=3 và b=5
mang giá trị đúng(true) mà đúng(true)==sai
(flase) thì tất nhiên là sai.
Sữ dụng toán tử or (||) ,and(&&)
Xét đoạn code, nếu với một số a có chia hết
cho cả 6 và 4 không, nếu có thì kết quả sẽ là
có, ngược lại thì không.
<?php
$a=12;
if(($a%4==0)&&($a%6==0))
{
echo"Có";
}else{
echo"không"
}
?>
Kết quả dĩ nhiên sẽ là có
Chú ý:Tự bản thân toán tử<=hay>=đã chứa
một toán tử hoặc.
CÂU LỆNH if -else
Câu lệnh if-else dùng cho trường hợp chỉ có
một điều kiện cần được xem xét tới, nhưng
trường hợp có nhiều điều kiện cũng như khả
năng sảy ra thì sao!?!?
Xét ví dụ:
Nếu điểm Trung Bình năm của con từ 9 trở lên
thì quà của con sẽ là một chiếc Novol, từ 7 tới
dưới 9 là một chiếc Martin, còn mà dưới 7 là
có chuyện đó!.
Câu nói đó trong PHP sẽ là:(giả sử điểm là 8 đi
ha)
<?php
$diem=8;
if($diem>=9)
{
echo"Được một chiếc Novol";
}
elseif($diem>=7)
{
echo"Được một chiếc Martin";
}else{
echo"Tiêu rồi";
}
?>Theo như giả sử thì Được một chiếc Martin
rồi ha!Chú ý, việc dùng elseif hoàn toàn khác
với dùng nhiêu câu lệnh if như trong ví dụ sau
đây:
<?php
diem=10;
if($diem>=9)
{
echo"Được một chiếc Novol";
}
if($diem>=7)
{
echo"Được một chiếc Martin";
}else{
echo"Tiêu rồi";
}
?>
Lần này chúng ta tự tin hơn, cứ mạnh dạng
cho diem=10 . Cùng với sự tự tin đó, kết quả
sẽ là:
Được một chiếc Novol và cả Được một chiếc
Martin.
Sướng nhĩ, nhưng thế là do lỗi lập trình, một
ngày nào đó khi bạn trở thành một lão làng lập
trình, bạn tự viết cho mình một website buôn
bán, và lầm lẫn như thế này sẽ làm bạn.......
Thật ra nếu muốn viết đoạn trên bằng cách
dùng nhiều câ lệnh if nhưng theo đúng cách ta
nghĩ thì phải:
<?
$diem=10;
if($diem>=9)
{
echo"Được một chiếc Novol";
}
if(($diem>=7)&&($diem<9))
{
echo"Được một chiếc Martin";
}
if($diem<7)
{
echo"Tiêu rồi";
}
?>
Nhưng quả thật sẽ rất khó khăn nếu có nhiều
mức thưởng nhỉ!
Sau đây mình sẽ giới thiệu một cách đặt biến
đặc biệt :
Các bạn xem VD sau
<?
$math=10+10;
if($math==20)$rs= "Đúng";
else
$rs= "Sai";
?>
Bây giờ tớ thay đoạn mã trên bằng đọan dưới
đây, các bạn xem sự khác biệt nhé
<?
$math=10+10;
$rs=$math==20?"Đúng":"Sai" ;
?>
Chúng ta thấy lệnh điều kiện if và else được
thay thế bằng ? và:
Như vậy sẽ rất tiện cho chúng ta khi lập trình
và nhìn cũng thẩm mỹ hơn.
PHP VÒNG LẬP
Bạn muốn bày tỏ tình yêu với người ấy, và
muốn cho người ấy biết bạn yêu người ấy đến
nức nào, và ý tưởng của bạn sẽ là một trang
web với hàng ngàn dòng chữ :
I LOVE YOU
Có hai cách để làm chuyện này:
_Đầu tiên bạn hãy viết ra một câu:I LOVE YOU,
sau đó copy & past bằng tổ hợp phím Ctrl + V
cho nó lẹ, được cở 5,6 dòng, tô đen hết lại
past tiếp, được cỡ một ganf, tô den rồi past
cho nó nhiều, chả mấy chốc cũng sẽ được
một ngàn dòng.
_Cách thứ hai là làm mọi thứ với khoảng 5
dòng với javascript, quăng luôn đoạn code để
mọi người xem rồi ta cùng đi vào tìm hiểu sau:
Vòng lặp While
<?php
while($i<1001)
{
echo"I LOVE YOU
";
$i=$i+1;
}
?>
Ta hãy bắt đầu với dòng while($i<1000), chữ
while trong tiếng Anh có nghĩa là trong khi,
còn trong trường hợp này có nghĩa là: khi điều
kiện còn đúng thì làm đi, làm lại cái trong cặp
dấu ngoặc móc, với câu lệnh trên của chúng ta
thì điều kiện là $i<1001.
Dòng
echo "I LOVE YOU
";
in ra sòng mã HTML mà ta cần.
Còn dòng
$i=$i+1;
cũng không kém gì quan trọng, nếu tiếu dòng
này, biến $i sẽ lưu giữ mãi một giá trị và sẽ
chẳn bao giờ lớn hơn 1001, vòng lặp sẽ chạy
mại không dừng! trong mọi trường hợp, điều
này không hề có lợi cho bất cứ ai, nhà sản
xuất hay người sử dụng!
Cú pháp của vòng lặp While:
while(<điều kiện>)
{
câu lệnh 1;
câu lệnh 2;
.................
}
Vòng lặp Do...... While
VÒng lặp Do....While
gần giống như vòng lặp While, chỉ có điều là
các câu lệnh sẽ được là mít nhất một lần rồi
mới bắt đầu kiểm tra điều kiện ở các lần sau.
Cú pháp:
do
{
câu lệnh 1;
câu lệnh 2;
.................
}
while(<điều kiện>);
Vòng lặp For
Bạn hãy xem ví dụ với cùng chức năng in ra
1000 cấu I LOVE YOU như đoạn code trên
nhưng với vòng lặp for:
for($i=0;
$i<1001;
$i++)
{
echo"I LOVE YOU
";
}
or(phần khởi tạo;
phần điều kiện;
tăng hay giảm giá trị)
Phần khởi tạo: bạn khái báo biến đếm và gán
giá trị ban đầu cho nó luôn.
Phần điều kiện: bạn đặt ra điều kiện.Phần tăng/
giảm gái trị: đây là điềm khác biệt nhất với
vòng lặp while, trong khi vòng lặp while thì cần
một câu lệnh để tăng/giảm giá trị cho biến
đếm, thì bản chất vòng lặp for đã có sẵn điều
này.
Mình trong ví dụ trên, điều kiện mình đã đạt
theo kiểu toán tự rút gọn ( ++ có nghĩa là tự
tăng lên 1, bạn nên xem lại bài toán tử)
Chú ý: mọi con đường đều về La Mã, ở các ví
dụ trên mình chỉ cho tăng biến đếm lên, trong
khi vẫn có thể làm như thế với các giảm biến
đếm xuống, chỉ cần linh hoạt một chút:
<?php
for($i=1001;
$i>1;
$i--)
{
echo"I LOVE YOU
";
}
?>
hãy linh hoạt và vận dụng thích hợp cho mục
đích của bạn, đó là việc mà chỉ con người mới
làm được!
MẢNG TRONG PHP
Nếu bạn đã từng học qua bất cứ ngôn ngữ lập
trình nào, thì chắc hẵn sẽ không xa lạ gì với
mảng!
Còn nếu bạn là người mới vào nghề như mình,
thì đây là một khái niệm mới, cũng khá khó
đấy!
Mảng gồm có hai loại, mảng một chiều và
mảng nhiều chiều, trong mãng nhiều chiều
thông dụng nhất ta dùng tới mảng hai chiều, vì
thế ta chỉ nói về mảng một chiều và mảng hai
chiều.
Mảng một chiều là dãy hữu hạn các phần tử
cùng kiểu. Mảng được đặt tên và mỗi phần tử
có một chỉ số.
Đề mô tả mảng một chiều cần xác định kiểu
của phần tử và cách đánh số các phần tử của
nó.Nhớ lại ví dụ về biến mà mình môtả với bao
thuốc lá ở những bài nói về biến, bây ta ví dụ
trường hợp ta có 10 bao thuốc là và bạn quyết
định đặt tên cho chúng là
bao1,bao2,....,bao8,bao9,bao10, với mục đích
là mỗi bao chứa một cái gì đó, tới khi nào cần
cái gì thì lấy ra mà dùng.
Còn mảng, mảng chính là cả cây thuốc lá!,
đơn giản chỉ là một cây thuốc là, bên trong có
những bao thuốc lá!giải thích cho dài dòng,
mảng 1 chiều đơn thuần là một tập hợp các
biến, và các biến có thứ tự thay vì tên!tạo một
mảng:
Ví dụ tạo một mảng đơn giản
<?php
$mang=array("a","b","c");
echo$mang[0]
?>
Thử in ra phần tử thứ nhất của mảng(kết quả
sẽ là a)Đây cũng là một các để khia báo mảng,
các phần tử của mảng được đặt trong dấu
nháy kép và chúng được ngăn cách nhau giữa
dấu (,)
Còn đây là cách thứ hai, khá dễ nhìn!
Bạn hãy khai báo mảng, không cần khai báo
nội dung bên trong:
$mang=array();
sau đó, khai báo từng phần tử bằng cách này:
$mang[0]="a";
$mang[1]="b";
$mang[2]="c";
$mang[3]="d";
Bạn chú ý là trong PHP phần tử đầu tiên của
mảng có thứ tự là 0.
____________
Duyệt qua mảng với vòng lặp.
Với một mảng như thế này, ý tưởng là chạy
một vòng lặp từ đầu mảng tới cuối mảng lấy ra
giá trị.
Để tìm được độ dài của mảng php cung cấp
cho cúng ta một hàm, đó là hàm count, php
cung cấp rất nhiều các hàm để làm việc với
mảng, cụ thể ta sẽ nói tới sau,bây giờ chỉ
quan tâm với cái hàm count
Hàm count() nhận vào một tham số chính là
mảng. Ví dụ tương ứng với mảng $mang trên
ta có:
<?php
$mang=array();
$mang[0]="a";
$mang[1]="b";
$mang[2]="c";
$mang[3]="d";
echocount($mang);
?>
kết quả in ra sẽ là 4 đi tiếp vào cái vòng lặp, ở
đây mình dùng vòng lặp for
<?php
$mang=array();
$mang[0]="a";
$mang[1]="b";
$mang[2]="c";
$mang[3]="d";
for($i=0;$i<count($mang);
$i++)
{
echo$mang[$i]."
";
}
?>
PHP MẢNG KẾT HỌP
Mảng kết hợp đơn giản là loại mảng nhưng:
Chúng ta đi xem ví dụ:
<?php
$mang=array("a","b","c");
echo$mang[0]
?>
Đây là mảng cơ bản của chúng ta,và khi lấy
giá trị của một phần tử trong mảng ra, ta tham
chiếu tới nó với khoá là giá trị thứ tự của nó.
Điểm khác biệt của mảng kết hợp là cái khoá.
Ta có thể khai báo như sau:
<?php
$mang=array
("name"=>"Nguyên","website"=>"wapcry.net");
echo$mang["name"]
?>
kết quả sẽ là :Nguyên ta cũng có thể khai báo
với cách khác như sau:
$mang=array();
$mang["name"]="Nguyên";
$mang["website"]="wapcry.net";
Cách duyệt qua mạng này cũng hơi khác với
mảng một chiều. Để duyệt mảng ta kết hợp
vòng lặp while và lis()=each()
Ví dụ để lấy cả khoá lẫn giá trị ta làm như sau:
<?php
$mang=array
("name"=>"Nguyên","website"=>"wapcry.net");
while(list($key,$value)=each($mang))
{
echo"Khoá: ".$key." giá trị: ".
$value."
";
}
?>
Còn ví dụ chỉ muốn lấy ra giá trị thì chỉ khác ở
mỗi dòng vòng lặp
while:while(list(,$value)=each($mang))
bỏ đi biến $key, nhưng vẫn để trước biến $
value dấu ( , )
Giải thích nguyên lý làm việc như sau:
Mỗi lần vòng lặp chạy each()sẽ lấy ra lần lượt
một cặp khoá và giá trị tương ứng.
2 giá trị đó sẽ được gán lần lượt cho biến ở vị
trí thứ nhất và thứ hai đạt trong list()
Vòng lặp dừng lại khi duyệt qua hết mảng.
MẢNG DỰNG SẲN
Có khá nhiều mảng dựng sẵn trong các ngôn
ngữ lập trình, php cũng như vậy, và những
mảng này rất hữu ít trong khi làm việc.
Ở đây mình chạy đoạn mã để truyxau6t1 các
kháo và gái trị của mảng $_SERVER một mảng
khá hữu ích:
<?php
$mang=$_SERVER;
while(list($key,$value)=each($mang))
{
echo"Khoá: ".$key." giá trị: ".
$value."
";
}
?>
Đoạn mã này nằm trong filen1.php đặt trong
thư mục new, host hệ điều hành Window, thư
mục root nằm ở
C:/Program Files/VertrigoServ/www.
Kết quả là đây:
Mã nguồn:[Chọn]
Khoá: HTTP_HOST giá trị:
127.0.0.1:8080
Khoá: HTTP_USER_AGENT giá trị: Mozilla/5.0
(Windows; U; Windows NT 5.1; en-US;
rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1
Khoá: HTTP_ACCEPT giá trị: text/
html,application/xhtml+xml,application/
xml;q=0.9,*/*;q=0.8
Khoá: HTTP_ACCEPT_LANGUAGE giá trị: en-
us,en;q=0.5
Khoá: HTTP_ACCEPT_ENCODING giá trị:
gzip,deflate
Khoá: HTTP_ACCEPT_CHARSET giá trị:
ISO-8859-1,utf-8;q=0.7,*;q=0.7
Khoá: HTTP_KEEP_ALIVE giá trị: 300
Khoá: HTTP_CONNECTION giá trị: keep-alive
Khoá: HTTP_COOKIE giá trị: _
csuid=49cdeeba4344116b; SMFCookie956=a%
3A4%3A%7Bi%3A0%3Bs%3A1%3A%221
%22%3Bi%3A1%3Bs%3A40%3A%
228f96f02f0ffe510b7f35f7a8a78faf0b39a2b5e5
%22%3Bi%3A2%3Bi%3A1435289626%3Bi%
3A3%3Bi%3A0%3B%7D; username=Nguy%
EAn;SMFCookie891=a%3A4%3A%7Bi%3A0%
3Bs%3A1%3A%223
%22%3Bi%3A1%3Bs%3A40%3A%
220a8eaaa533fa14a9e62e4df7da7094e41769f28c
%22%3Bi%3A2%3Bi%3A1437102838%3Bi%
3A3%3Bi%3A0%3B%7D
Khoá: HTTP_CACHE_CONTROL giá trị: max-
age=0
Khoá: PATH giá trị: C:\WINDOWS\system32;C:
\WINDOWS;C:\WINDOWS\System32\Wbem
Khoá: SystemRoot giá trị: C:\WINDOWS
Khoá: COMSPEC giá trị: C:\WINDOWS
\system32\cmd.exe
Khoá: PATHEXT giá
trị:.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
Khoá: WINDIR giá trị: C:\WINDOWS
Khoá: SERVER_SIGNATURE giá trị:
Apache/2.0.63 (Win32) PHP/5.2.6 Server at
127.0.0.1Port 8080
Khoá: SERVER_SOFTWARE giá trị:
Apache/2.0.63 (Win32) PHP/5.2.6
Khoá: SERVER_NAME giá trị: 127.0.0.1
Khoá: SERVER_ADDR giá trị: 127.0.0.1
Khoá: SERVER_PORT giá trị: 8080
Khoá: REMOTE_ADDR giá trị: 127.0.0.1
Khoá: DOCUMENT_ROOT giá trị: C:/Program
Files/VertrigoServ/www
Khoá: SERVER_ADMIN giá trị: root@localhost
Khoá: SCRIPT_FILENAME giá trị: C:/Program
Files/VertrigoServ/www/new/n1.php
Khoá: REMOTE_PORT giá trị: 3450
Khoá: GATEWAY_INTERFACE giá trị:CGI/1.1
Khoá: SERVER_PROTOCOL giá trị: HTTP/1.1
Khoá: REQUEST_METHOD giá trị: GET
Khoá: QUERY_STRING giá trị:
Khoá: REQUEST_URI giá trị: /new/n1.php
Khoá: SCRIPT_NAME giá trị: /new/n1.php
Khoá: PHP_SELF giá trị: /new/n1.php
Khoá: REQUEST_TIME giá trị: 1248597994
Khoá: argv giá trị: Array
Khoá: argc giá trị: 0
____________
Cái này ví dụ, để tham chiếu tới PHP_SELF thì
ta làm theo cách của mãng kết hợp bình
thường $_SERVER['PHP_SELF']
Một số phần tử mà mình thấy rất quan trọng:
PHP_SELF: trả về đường dẫn tới file đang
chạy, tính từ thư mục gốc
REQUEST_URI: tương tự như cái PHP_SELF,
nhưng nếu đường dẫn có chứa tham số ( ?
aaa=xxx...) thì nó trả về luôn mấy cái tham số
đó.
SCRIPT_FILENAME: trả về đường dẫn đầy đủ
DOCUMENT_ROOT: trả về đường dẫn tới thư
mục www càu host
***
Chú ý: đường dẫn ở đây không phải là đường
dẫn với dạng tên miền nha mà là đường dẫn
kiểu như các thư mục trong máy.
TỰ THIẾT LẬP HÀM
Vừa qua, ở bài nói về mảng chúng ta thấy có
sự xuất hiện của một hàm có tên là count(hàm
này trả về độ dài của mảng đó).
Trong PHP có rất nhiều những hàm dựng sẵn
như thế, giúp ta giải quyết được nhiều tình
huống trong lập trình web dễ dàng hơn.bên
cạnh những hàm có sẵn đó, ta cũng có thể tự
soạn thảo các hàm cho riêng mình.
Mục đích của việc tự soạn thảo các hàm là
cho đỡ mõi tay, dễ hiệu chỉnh.
Các bạn hãy tưỡng tượng ta có một hành
động A, hành động A là tập hợp bao gồm rất
nhiều hành động khác.
Và trên cả trang web, ta biết rằng sẽ có nhiều
hơn 3 lần ta thực hiện lại hành động A đó, vệc
đưa hành động đó trỡ thành một hàm sẽ là
một bước đi khôn ngoan và rất "lập trình
viên".
________________________
Xét ví dụ bạn đơn giãn muốn in ra một nghìn
câu:
Anh yêu em.
Mọi chuyện sẽ đơn giản hoá với vòng lặp (các
bạn vẫn còn nhớ chứ).
for($i=0;$i<1001;$i++)
{
echo"Anh yêu em
";
}
Nhưng mà sẽ khá dài cho trường hợp: 100 cấu
Anh yêu em., tiếp theo lại là 1000 câu Em có
yêu anh không!?, lại 1000 câu.......
Để khai báo hàm - function trong php ta có cú
pháp như sau:
Mã nguồn:[Chọn]
function <tên hàm>()
{
//Nội dung các câu lệnh sẽ nàm trong hai dấu
ngoặc nhọn này
}
Với ví dụ trên, mình sẽ viết một hàm có công
dụng in ra 1000 câu Anh yêu em.như sau:
functionsayiloveyou()
{
for($i=0;$i<1001;$i++)
{
echo"Anh yêu em
";
}
}
Mình đã đặt tên cho hàm này là hàm
sayiloveyou và bất cứ khi nào, ở bất cứ đâu
trên trang web, mình muốn in ra 1000 câu Anh
yêu em.mình chỉ việc gọi hàm này (gọi nói
nghe cho nó giống lập trình viên, chứ có nghĩa
là viết nó ra thôi!)
<?php
functionsayiloveyou()
{
for($i=0;$i<1001;$i++)
{
echo"Anh yêu em
";
}
}
sayiloveyou();
echo"Đẵ in ra 100 câu đầu tiên, không biết em
có hiểu rõ tình cảm của anh chư, in tiếp<br /
>";
sayiloveyou();
?>
Hàmsayiloveyou()của chúng ta vừa mới viết, lại
không giống như cái hàm count()đã nêu ra từ
đầu bài ở chỗ hàm count nhận vào một tham
số bên trong cặp dấu ngoặc, những bài tiếp
theo của chúng ta sẽ nói về mấy cái mà mình
gọi là "tham số" này.
À xin nói thêm, nếu có ai định dùng tin học để
chinh phục nữa kia, thì các trên của mình còn
dỡ lắm, mình nghĩ cách tốt nhất là học viết
phần mềm, hay virus gì đó, chứ web thì hiệu
quả không bàng.
HÀM VÀ THAM SỐ
Vấn đề để nãy sinh ra mấy cái tham số này là,
có uổn quá không khi mỗi lần ghi là có 1000
câu giống nhau, 1000 lần thì nhiều thiệt,
nhưng mà lại không có tác dụng đả kích mục
tiêu, phải là
1000 câu Anh yêu em.
rồi 1000 câu Em là mặt trời của anh.
rồi 1000 câu Anh phải đeo kính râm khi em hé
môi cười.
thì may ra nàng còn say sẫm mặt mài.
Ta nhận thấy ngây bất cập, hàm được đặt ra
để rút ngắn công việc, nhưng nếu cứ mỗi câu
như thế mà viết một hàm thì nó chỉ làm mọi
chuyện rắc rối thêm.
Và ý tưởng dẫn tới....
xem ví dụ:
functionsayiloveyou()
{
for($i=0;$i<1001;$i++)
{
echo"Anh yêu em
";
}
}
Đó là đoạn code củ, sửa nó lại một chút, các
bạn chú ý tới những điểm khác biệt nhé:
functionsayiloveyou($loinoi)
{
for($i=0;$i<1001;$i++)
{
echo$loinoi;
}
}
Mình đã thêm vào ở giữa 2 dấu ngoặc () một
biến $loinoi, và ở dòng echo thay vì nội dung là
câu nói thì nội dung ở đấy lại là biến $loinoi.
Để gọi hàm lúc này và in ra 1000 câu Anh yêu
em.ta gọi như sau:
<?php
functionsayiloveyou($loinoi)
{
for($i=0;$i<1001;$i++)
{
echo$loinoi;
}
}
sayiloveyou("Anh yêu em.
");
?>
giải thích cho việc này chính là khi gọi hàm
sayiloveyou("Anh yêu em.
")
thì phần nội dung"Anh yêu em.
"được
gán cho biến $loinoi khá là đơn giản [phải
không mọi người.Ta cũng có thể viết một hàm
với nhiều tham số nhận vào, ví dụ như ngoài
việc tuỳ biến sẽ in ra cái chi, ta có thể tuỳ
biếm thêm số lầm in ra.
functionsayiloveyou($loinoi,$solan)
{
for($i=0;$i<$solan;$i++)
{
echo$loinoi;
}
}
Khi gọi hàm này, ta lần lượt cho vào hai giá trị
tương ứng theo đúng thứ tự:
sayiloveyou("Anh yêu em.
",999);
Cho tới lúc này thì để chinh phục cô ấy với
cấu trúc hàm, mọi việc chỉ còn tuỳ thuộc vào ý
tưởng của bạn nữa thôi nói đùa thế cho vui,
chứ thật ra có một câu nói như thế này: Rào
cản hiện thời không phải là công nghệ mà là ý
tưởng.
Những kiến thức trên rất là cơ bản, nhưng lại
nắm giữ những sức mạnh rất lớn.
BIẾN TOÀN CỤC VÀ BIẾN CỤC BỘ
Khái niệm biến toàn cục và biến cục bộ chắc
các bạn cũng đã từng nghe qua, trong rất
nhiều ngôn ngữ khác nhau. trong PHP cũng
không loại trừ.
Khác biệt lớn nhất của biến toàn cục và biến
cục bộ có thể thấy ngay ở các ví dụ về fuction.
ta xét đoạn mã:bạn hãy chạy thử đoạn mã, chỉ
có1 từ "Chữ viết" được in ra.
<?php
functionvietchu()
{
$chu="Chữ viết";
echo$chu;
}
vietchu();
echo$chu;
?>
Hàm vietchu() thực hiện 2 động tác: 1 gán
chuỗi"Chữ viết"cho biến $chu, 2 in ra biến $
chu
Vậy tại sao khi với dòng lệnh tiếp theo (echo$
chu; ) lại không hề cho ra bất cứ kết quả nào?
Câu trả lời mà cho tới lúc này chắc các bạn ai
cũng đoán được:
$chu chỉ là biến cục bộ, chỉ có hiệu lực bên
trong hàm.
Việc người ta chế ra 2 loại biến này cũng có lý
do, ví dụ như khỏi lo bị trùng các biến nếu
trong cùng một file mà có nhiều hàm. Nhắm
cái nào cần giữ giá trị lại thì giữ, đỡ tốn cấu
hình.ở đây, nếu bạn muốn xác định biến nào
sẽ là biến toàn cục thì hãy khai báo các biến
đó sau từ khoá global
functionvietchu()
{
global$chu;
$chu="Chữ viết";
echo$chu;
}
và thêm một lưu ý, biến đã được gán giá trị
bên ngoài, đưa vào trong hàm cũng không có
giá trị (nói chung nếu mà không khai báo biến
toàn cục thì "nội bất xuất, ngoại bất nhập".
Ví dụ:
<?php
$viet="Việt nam";
functionvietchu()
{
$chu="Chữ viết ".$viet;
echo$chu;
}
vietchu();
?>
hàm này chỉ in ra hàm chử viết, để có thể in ra
nguyên câu :
Chữ viết Việt Nam
như ta mong muốn thì hãy khai báo biến toàn
cục cho
$viet="Việt nam";
functionvietchu()
{
global$viet;
$chu="Chữ viết ".$viet;
echo$chu;
}
Đây chỉ là một ví dụ đơn giản, trong thực tế,
vấn đề này được dùng tới rất nhiều, trong thời
gian và va chạm, bạn sẽ thấy cái gì càng cơ
bản lại càng quan trọng.
PHP FUNCTION RETURN
lại bàn tới hàm count ở bài trước ta nhận thấy
thêm một điều rằng hàm count trả về một giá
trị số có thể đem ra tính toán luôn.
for($i=0;$i<count($mang);$i++)
{
echo$mang[$i]."
";
}
Hàm count không như các hàm mà ta đã tự
viết từ trước đến giờ,nó chả đưa ra màn hình
cái gì cả,mà trả về cho bản thân nó một giá trị.
(Ở đây nếu bạn nào đã học qua pascal chắc
chắn sẽ hiểu rất rỏ sự khác biệt giữa hàm và
thủ tục).Ta cũng có thể làm được điều đó.Ví
dụ, mình sẽ viết một hàm tính tổng hai số.
hàm này nhận vào 2 tham số, tính tổng của
chúng và trả về giá trị cho chính nó.
functiontonghaiso($a,$b)
{
$c=$a+$b;
return$c;
}
Dòng :return$c; là dòng quan trọng nhất bài
này mà mình muốn nói tới, từ khoá return sẽ
gán một giá trị nào đó cho hàm.
Hãy xét ví dụ tính toán này, các bạn sẽ hiểu rõ
hơn!
<?php
functiontonghaiso($a,$b)
{
$c=$a+$b;
return$c;
}
echotonghaiso(3,5);
echo"
";
echotonghaiso(3,tonghaiso(3,5));
?>
Kết quả sẽ là:
8
17
11
GIAO TIẾP VỚI NGƯỜI DÙNG
GIAO TIẾP VỚI NGƯỜI DÙNG QUA PHƯƠNG
THỨC GET
Giao tiếp ở đây đơn giản là nhận thông tin từ
người dùng và xử lý chúng.
Nhận thông tin từ người dùng có2 cách chính:
1 Tạo những cái ô có thể điền thông tin vào,
nút nhấn để gửi.
2 (nghe hơi lạ nhưng cũng là 1 cách) Bạn có 1
danh sách, người dùng muốn xem cụ thể cái gì
thì click vào. Hành động click vào thể hiện lựa
chọn của người dùng, cũng là một hình thức
lựa chọn dữ liệu từ người dùng. Bài viết sẽ đề
cập tới phương thức này.
Xử lý ở đây có rất nhiều ví dụ:
1 Bạn vào một diễn đàn - đăng nhập - lúc này
mật khẩu bạn nhập (dữ liệu đầu vào) vào sẽ
được so sánh với mật của bạn lúc đăng ký
xem có trùng không - không trùng thì báo sai
mật khẩu- đây cũng là 1 khâu xử lý.
2 Bạn vào một blog, forum gửi bài, nội dung
bài viết, tiêu đề (dữ liệu đầu vào), bài viết được
lưu ở đâu đó - đây cũng gọi là xử lý.
3 Cụ thể hơn, bạn viết 1 chương trình cho
người dùng nhập vào 2 con số, tính tổng 2 số.
Code hoàn thiện ở cuối bài, tiếp theo đây là
phần hướng dẫn.Tạo một biến $users là một
mảng, chứa vài mảng nhỏ khác:Để hiểu thêm
về mảng ở đây, mời các bạn đọc lại bài php
mảng kết hợp.
Mã nguồn:[Chọn]
$users =array(
array('name' => 'Tuấn', 'gender'=> 'Nam',
'city' => 'Hồ Chí Minh'),
array('name' => 'Dung', 'gender'=> 'Nữ', 'city'
=> 'Hà Nội'),
array('name' => 'Trang', 'gender'=> 'Nữ', 'city'
=> 'Huế'),);
Ví dụ, ta muốn tìm ra thành phố của bạn tên
"Dung" (Dung ở vị trí thứ 2 trong mãng $users
nên có số thứ tự là 1)thì ta dùng code sau:
Mã nguồn:[Chọn]
echo $user[1]['city'];
Tiếp đến, để lựa chọn thông tin của ai sẽ được
hiễn thị thì việc ta cần làm là giúp người dùng
lựa chọn và nhận kết quả lựa chọn từ người
dùng.
Để bắt đầu, bạn hãy tạo 1 file tên là php-
get.php với nội dung như sau:
Mã nguồn:[Chọn]
<?php
echo$_GET['id'];
?>
Save file này lại và duyệt nó trên trình duyệt, ví
dụ :
localhost/php-get.php?id=1
chú ý phần sau dấu"?"Bạn sẽ thấy nội dung
trang là số 1, tương tự, hay thay đôi giá trị sau
dấu "=".
Giá trị sau dấu "=" sẽ là giá trị cuả biến mãng
$_GET['id'].
$_GET đơn thuần chỉ là một mảng kết hợp, và
các khóa là các tham số được gửi trên đường
dẫn (trong truờng hợp này là ID).
Bạn có thể gửi kèm nhiều tham số cùng một
lúc, ví dụ: hãy tạo một file mới với nội dung
như sau:
Mã nguồn:[Chọn]
<?php
echo$_GET['id']
echo$_GET['name'];
?>
Save file này lại và duyệt nó trên trình duyệt, ví
dụ :
localhost/php-get.php?id=1&]name=Trang/b]
Lúc này nội dung hiện ra sẽ là 1 Trang. Ta
dùng dấu "&" ghép các tham số lại với nhau để
truyền đi.
Hiện giờ các bạn đã nắm bắt được vấn đề. Để
người dùng có thể chọn tên của bạn muốn
hiễn thị thông tin cụ thể, ta in ra sẵn một danh
sách với link có các tham số id=0, 1, 2...
Ta dùng Vòng lặp để in ra danh sách:
Mã nguồn:[Chọn]
for($i=0;$i<count($users);$i++)
{
echo '<li><a>'.$
users[$i]['name'].'</a></li>';
}
Để in ra giá trị của khóa city cho một bạn, ta
dùng 1 code:
Mã nguồn:[Chọn]
echo $users[ $_GET['id'] ]['city'];
Ví dụ, khi ?id=1 thì đạon code trên sẽ được
hiễu đơn giản là:
Mã nguồn:[Chọn]
echo $users[1]['city'];
Ta cần lưu ý một vấn đề:
Chuyện gì sẽ sảy ra nếu một người dùng vì lí
do nào đó (tò mò - phá phác..) sửa lại đường
dẫn như thế này :
localhost/php-get.php?id=5 hoặc
localhost/php-get.php?id=abc
Rõ ràng trong mảng $users của chúng ta chỉ
có 3 phần tử, thay khóa bằng 5 hay abc đơn
giản chẳng cho ta một kết quả gì.
Điều này không hề dơn giản và trong một vài
trường hợp rất ư là nguy hiểm.
Ta hãy lấy một ví dụ chương trình tính giá trị
a*b (a x b) với a, b được nhập từ người dùng
qua phuơng thức GET.
Mã nguồn:[Chọn]
<?php
echo$_GET['a']*$_GET['b'];
?>
Để chạy chương trình tính toán, ta duyệt :
localhost//php-get.php?a=3&b=5
Kết quả nhận được sẽ là 15. Bỏ bớt tham số b
ra (localhost//php-get.php?a=3) kết quả bằng
0. Điều gì nguy hiểm trong trường hợp này?
Bạn hãy tưởng tựợng a là số lượng mặt hàng,
b là đơn giá và đây là trang dùng để bạn tính
tiền. Thật không hay để một ai đó mua hàng
trăm món đồ với giá 0 đồng.Để tránh việc này
sảy ra, ta luôn phải kiểm tra dữ liệu từ người
dùng! Và quả thật kiểm tra dữ liệu từ người
dùng là công việc quan trọng bật nhất trong
thiết kế web(cũng như bất kỳ phần mềm nào
khác).
Ở đây mình chỉ xin trình bày cách kiểm tra
xem a và b đã có giá trị hay chưa, chứ chưa
tính tới việc có đúng kiểu giá trịnh hay chưa
(trường hợp a,b được thay thế bằng chữ cái
thì sao?)
Ta dùng hàm isset() đề kiểm tra.isset() - đọc là
"is set" (tiếng anh ấy) - trà về đúng khi một
biến đã được khai báo, ngược lại sai. và code
kiểm tra của chúng ta như sau:
Mã nguồn:[Chọn]
Mã nguồn:[Chọn]
<?php
if(isset($_GET['a']) && isset($_GET['b']))
{
echo$_GET['a']*$_GET['b'];
}else{
echo'thieu du lieu dau vao';
}
?>
Lúc này nếu thử bỏ tham số hay hoặc b ra khỏi
đường dẫn thì ta sẽ nhận được cảnh báo
'thieu du lieu dau vao' thay vì số 0.
Đây chỉ là một ví dụ để các bạn thấy được
nguy cơ (thật ra khi làm trang bán hàng mà
tính toán như thế thì dỡ lắm) và thực chất
nguy cơ này rất lớn. Cụ thể nguy hiểm như thế
nào chúng ta sẽ cùng tiềm hiểu ở cuối loạt bài
về php và mysql. Còn về phần kiểm tra dự liệu
người dùng nhập vào,chúng ta sẽ tiếp tục ngay
sau bài nói về phương thức POST (GET và
POST là hai anh em, hiểu GET rồi thì POST
cũng dễ nuốt hơn phần nào)
Sau đây là full code, mời các bạn xem và ngâm
cứu.
Mã nguồn:[Chọn]
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<meta
content="width=620" />
<title>Ví dụ phương thức GET trong PHP</
title>
<head>
<body>
<table>
<tr>
<td>
<ul>
<?php
$users= array(
array
('name'=>'Tuấn','gender'=>'Nam','city'=>'Hồ
Chí Minh'),
array
('name'=>'Dung','gender'=>'Nữ','city'=>'Hà
Nội'),
array
('name'=>'Trang','gender'=>'Nữ','city'=>'Huế')
,);
for($i=0;$i<count($users);$i++)
{
echo'<li><a>'.$
users[$i]['name'].'</a></li>';
}
?>
</ul>
</td>
<td>
<?php
if(isset($_GET['id']) && isset($users[$_GET
['id']]))
{
echo"Tên:".$users[$_GET['id']]['name']."<br /
>Giới tính:".$users[$_GET['id']]['gender']
."
Thành phố:".$users[$_GET['id']]['city']
;
}
?>
</td>
</tr>
</table>
</body>
</html>
Bạn đang đọc truyện trên: Truyen2U.Com