Chương 4 Ngôn ngữ kịch bản PHP cơ bản thuộc bài giảng Mã nguồn mở. Cùng nắm kiến thức trong chương này thông qua việc tìm hiểu các nội dung sau: giới thiệu về PHP, chuỗi kí tự, dữ liệu ngày, mảng, phương thức nhận dữ liệu post & get, hàm.
Trang 1Ngôn ngữ kịch bản php cơ bản
Giảng viên : ThS Nguyễn Minh Thành
Email : thanhnm@itc.edu.vn
Chương 4 :
Trang 3Ưu điểm :Mã nguồn mở (open source code)
- Miễn phí, download dễ dàng từ Internet
- Ngôn ngữ rất dễ học, dễ viết
- Mã nguồn không phải sửa lại nhiều khi viết chạy cho các hệ điều hành từ Windows, Linux, Unix
Tên gọi ban đầu :'Personal Home Page Tools’
Xem : http://en.wikipedia.org/wiki/PHP
Trang 5Quá Trình Thông Dịch file PHP
Trang 6Kiểu dữ liệu – Hằng – Biến
a- Kiểu dữ liệu:
Integer, Double, Boolean, String, Array và Object
b Khai báo biến:
Trang 7Kiểu dữ liệu – Hằng – Biến
Chuyển kiểu dữ liệu
$newint = (int) $var1;
$newfloat = (float) $var1;
$newstring = (string) $var1;
Xuất thông tin biến
var_dump($myvariable);
Kiểm tra nội dung biến
isset($varname) empty($varname) is_int ($varname) is_array ($varname) is_float ($varname) is_null ($varname) is_numeric ($varname) is_string ($varname)
Xuất dữ liệu echo $myvariable;
printf $myvariable;
Trang 8e. Các phép toán logic : !, &&, ||
f. Toán tử tam phân : (điều_kiện ? giá_trị_1 : giá_trị_2)
g. Phép ghép chuỗi : (dấu chấm)
h. Toán tử error : @, ngăn không cho thông báo lỗi
Ví dụ : $a=10; $b=0; $c=@$a/$b
Trang 10• pow : lũy thừa
• rand : tạo số ngẫu nhiên
• round : làm tròn
• Max, min : lấy giá trị lớn, nhỏ
• Abs : trị tuyệt đối
Trang 11Các câu lệnh điều khiển
a- Câu lệnh if Các cú pháp thông dụng:
Trang 12Các câu lệnh điều khiển (tt)
b Câu lệnh switch
Cú pháp :
switch($biến){
case giá_trị_1: nhóm lệnh 1 ; break;
case giá_trị_2: nhóm lệnh 2 ; break;
Trang 13Các câu lệnh điều khiển (tt)
Trong PHP có 4 câu lệnh lặp, trong đó foreach có cách sử dụng đặc sắc so với các NNLT khác Muốn thoát khỏi vòng lặp : sử dụng lệnh exit
Trang 14Phân biệt ngoặc đơn và kép :
- Chuỗi sử dụng ngoặc đơn được lưu trữ như một chuỗi bình thường
- Chuỗi sử dụng ngoặc kép được lượng giá các biến và kí tự đặc biệt trong chuỗi trước khi lưu trữ
$string1 = “There are ‘$number’ people in line.”;
$string2 = ‘There are “$number” people waiting.’;
echo $string1,”\n”;
echo $string2;
Trang 15Chuỗi Kí Tự
2- Các hàm về kiểu chuổi ký tự:
- chop(), trim(), ltrim()
- nl2br(): định dạng HTML, biến ký tự \n thành “<br>”
- addslashes() : để biến một chuổi có thể lưu trữ trong CSDL, ví dụ: dấu “ -> \”
- substr($str,$pos,$len) : tách một chuổi con từ một chuổi
- strpos($str,$sub) : vị trí chuổi $sub trong chuổi $str
- str_replace($rep,$with,$str) : thay $rep bằng $with trong $str
- explode($separator,$str) : tách chuổi $str thành các chuổi con dựa trên dấu phân cách $separator và lưu kết quả vào mảng, ~ phương thức split của JavaScript Ngược lại là hàm implode hay join
- str_repeat(“str”,n) : lặp lại str n lần
- str_chr(“str”,”chr”) : trả về 1 chuỗi bắt đầu từ kí tự chr trong str
- stristr(“str”,”chr”) : giống str_chr nhưng không phân biệt hoa thường
- strlen(“str”) : chiều dài chuỗi str
- strrev(“str”) : đảo ngược chuỗi str
Trang 16Chuỗi Kí Tự (tt)
Ví dụ: Chuẩn hóa một chuổi văn bản(dạng đơn giản) : không có ký tự trống ở hai đầu, giữa 2 từ chỉ có duy nhất một ký tự trống.
<?php
$str=“ Thầy Nguyễn Minh Thành “;
echo “<br />Độ dài chuổi ban đầu “.strlen($str);
Trang 17echo "<h2>Danh sách giáo viên:</h2>";
foreach($arr as $key=>$value) echo ($key+1)."-".$value."<br />";
?>
Trang 18Dữ Liệu Ngày – Giờ
Trang 19Dữ Liệu Ngày – Giờ
Trang 20Mảng Một Chiều
1. Khai báo :
$n=100;
$arr1 = array($n);
$arr2 = array(giá_trị_1, giá_trị_2, , giá_trị_n);
$arr3 = range(100,900);// range(“z”, “a”);
$arr4 = arrr(hoten=>“Minh Thành”, quequan=>“HCM”,
tuoi=>27;IQ=“Rất cao”); // mảng kết hợp
Câu lệnh lặp foreach rất hiệu quả khi duyệt mảng kết hợp
Trang 21Mảng Một Chiều (tt)
2- Sử dụng
-Truy cập một phần tử mảng : $arr[$key]
$key có ý nghĩa rộng hơn Index, dùng tham chiếu đến một phần tử của mảng
Ví dụ 1: Tạo mảng gồm 10 phần tử là các số nguyên lấy ngẫu nhiên trong [0,100] Khởi tạo $key là 0.
<?php
$arr = array(10);
for($i=0; $i<10; $i++) $arr[$i] = rand(0,100);
for($i=0; $i<10; $i++) echo ($i+1).”-”.$arr[$i].”<br>”;
?>
Trang 23Mảng Một Chiều (tt)
-Truy cập một phần tử mảng : sử dụng hàm each()
while($item=each($arr)){
echo $item[“key”] ”,”;
echo $item[“value”] “<br>”;
Trang 24Các Hàm Về Mảng
-Hàm count(), sizeof() : trả về kích thước của mảng
+ current()/end() : trả về phần tử đầu tiên/ cuối cùng của mảng
+ prev() / next() : trả về phần tử liền trước / kế kiếp
+ sort() , asort(), rsort(), arsort(): sắp xếp mảng theo value của phần tử
+ ksort(), krsort() :sắp xếp mảng theo key của phần tử
- is_array() kiểm tra mảng
- Print_r() hoặc var_dump(): xem nội dung mảng
- Unset($arr[$key]) : xóa phần tử $key khỏi mảng
Trang 254- Mảng động : Cho mảng gồm 10 số tự nhiên,tạo một mảng con chứa những số lẻ của mảng này, In ra mảng con này.
<?php
$arr=array(2,4,9,2,3,5,8,1);
$child=array(); // sử dụng mảng động
while(list($k,$v)=each($arr)) if($v%2!=0) $child[]=$v;
echo "So phan tu cua mang con ".count($child)."<br />";
// In ra mảng con gồm các số lẻ từ mảng $arr
for($i=0;$i<count($child);$i++) $child[$i]."<br />"
?>
Trang 26Các Mảng Xây Dựng Sẵn
Trang 27Các Mảng Xây Dựng Sẵn
Ví dụ : xuất các thành phần trong mảng $_SERVER
foreach($_SERVER as $key =>$value) {
echo “Key=$key, Value=$value\n”;
}
Trang 281- Cú pháp:
function tên_hàm([các_tham_số]) {
// Khai báo biến riêng
-Hàm không có giá trị trả về : tên_hàm([các_tham_số]);
-Hàm có giá trị trả về : tham gia vào các biểu thức, gán giá trị cho biến
Trang 29echo “<table border=1>”;
reset($a); // trỏ về phần tử đầu tiên của mảng $a;
$value=current($a); // phần tử hiện thời của mảng $a
Trang 30Hàm (tt)
B- Hàm có giá trị trả về
<?php
$arr=array(hoten=>“Minh Thành",diachi=>“HCM");
function is_hoten( $mang )
// trả về value của phần tử có key là hoten
Trang 31- Biến chung : được khai báo ngoài phạm vi các hàm, hoặc global
- Biến riêng: khai báo bên trong hàm (nếu không có global)
- Biến $_SESSION : có giá trị toàn cục, cho mọi trang trong phiên PHP xây dựng sẵn một số biến toàn cục với tên quy ước $_TÊN (in hoa)
function tên_hàm($x){
global $total; $total=giá_trị;
static $index; $index=giá_trị;
// các lệnh PHP
}
4- Tham trị và tham biến
-Hàm trên được gọi với tham trị
-Hàm sau đây sẽ được gọi với tham biến :
function tên_hàm(&$y){
// các lệnh PHP}
Trang 32Phương Thức Truyền Dữ Liệu
Đây là những biến toàn cục nhận các giá trị gởi từ client
đến server bằng phương thứ Post hay Get
1- Phương thức POST
<form action=receive.php method=POST>
<input type=text name=“hoten”>
Trang 33Phương Thức Truyền Dữ Liệu (tt)
Trường hợp đặc biệt: nhận dữ liệu gởi từ các checkbox cùng tên:
Goi.html
<form action=Nhan.php method=post>
<input type=checkbox name=box[] value=1>Một
<input type=checkbox name=box[] value=2>Hai
<input type=checkbox name=box[] value=3>Ba
<input type=submit name=“Sumit”>
Trang 34Phương Thức Truyền Dữ Liệu (tt)
2- Phương thức GET
Giả sử trang goi.html chứa đoạn mã:
<a href=“nhan.php ?hoten=Hà Giang”>Đăng ký </a>
Ta gọi: gởi dữ liệu đến trang nhan.php theo phương thức GET, các biến khác được ghép bởi ký hiệu &
Chú ý: hoten=Hà Giang, không đóng dấu nháy kép!
$_REQUEST : là biến toàn cục thay thế cho $_POST và $_GET
Trang 35-Sử dụng hàm include(), require() để chèn tệp tin PHP, HTML vào một trang PHP khác Ngoài ra còn có: include_once(), require_once(),
- Phân biệt include() và require()
include(“tên_tệp”) : nếu tên_tệp không tồn tại thì PHP thông báo lỗi và vẫn tiếp tục thực thi script còn lại.
require(“tên_tệp”) : nếu tên_tệp không tồn tại thì PHP dừng thực thi script
-Sử dụng include(), require() là một cách tái sử dụng đoạn mã đã viết
Ví dụ :Trang Index.php bao gồm 3 khối:
- header.inc : gồm các khai báo <html> <body>
- menu.php : gồm các liên kết
- footer.php: gồm các thông tin về website và </body></html>
Trang 37<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>
body{margin:10 10 10 60; font: normal 18pt Arial; color:navy}
// khai báo để DEMO hiển thị rõ ràng khi trình bày trên LCD Projector!
$copyright="<hr /><div class=ft>Copyright by NDTFIT,1995-".date("Y");
$copyright.="<br />Khoa Tin học, Trường Đại học Sư phạm</div>";
// năm hiện thời tự động cập nhật
echo $copyright;
?>
</body></html>
Trang 38$strMenu.="<a href='#'>Post, Get</a><br />";
$strMenu.="<a href='#'>Cookie, Session</a><br />";
echo $strMenu;
?>
Trang 39Hỏi Đáp ?