a

Màu nền
Font chữ
Font size
Chiều cao dòng

Để 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.Pro