chúng ta sẽ nghiên cứu về cấu trúc cơ bản trong PHP. Về tổng quan PHP có cú pháp khá tương đồng với 1 số ngôn ngữ như C, java. Tuy nhiên, tự bản thân chúng cũng có những điểm rất riêng biệt, Sau bài này các bạn đã có những khái niệm đầu tiên về PHP, các cú pháp, các kiểu dữ liệu, và cách làm việc với môi trường PHP như thế nào. Ở bài sau, chúng ta sẽ tiếp tục tiếp cận với các thuật toán và cú pháp PHP một cách rõ ràng và quen thuộc trong các ngôn ngữ lập trình.
Trang 1PHP CƠ BẢN
1 Giới thiệu PHP
PHP là ngôn ngữ dùng để thiết kế các trang web động PHP được cung cấp tại www.php.net,
được sử dụng phổ biến ở hàng triệu Web sites với các ưu điểm sau: Tốc độ xử lý nhanh, miễn phí, dùng được trên nhiều hệ thống, ổn định, bảo mật tốt, kết nối được hầu hết các CSDL
2 Code PHP
Đọan Code PHP nằm giữa cặp thẻ <?php ?>
hoặc: <? … ?>
Mỗi lệnh PHP được kết thúc bằng dấu chấm phẩy ;
3 Chú thích trong PHP
<?php
// Chú thích ngay trên dòng hoặc nhiều dòng
/*
Chú thích trên một dòng hoặc nhiều dòng
Chú thích trên một dòng hoặc nhiều dòng
Chú thích trên một dòng hoặc nhiều dòng
*/
?>
Ví dụ
4 Biến trong PHP
Biến là tên của vùng nhớ dùng để lưu trữ dữ lệu Tên biến bắt đầu bằng $ , sau đó là một chữ cái hoặc một dấu gạch chân " _ ".Các ký tự còn lại gồm các chữ cái ,chữ số hoặc gạch chân nhưng không có khoảng trắng ở giữa
PHP không yêu cầu phải khai báo biến và kiểu dữ liệu trước khi sử dụng Tên Biến có phân biệt chữ hoa chữ thường
Biến chứa những loại dữ liệu: Strings, Arrays, Integers, Floating, Numbers, Objects
Trang 2Khai báo : $TenBien=<giatri> ;
Lệnh echo : Dùng để hiện giá trị của 1 biến, 1 chuỗi
Ví dụ :
<?
$hoten = "Tèo";
$dem = 1;
echo $hoten;
echo "Hello";
?>
5 Hằng (Constant)
Hằng là vùng nhớ chứa giá trị không đổi trong PHP Quy tắc đặt tên hằng cũng giống như quy tắc đặt tên biến, nhưng không cần dấu $ đi trước Khi khai báo một hằng số phải gán giá trị của hằng Cách khai báo như sau:
define(“ten_hang”,”gia_tri_hang”);
Ví dụ:
<?php
define( "TYGIA", 20000);
define("THUMUC", "/webtintuc/");
?>
6 Các phép toán
- Số học: + -, *, /, % (chia lấy dư)
- So sánh: ==, >=, <=, >, < , !=
- Ghép chuỗi:
- Logic: !, && , ||
- Tăng 1 : ++
- Giảm 1 :
- Gán: =
- Các phép toán so sánh:
$a == $b so sánh bằng - True nếu giá trị $a bằng giá trị $b
$a === $b so sánh đồng dạng - True nếu giá trị $a bằng giá trị $b, và cùng kiểu dữ liệu
Trang 3$a != $b so sánh không bằng - True nếu giá trị $a không bằng giá trị $b
$a !== $b so sánh không đồng dạng - True nếu giá trị $a không bằng giá trị $b , hoặc chúng không cùng kiểu dữ liệu
$a < $b so sánh nhỏ hơn - True nếu giá trị $a nhỏ hơn giá trị $b
$a > $b so sánh lớn hơn - True nếu giá trị $a lớn hơn giá trị $b
$a <= $b so sánh nhỏ hơn hoặc bằng - True nếu giá trị $a nhỏ hơn hoặc bằng giá trị $b
$a >= $b so sánh lớn hơn hoặc bằng - True nếu giá trị $a lớn hơn hoặc bằng giá trị $b
7 Lệnh if:
Là khối lệnh rẽ nhánh Có ba cách dùng như sau:
a Lệnh if không dùng else
if ( điều kiện ){
Khối Lệnh
}
b Lệnh if có dùng else
if (điều kiện) {
Khối Lệnh 1;
}
else {
Khối Lệnh 2;
}
c Câu lệnh if elseif
if (điều kiện) {
Khối Lệnh 1
} elseif (điều kiện) {
Khối Lệnh 2
} elseif (điều kiện) {
Khối Lệnh 3
} else {
Khối Lệnh n
}
Ví dụ 1:
<?
$diem=6;
Trang 4if ($diem>=5) echo "Đậu";
else echo "Rớt";
?>
Ví dụ 2:
<?
if (date("H")<12) echo "Chào buổi sáng";
else echo "Chào buổi tối";
?>
Ví dụ 3:
<?
if (date("H")<12) echo "Chào buổi sáng";
elseif (date("H")<18) echo "Chào buổi chiều";
else echo "Chào buổi tối";
?>
Chú ý:
- Nếu các khối lệnh chỉ 1 gồm lệnh thì có thể bỏ cặp { }
- Khối lệnh có thể là mã lệnh php hoặc mã lệnh html
8 Câu lệnh lựa chọn switch case
<? $ngay = date("w");
switch ($ngay){
case 0: $thu="Chủ nhật";
break;
case 1: $thu="Thứ hai";
break;
case 2: $thu="Thứ ba";
break;
case 3: $thu="Thứ tư";
break;
case 4: $thu="Thứ năm";
break;
Trang 5case 5: $thu="Thứ sáu";
break;
case 6: $thu="Thứ bảy";
break;
}
echo "Hôm nay là " $thu;
?>
9 isset(), empty() và unset()
Ví dụ 1:
<? if (isset($x)==true) echo "Có biến x"; else echo "Không có biến x"; ?>
<br />
<? $x=1;
if (isset($x)==true) echo "Có biến x"; else echo "Không có biến x";
?>
<br />
<? unset($x);
if (isset($x)==true) echo "Có biến x"; else echo "Không có biến x";
?>
Ví dụ 2:
<?
$y=NULL; if (empty($y)==true) echo "y là rỗng<br>";
$t=0; if (empty($t)==true) echo "t là rỗng<br>";
$s=""; if (empty($s)==true) echo "s là rỗng<br>";
$m=FALSE; if (empty($m)==true) echo "m là rỗng<br>";
$n=5; if (empty($n)==true) echo "n là rỗng<br>";
?>
10 Null và is_null()
<? $y=NULL; if (is_null($y)==true) echo "y là null<br>"; ?>
11 Vòng lặp for:
- Là lệnh lặp một khối lệnh với số lần lặp nhất định Khối lệnh có thể là lệnh php hoặc code html Nếu khối lệnh chỉ gồm 1 lệnh thì có thể bỏ dấu {} Cú pháp:
for (<biến đếm> ; <Điều kiện dừng> ; <Tăng/giảm biến đếm>) {
Trang 6Khối lệnh.
}
- Ví dụ:
<?
for ($i=1 ; $i<=10 ; $i++) echo "i=$i<br>";
?>
12 Vòng lặp while :
- Là lệnh lặp khối lệnh số lần lặp không xác định Cú pháp:
while (<Điều kiện>){
Khối lệnh
}
- Điều kiện lặp được kiểm tra trước, do đó có thể không thực hiện lần nào.Ví dụ:
<?
$i=1;
while ($i<=20) {
echo "<p>$i</p>";
$i+=2;
}
?>
13 Vòng lặp Do While:
- Là lệnh lặp khối lệnh số lần lặp không xác định
do {
Khối lệnh
} while (<Điều kiện>);
- Điều kiện lặp được kiểm tra sau, do đó thực hiện ít nhất 1 lần
- Ví dụ:
<?
$i=50;
do {
echo "<p>",$i,"</p>";
$i-=5;
}while ($i>=0);
?>
Trang 714 Include, require file
- Để chèn các đoạn code từ các File khác có thể dùng một trong hai phát biểu là includehoặc
require Điểm khác biệt giữa hai phát biểu này là nếu file cần chèn vào bị lổi hoặc không có tại vị trí được khai báo thì với phát biểu include chương trình vẫn tiếp tục chạy nhưng nếu sử dụng require thì chương trình sẽ ngưng lại
- Để tránh trường hợp chèn nhiều lần một File hay một đoạn code, có thể sử dụng phát biểu
include_once hoặc require_once
- Cú pháp:
include "TenFile” ; hoặc
require "TenFile” ; hoặc
include_once "TenFile” ; hoặc //để đảm bảo include chỉ 1 lần
require_once "TenFile” ;
- Ví dụ:
<?php include "tinxemnhieu.php"; ?>
<?php include_once "tinxemnhieu.php"; ?>
Trang 8CHUỖI TRONG PHP
1 Giới thiệu
Chuỗi trong PHP, khi dùng phải đặt trong nháy đơn hoặc nháy đôi Nếu trong giá trị chuỗi có nháy thì phải đặt dau dấu \
<?php
$str = "Trung Tâm Nhất Nghệ ";
$chao = " Chào \"Sếp\" ";
?>
Ngoài hai cách sử dụng nháy đơn và nháy kép cho chuỗi, PHP còn cung cấp một phưong pháp khởi
tạo biến chuỗi có nội dung lớn ( nhiều dòng ) gọi là heredoc Thí dụ:
$myStr = <<< End_Of_Quote
Trung tâm Nhất Nghệ
105 Bà Huyện Thanh Quan
End_Of_Quote;
echo $myStr;
2 Xuất và định dạng chuỗi
- Dùng lệnh echo hoặc hàm print để xuất các giá trị ra trang web
echo "First", "second", "third";
print("Hello, world")
- Dùng hàm printf() để xuất chuỗi có định dạng giá trị in ra
printf('%.2f', 27.452); // In số thập phân có hai chữ số lẻ 27.45.
printf('The hex of %d is %x' , 214, 214 ); // In số thập phân và số thập lục
printf('%03d', 7); //007
printf('%02d/%02d/%04d', 4, 8, 2012); //04/08/2012
printf('%.2f%%', 2.1); //2.10% Complete
- Hàm sprintf cũng cho phép định dạng chuỗi in ra nhưng không xuất kết quả ra trình duyệt mà
ra bộ nhớ ( lưu vào biến ) Thí dụ:
Trang 9$d = sprintf("%02d/%02d/%04d", 4, 8, 2012);
3 Truy xuất từng ký tự trong chuỗi
Các ký tự trong chuỗi được đánh từ 0 Để truy xuất từng ký tự trong chuỗi, dùng cú pháp :
$BiếnChuỗi [ Số thứ tự của ký tự ] ;
Ví dụ:
$s = 'NHAT NGHE';
for ($i=0; $i < strlen($s); $i++) {
printf("Kí tự thứ %d là %s <br>", $i, $s[$i] );
}
4 Một số hàm xử lý chuỗi
<? $str = 'abc'; echo strlen($str);?> <br />
<? $me="abcDabcd"; $con="d";
echo strpos($me, $con);
?> <br />
<? $str="ab_AB_ab"; echo str_replace("ab","xy",$str);?> <br />
<? $n = 12.567; echo number_format($n, 2 , ',' , '.' ); ?> <br/>
<? echo strip_tags(" <b><i>PHP</i></b> "); ?> <br />
<? echo strstr("teo@yahoo.com","@");?> <br />
Trang 107 Hàm substr: Trích chuỗi con
<? echo substr("teo@yahoo.com",4,50);?> <br />
MB_CASE_TITLE
<? echo mb_convert_case("lập trình ứng dỤng", MB_CASE_TITLE ,'utf-8'); ?> <br>
<? echo md5("123");?> <br />
<? echo sha1("123");?> <br />
Trang 111 Giới thiệu:
- Dãy là 1 đối tượng được tạo ra nhằm lưu trữ các dữ liệu có tính tương đồng Trong dãy có nhiều phần tử với những giá trị khác nhau và được đánh theo số thứ tự từ 0 trở đi (chỉ số phần tử) hoặc được phân biệt theo dạng chuỗi (key)
- Giá trị các key phải khác nhau
2 Khai báo dãy
$TênDãy=array(); // khai báo dãy rỗng
$TênDãy=array(giá tri 1, giá trị 2,…); //khai báo dãy có các phần tử đánh bằng chỉ số
$ TênDãy =array("key1" => trị 1, "key2" => trị 2, "key3" => trị 3); //Khai báo dãy dùng key
Ví dụ:
$giohang=array(); //khai báo dãy rỗng
$diem=array(9,5,7); // 3 phần tử chỉ số là 0,1,2
$sanpham=array("idSP"=> 5 ,"TenSP"=> " Gạo ","Gia"=> 12000 );
$diem[]=9; //Thêm 9 vào cuối dãy $diem=array(0,5,7,9)
$sanpham["SoLuong"]=3; //thêm 3 làm phần tử cuối của dãy, key là SoLuong
3 Truy xuất phần tử dãy
$ TênDãy[chiso] ; hoặc $ TênDãy["key"] ;
echo $diem[1] "<br/>"; //5
echo $sanpham["TenSP"]; //Gạo
4 Duyệt qua các phần tử của dãy dùng vòng lặp for :
- Với array mà các phần tử được đánh chỉ số liên tục nhau, dùng vòng lặp for như sau :
$soluong=array(8,10,9) ;
for ( $i=0 ; $i<count($giatri) ; $i++ ) {
echo "Giá trị thứ $i là $soluong[$i]<br>";
}
5 Duyệt qua các phần tử dùng vòng lặp while :
- Liệt kê các phần tử của dãy có chỉ số dạng key
- Ví dụ 1 :
$sanpham=array("idSP" =>5, "TenSP"=>"Gạo", "Gia"=>12000, "SoLuong"=>3);
reset($sanpham);
Trang 12while (key($sanpham) != null) {
echo key($sanpham) " = " current($sanpham) "<br/>";
next($sanpham);
}
- Ví dụ 2:
<? $sanpham =array('idSP'=>5, 'TenSP'=>'Gạo', 'Gia'=>12000, 'SoLuong'=>3); reset( $sanpham );
?>
<table border=1 width=200>
<?php while (key( $sanpham ) != null) { ?>
<tr> <td><?php echo key( $sanpham ); ?> </td>
<td><?php echo current( $sanpham ); ?> </td>
</tr>
<?php next( $sanpham ); ?>
<?php }?>
</table>
6 Duyệt qua các phần tử dùng vòng lặp foreach:
<? $daySP=array("5"=>"Mắm","3"=>"Muối","1"=>"Gạo","4"=>"Dưa"); ?>
<table border=1 width=200>
<tr> <th>idSP</th> <th> TênSP </th> </tr>
<?php foreach ($daySP as $k => $v ) { ?>
<tr> <td> <?= $k ?> </td> <td> <?= $v ?> </td> </tr>
<?php } ?>
</table>
Chú ý:
1 phần tử của dãy có giá trị null cũng được, ghi vầy
$a=array(10,null,7); Ghi vầy là sai: $a=array(10,,7);
Phần tử có chỉ số thì key là null
<?
foreach ($_SERVER as $x => $y) echo "$x : $y <br>";
Trang 137 Các hàm xử lý dãy
a Count: Đếm số phần tử trong dãy
- Cú pháp: count($day);
$a [ ] = 1; $a[ ] = 3; $a[ ] = 5
echo $result = count($a); //3
b current /next/prev/reset:
- current($day) Trả về giá trị của phần tử hiện hành
- key($day) Trả về key của phần tử hiện hành
- next($day) Đưa con trỏ tới phần tử tiếp theo của dãy
- prev($day) Đưa con trỏ tới phần tử tiếp theo của dãy
- reset($day) Đưa con trỏ về phần tử đầu của dãy
- end($day) Đưa con trỏ về phần tử cuối của dãy
$ t = array('foot', 'bike', 'car', 'plane');
echo current($t); // foot
next ($t);
echo current($t); // bike
prev ($t);
echo current($t); // foot
end ($t);
echo current($t); // plane;
c sort:
- Sắp xếp giá trị các phần tử tăng dần, cách sắp xếp tùy thuộc vào tham số $sort_flags Sau khi sắp sẽ làm thay đổi key của all các phần tử trong dãy
- Cú pháp: sort($dãy[,$sort_flags]);
sort_flags gồm các giá trị sau:
SORT_REGULAR : Sắp bình thường (không chuyển kiểu) SORT_NUMERIC : so sánh kiểu số
SORT_STRING : So sánh kiểu chuỗi
<? $f = array("lemon", "orange", "banana", "apple");
print_r($f);
?>
<br />
Trang 14<? sort($f);
print_r($f);
?>
d in_array : tìm 1 giá trị xem có tồn tại trong dãy hay không
- Cú pháp: bool in_array(giá trị tìm, $dãy,$kieu);
- Ví dụ 1:
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array( "Irix", $os)) echo "Got Irix"."<br/>";
if (in_array( "mac", $os)) echo "Got mac"."<br/>";
Kết quả : Got Irix
- Ví dụ 2:
$a = array('1.10', 12.4, 1.13);
if (in_array( '12.4', $a, true))echo "'12.4' found <br/>";
if (in_array( 1.13, $a, true)) echo "1.13 found <br/>";
Kết quả : 1.13 found
e array_search: Tìm 1 giá trị trong dãy và trả về key của nó Tìm không được trả về FALSE
- Cú pháp: array_search ( mixed $needle, array $haystack [, bool $strict] )
- Nếu strict là TRUE thì hàm sẽ test kiểu của giá trị tìm
Ví dụ :
$array = array(0=> 'blue', 1=> 'red', 2=> 'green', 3=> 'red');
$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array); // $key = 1;
f array_key_exists: Tìm 1 key trong dãy
Cú pháp: bool array_key_exists ( mixed $key, array $search ) Ví dụ :
$search_array = array('first' => 1, 'second' => 4);
if ( array_key_exists('first', $search_array))
echo "The 'first' element is in the array";
8 Xử lý dữ liệu trên Form
a Đối tượng $_GET, $_POST
$_GET là đối tượng chứa dữ liệu gửi lên từ form có method là Get
$_POST là đối tượng chứa dữ liệu gửi lên từ form có method là Post
b Cách lấy giá trị từ form
Trang 15 $_GET["TenDoiTuongTrongForm"]
$_POST["TenDoiTuongTrongForm"]
c Ví dụ :
Tạo 1 file tên dangnhap.php rồi tạo form login trong tag body như dưới đây:
<form action="xulydangnhap.php" method="POST" name="form1" id="form1">
<table width="286" border="0" align="center" cellpadding="4" cellspacing="0">
<caption>ĐĂNG NHẬP</caption>
<tr> <td width="114">Tên đăng nhập</td>
<td width="150"><input name="u" type="text" class="txtfield" id="u" /> </td> </tr>
<tr><td width="114">Mật khẩu</td>
<td><input name="p" type="password" class="txtfield" id="p" /> </td>
</tr>
<tr><td> </td>
<td><input type="checkbox" name="nho" />Nhớ user và pass</td>
</tr>
<tr><td> </td>
<td><input name="button" type="submit" value="Đăng Nhập" /></td>
</tr>
</table>
</form>
Tạo file xulydangnhap.php rồi gõ mã sau vào tag body
<?