• Trang web được viết bằng HTML, chỉ thay đổi khi có sự thay đổi của người xây dựng • Khả năng tương tác yếu • Webserver hoạt động giống 1 file server.. Trong PHP, biến có 3 phạm vi: •
Trang 2PHP & MYSQL
Trang 3TRANG WEB TĨNH
• Mọi người sử dụng nhận được kết quả giống nhau.
• Trang web được viết bằng HTML, chỉ thay đổi khi có
sự thay đổi của người xây dựng
• Khả năng tương tác yếu
• Webserver hoạt động giống 1 file server.
Web Server
URL yêu cầu
URL yêu cầu
HTML
HTML
Client
Network
Trang 4TRANG WEB ĐỘNG
• Mỗi người sử dụng có thể nhận được nội dung khác nhau phụ thuộc vào kết quả chạy chương trình.
• Trang web viết bằng HTML + Ngôn ngữ lập trình
phía server Có thể được thay đổi bởi người sử dụng
• Khả năng tương tác mạnh
Web Server
URL yêu cầu
URL yêu cầu
Trang 5MỘT SỐ CÔNG NGHỆ VIẾT WEB ĐỘNG
• Động phía client:
• JavaScript, VBScript được chạy ở client
• Applet (Chạy chương trình Java)
• Flash
Trang 6MỘT SỐ CÔNG NGHỆ VIẾT WEB ĐỘNG
• Động phía server:
• Python
• Java Server Pages (JSP)
• ASP, ASP.NET: Microsoft
• Viết bằng VBScript, JavaScript chạy phía server
• Sử dụng web server IIS.
• PHP: Mã nguồn mở
• Ngôn ngữ lập trình PHP, chạy phía server.
• Webserver: Apache, IIS
• Bộ biên dịch: PHP
Trang 7NGÔN NGỮ PHP
Trang 9• Kết quả do đoạn lệnh PHP đưa ra được đưa vào
vị trí mà đoạn lệnh PHP đang chiếm chỗ.
Trang 10ĐẶC ĐIỂM PHP
• Có khả năng hướng đối tượng
• Thông dịch
• Phân biệt chữ hoa/chữ thường
• Mỗi lệnh kết thúc bởi chấm phẩy (;)
Trang 11CÚ PHÁP NGÔN NGỮ
Trang 13• Phân biệt chữ hoa, chữ thường
• Bắt đầu bằng dấu đô la ($), tiếp ngay sau $ là tên biến.
• Tên biến bao gồm chữ cái, chữ số, dấu gạch nối (_)
và phải bắt đầu bằng chữ cái hoặc dấu gạch nối.
Trang 14BIẾN ĐỘNG (BIẾN BIẾN)
Trang 16• Biểu diễn: $a = 0.017
• Dạng khoa học: $a = 17.0E-03
Trang 17KIỂU CHUỖI
• Giới hạn bởi nháy đơn (‘) hoặc kép (“)
• Chuỗi đặt trong nháy kép bị thay thế và
xử lý ký tự thoát Trong nháy đơn thì
không.
• Ví dụ:
$a = “Hello”;
$b = “$a world”; //tương đương $b=“Hello world”
$c = ‘$a world’; //$c=‘$a world’ (không thay đổi)
Trang 18KIỂU CHUỖI (TIẾP)
biến vào giữa cặp ngoặc nhọn { }
$a = “He”;
$b = “ $a llo”; //lỗi vì PHP hiểu là
$allo
$c = “{$a}llo”; //đúng ($c = “Hello”)
gạch nối hoặc dấu chấm khi viết trong
chuỗi bắt buộc phải bao lại
Trang 19KIỂU CHUỖI (TIẾP)
• Ký tự thoát: \
• Sử dụng để viết các ký tự đặc biệt trong chuỗi
Cần có chuỗi: Người ta nói “PHP rất tốt”
$a = “Người ta nói “PHP rất tốt””; //Sai
$a = “Người ta nói \“PHP rất tốt\””; //Đúng
• Một số ký tự phải sử dụng ký tự thoát: $, \, “
Trang 20KIỂU CHUỖI (TIẾP)
• Kiểu tài liệu (heredoc):
• Cho phép viết 1 chuỗi trên nhiều dòng.
Trang 21KIỂU LOGIC
Trang 22• Có thể sử dụng chỉ số không liên tiếp
• Có thể thêm phần tử vào cuối mảng bằng cách bỏ chỉ số:
$a[0] = “Xin”;
$a[] = “Chào”; // $a[1]
$a[] = “Bạn”; // $a[2]
Trang 24KIỂU MẢNG (TIẾP)
• Chỉ số mặc định:
$a=array(“xin”, “chào”, “bạn”);/*tương đương với
$a[]=“xin”;
$a[]=“chào”;
$a[]=“bạn”;*/
Trang 25KIỂU MẢNG (TIẾP)
• Chỉ số mặc định với chỉ số đầu khác 0:
$a=array(5=>“xin”, “chào”, “bạn”);/*tương đương với
$a[5]=“xin”;
$a[]=“chào”;
$a[]=“bạn”;*/
Trang 26KIỂU MẢNG (TIẾP)
• Khởi tạo mảng bằng hàm array()(tiếp)
• Chỉ số chuỗi:
$a=array(“ten”=>”Hồng”, “mau”=>”Đỏ”); /*Tương đương với:
Trang 27ÉP KIỂU VÀ KIỂM TRA KIỂU
(int), (integer) Số nguyên
(real), (double), (float) Số thập phân (string) Chuỗi
(object) Đối tượng (bool), (boolean) Logic
(unset) NULL, tương tự
như gọi unset()
Trang 29CÁC CẤU TRÚC ĐIỀU KHIỂN
Trang 32switch ($bi n){ến= BTLG
case (giá_tr 1):ị_đúng các_l nh1; ệnh;
case (giá_tr 2):ị_đúng các_l nh2; ệnh;
default:
các_l nh_khác; ệnh; }
Trang 35BREAK VÀ CONTINUE
do-while hoặc switch
trong vòng lặp, chuyển sang vòng lặp tiếp
Trang 37HÀM TỰ TẠO (TT)
tên_hàm(gt1, gt2,… , gtn);
• Nếu hàm không có tham số, khi khai báo
hàm, gọi hàm vẫn phải giữ lại ()
• Để khai báo hàm với các tham số mặc định, khi khai báo ta đưa ngay giá trị tham số vào.
function tên_hàm(ts1=gt1, ts2=gt2,…)
Trang 38PHẠM VI BIẾN
xác định Trong PHP, biến có 3 phạm vi:
• Local variables: biến cục bộ:
• Khởi tạo trong hàm
• có tác dụng từ khi khởi tạo đến hết hàm.
Trang 39PHẠM VI BIẾN
• Global variables: Biến toàn cục:
• Khởi tạo ở ngoài hàm
• Có tác dụng từ khi khởi tạo đến hết file trừ
ở trong hàm.
• Để đưa 1 biến toàn cục vào trong hàm, sử dụng khai báo globals $biến1, $biến2,
…; hoặc mảng $GLOBALS
• Super Global Variables: Siêu toàn cục:
Một số biến có sẵn của PHP: $_SERVER,
$GLOBALS, $_SESSION
Trang 40BIẾN TĨNH
Trang 41CHÈN FILE
• include(“địa_chỉ_file”);
• require(“địa_chỉ_file”);
file PHP hiện tại Nếu file được chèn có lỗi thì chương trình sẽ hiển thị thông báo lỗi.
• Include: nếu file chèn vào có lỗi thì nó cảnh báo lỗi
và tiếp tục thực hiện file cho tới cuối cùng
• Require: nếu có lỗi thì nó báo lỗi và dùng tại đó,
không thực hiện câu lệnh tiếp theo nữa
Trang 43• Các lớp được khai báo thông qua từ khóa class, các thuộc tính khai báo dưới dạng các biến còn các phương thức được khai báo dưới dạng các hàm
class tên_lớp {
//danh_sách_các biến, hằng, lớp
//danh_sách_các_hàm
}
Trang 44CLASS (TIẾP)
• Khởi tạo một đối tượng thuộc một lớp với từ
khóa new
$tên_đối_tượng = new tên_lớp();
• Để gọi hàm trong lớp ta sử dụng toán tử ->
$tên_đối_tượng->tên_hàm();
• Hoặc dùng toán tử :: để gọi đến một hàm hay
một biến (biến phải được khai báo static)
$tên_đối_tượng::tên_hàm();
$tên_đối_tượng::$tên_biến;
Trang 46ĐỌC CÁC BIẾN TỪ HTML
• action=“chuỗi”: Địa chỉ trang web nhận dữ liệu (Đặt là địa chỉ trang PHP
Trang 47PHƯƠNG THỨC GET (URL)
• Truyền dữ liệu (biến) qua URL:
• Các biến được truyền thành từng cặp
biến=giá_trị phân cách bởi dấu &
• Phân cách với địa chỉ trang ban đầu bởi
Trang 48PHƯƠNG THỨC GET HOẶC URL (TT)
GET, dữ liệu được truyền qua URL:
• Tên các biến là tên đối tượng trên form
• Giá trị biến là giá trị NSD nhập vào đối tượng
biến a, b, c:
$a = $_GET[“a”];
$b = $_GET[“b”];
$c = $_GET[“c”];
Trang 49TRUYỀN DỮ LIỆU THEO PHƯƠNG
THỨC POST
trong thân của yêu cầu HTTP
với các chỉ số là tên của đối tượng
trên form gửi đến.
• Ví dụ: Trong trang php đọc các biến a, b, c được submit từ form có method=“post”:
$a = $_POST[“a”];
$b = $_POST[“b”];
$c = $_POST[“c”];
Trang 50SESSION
Trang 51KHÁI NIỆM
• Cơ chế hoạt động của ứng dụng web là
cơ chế làm việc theo từng phiên giao
=> Sử dụng SESSION để lưu phiên làm
việc của 1 người dùng
Trang 52• Hủy biến Session:
• session_unregister(chuỗi_tên_biến); //Hủy 1 biến
• session_unset(); //Hủy các biến đang hiệu lực
• session_destroy(); //Hủy toàn bộ
Trang 54CÁC HÀM LIÊN QUAN TỚI BIẾN
Trang 55CÁC BƯỚC TRUY CẬP CSDL MYSQL
1 Tạo kết nối và lựa chọn CSDL
2 Xây dựng truy vấn và thực hiện truy
vấn
3 Xử lý kết quả trả về
4 Đóng kết nối đến server
Trang 56BƯỚC 1: TẠO KẾT NỐI ĐẾN MÁY CHỦ, CSDL
tên CSDL ở tham số thứ 4
Trang 57BƯỚC 2: XÂY DỰNG VÀ THỰC HIỆN TRUY VẤN
Trang 58BƯỚC 2: XÂY DỰNG VÀ THỰC HIỆN
TRUY VẤN
Ví dụ - tiếp:
$sql="CREATE TABLE persons(Firstname
CHAR(30),Lastname CHAR(30),Age INT)";
Trang 59BƯỚC 2: XÂY DỰNG VÀ THỰC HIỆN
$sql = "INSERT INTO Persons (Firstname,
Lastname, Age) VALUES ('".
$Ten[array_rand($Ten,1)]."', '".
$Ho[array_rand($Ho,1)]."',".rand(17,30).")"; mysqli_query($con, $sql);
//Hàm array_rand(x,y) trả về y (bất kỳ) chỉ số của mảng x.
Trang 60BƯỚC 2: XÂY DỰNG VÀ THỰC HIỆN
TRUY VẤN
Ví dụ - tiếp:
$result = mysqli_query($con,"SELECT * FROM Persons");
Trang 61BƯỚC 3: XỬ LÝ KẾT QUẢ TRẢ VỀ
• Các hàm cần thiết (trong trường hợp câu
lệnh SQL là DELETE, UPDATE…):
• mysqli_affected_rows(): Số bản ghi bị tác động bởi lệnh mysql_query liền trước.
• mysqli_error(): Thông báo lỗi (nếu có)
• mysqli_errno(): Mã lỗi
Trang 63$i++;
}
Trang 64BƯỚC 4: ĐÓNG KẾT NỐI ĐẾN SERVER
mysql_close($biến_kết_nối)
Trang 65- Truy vấn đến CSDL để đưa ra bảng danh sách các
thành viên không phải là admin (quyen > 1)
- Xây dựng trang truy vấn tất cả các sản phẩm có giá
<1000