You are on page 1of 65

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ GTVT

Chương 3: PHP-MYSQL
CƠ BẢN
Giảng viên hd: Th.s. Trần Thị Xuân Hương
Đơn vị: Tổ KHCB
Web tĩnh

Mọi người sử dụng đều 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 độ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ương trình chạy.
 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.
Một số công nghệ viết web động
 Động phía client:
⁃ Javascript, VBScript chạy được ở client
⁃ Applet
⁃ Flash
 Động phía server:
⁃ CGI: Common gateway interface
⁃ Java server pages
⁃ 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; Bộ biên dịch PHP
• Webserver: Apache, IIS
Cài đặt và cấu hình các phần
mềm
 Webserver:
⁃ Apache: http://www.apache.org
 Biên dịch: PHP : https://www.php.net/
 Hệ quản trị CSDL: MySQL : http://www.mysql.com
 Hỗ trợ quản lý CSDL MySQL
⁃ MySql Control
⁃ PHPMyAdmin(web)
⁃ SQL Manager
⁃ AppServer
 Hỗ trợ soạn thảo
⁃ Visual Code
⁃ Macromedia Dreamweaver

3.1. Giới thiệu về PHP
3.1.1. Tổng quan kiến trúc PHP
PHP (Hypertext Preprocessor): Là một ngôn ngữ lập
trình kịch bản hay một loại mã lện 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 trong HTML. Do được tối ưu hóa 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.
3.1.1. Tổng quan kiến trúc PHP
 Bộ biên dịch php là phần mềm mã nguồn mở, có
thể chạy cùng với các web server, appache, IIS, …
 Thường kết hợp với hệ quản trị CSDL MySQL.
Đặc điểm của PHP
 Có khả năng hướng đối tượng
 Phân biệt chữ hoa, chữ thường
 Mỗi lệnh kết thúc bằng dấu chấm phẩy (;)
Chú thích của PHP
 Đặt như sau:
// Dòng_chú_thích
# Dòng_chú_thích
/*
Đoạn_chú_thích_trên_nhiều_dòng
*/
3.1.2. Nhúng mã PHP vào HTML
 Có thể nhúng mã PHP vào mọi vị trí trong trang HTML.
 Đoạn mã PHP phải đặc đặt giữa cặp kí hiệu <?php … ?>
<?php
//Đoạn lệnh PHP ở đây
?>
 Một cấu trúc lệnh thông thường của PHP có thể được tách
làm nhiều phần, mỗi phần đặt giữa <?php … ?>.
 Kết quả do đoạn lệnh PHP đưa ra được đưa vào vị trí mà
đoạn lệnh đó đang chiếm chỗ.
Viết mã cho ứng dụng PHP
 Một số điểm cần lưu ý
⁃ Cuối câu lệnh có dấu;
⁃ Biến trong PHP có tiền tố $
⁃ Mỗi phương thức đều bắt đầu { và đóng bằng }
⁃ Khai báo biến thì không có kiểu dữ liệu
⁃ Nên có giá trị khởi đầu cho biến khai báo
⁃ Phải có chú thích (comment) cho mỗi feature mới
⁃ Khai báo biến có phân biệt chữ hoa hay thường
3.1.3. Các thành phần cơ bản của
PHP
 Các kiểu dữ liệu
 Hằng, biến
 Hiển thị ra màn hình
 Phép toán
 Câu lệnh điều khiển
 Câu lệnh lặp
 Hàm
 Chèn file
* Các kiểu dữ liệu trong PHP
Kiểu chuỗi
 Giá trị của chuỗi đặt trong dấu nháy đơn (‘) hoặc
nháy kép (“)
 Chuỗi đặt trong dấu nháy kép sẽ bị thay thế và xử
lý ký tự thoát. Trong nháy đơn thì không
 Ví dụ:
Kiểu chuỗi
 Để làm rõ các biến trong chuỗi cần bao biến vào
giữa cặp ngoặc nhọn {}

 Một số kí tự đặc biệt:


⁃ \n: xuống dòng
⁃ \r: trở về đầu dòng
Kiểu mảng
 Cho phép chứa nhiều giá trị dữ liệu được đánh chỉ
mục bằng số hoặc chuỗi.
 Để truy cập vào một phần tử, ta đặt chỉ số trong []
 Ví dụ: $a[0]=“xin”
$a[1]=“chào”
 Để thêm phần tử vào cuối mảng bằng cách bỏ chỉ
số: $a[0]=“xin”
$a[]=“chào”
Kiểu mảng
 Chỉ số chuỗi:
$a[“tên”]=“Loan”
$a[“tuổi”]=20
 Mảng nhiều chiều
⁃ Được coi là mảng của mảng
⁃ Ví dụ:
$a[0][0]=“TT”;
$a[0][1]=“Họ tên”;
$a[1][0]=1;
Kiểu mảng
 Khởi tạo mảng bằng hàm array()
⁃ Chỉ số mặc định:

⁃ Chỉ số chuỗi:
Kiểu mảng
 Khởi tạo mảng bằng hàm array()
⁃ Mảng nhiều chiều:
Ép kiểu và kiểu tra kiểu
 Sử dụng cú pháp tương tự Ký hiệu Ý nghĩa kiểu
C/C++ (int), (integer) Số nguyên
$x=“123abc”;
//$x là chuỗi (real), (double), Số thực
$x=(int)”123abc”; (float)
//$x là số nguyên =123 (string) Chuỗi
 Các kiểu (Bảng) (array) Mảng
 Kiểm tra kiểu:
(object) Đối tượng
gettype(),
is_bool(), (bool), Logic
is_long(), … (Boolean)
(unset) Null, tương tự
như gọi unset()
* Khai báo hằng, biến
+ Khai báo hằng:

+ Khai báo biến: Cú pháp: $ten_bien [= initial value];


* Hiển thị ra màn hình
- print()
- print_r($biến_mảng): in mảng
* Hiển thị ra màn hình
- echo
* Toán tử
* Toán tử
* Toán tử
* Toán tử
* Các câu lệnh rẽ nhánh
 Câu lệnh if
Lệnh switch
* Câu lệnh lặp
 Vòng lặp for
Vòng lặp while
Vòng lặp do while
* Vòng lặp foreach
Ví dụ foreach
Lệnh break, continue, die, exit
- break: thoát khỏi vòng lặp
- continue: bỏ qua đoạn code bên dưới nhảy qua
vòng lặp kế tiếp
- die(), exit(): dừng chương trình ngay lập tức, những
đoạn code bên dưới die() và exit() sẽ không được
thực hiện
Hàm tự tạo
 Khai báo hàm

 Để trả về giá trị cho hàm, ta sử dụng lệnh:


return biểu_thức;
 Để thoát khỏi hàm sử dụng:
- Return
Hàm - Phạm vi biến
 Phạm vi biến là phạ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 năm
⁃ Global variables: Biến cục bộ
• Khởi tạo ở hàm
• Có tác dụng từ khi khởi tạo đến hết file trừ ở hàm.
• Để đưa 1 biến cục bộ vào trong hàm, sử dụng khai báo
global $biến1; $biến2,…; hoặc mảng $_GLOBAL
⁃ Supper Global Variables: Siêu toàn cục: Một số biến có sẵn
của PHP: $_SERVER, $_GLOBAL …
Hàm - Biến tĩnh
 Khai báo hàm
 Giá trị được lưu trữ được qua nhiều lần gọi hàm
 Chỉ được khởi tạo ở lần khai báo đầu tiên
 Để khai báo:
static $biến_tĩnh=giá_trị;
3.2. Thêm nội dung động vào
trang HTML
Cơ chế truyền nhận dữ liệu
Cơ chế truyền nhận dữ liệu
Cơ chế truyền nhận dữ liệu
Cơ chế truyền nhận dữ liệu
 Trang web nhập dữ liệu:
⁃ Sử dụng đối tượng <form>
⁃ Nhập liệu thông qua formfield
⁃ Thực hiện việc truyền dữ liệu

 Trang web nhận dữ liệu (URL): Sử dụng các biến toàn cục
của PHP
⁃ $_POST[“fieldName”]
⁃ $_GET[“fieldName”]
⁃ $_REQUEST[“fieldName]
Trang nhập liệu: timsach.php
Trang: xlTimSach.php
3.3. Truy cập các biến từ form
 <form> trong HTML có 2 thuộc tính:
⁃ Action=“chuỗi”: Địa chỉ trang web nhận dữ liệu
(Đặt là địa chỉ trang PHP xử lý dữ liệu)
⁃ Method=“chuỗi”: Phương thức gửi dữ liệu
• GET (mặc định)
• POST
3.3.1. Đọc các biến từ HTML
 <form> trong HTML có 2 thuộc tính:
⁃ Action=“chuỗi”: Địa chỉ trang web nhận dữ liệu
(Đặt là địa chỉ trang PHP xử lý dữ liệu)
⁃ Method=“chuỗi”: Phương thức gửi dữ liệu
• GET (mặc định)
• POST
3.3.2. Phương thức GET hoặc 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 dấu hỏi
chấm (?)
Ví dụ: Truyền 3 biến a,c,b có giá trị lần lượt là 1,2,1
vào trang http://localhost:82/ptb2.php qua URL:
http://localhost:82/ptb2.php?a=1&b=2&c=1
3.3.2. Phương thức GET hoặc URL
 Khi ta Submit 1 form sử dụng phương thức 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
 Để đọc giá trị các biến trong PHP: Sử dụng mảng
$_GET, các chỉ số là tên biến.
 Ví dụ: Trong trang pb2.php ở trên đọc các biến a, b,
c:
$a=$_GET[“a”];
$b=$_GET[“b”];
$c=$_GET[“c”];
3.3.3. Truyền dữ liệu theo phương
thức POST
 Phương thức post giống với phương thức get nhưng có
tính bảo mật hơn vì dữ liệu gửi phải thông qua một
form HTML nên nó bị ẩn, nghĩa là chúng không thể
thấy các giá trị đó được.
 Post sẽ gửi dữ liệu thông qua form HTML và các giá trị
sẽ được định nghĩa trong các input bao gồm các kiểu
(text, radio, checkbox, password, textarea, hidden) và
nhận dạng thông qua tên của các input.
3.3.3. Truyền dữ liệu theo phương
thức POST
 Tất cả các dữ liệu gửi bằng phương thức post đều được
lưu trong một biến toàn cục $_POST do PHP tự tạo ra.
Lưu ý trước khi lấy phải dung isset($_POST) để kiểm
tra có hay không.
3.3.4. Upload file lên server
 Để upload file lên server phải sử dụng form có
thuộc tính enctype=“multipart/form-data” và
phương thức post, thẻ input có type=“file”.
 Khi upload file lên thì trên server sẽ nhận được 5
thông số cho một file, và PHP sẽ dựa vào các thông
số đó để tiến hành upload:
3.3.4. Upload file lên server
 Để upload file lên server phải sử dụng form có
thuộc tính enctype=“multipart/form-data” và
phương thức post, thẻ input có type=“file”.
 Khi upload file lên thì trên server sẽ nhận được 5
thông số cho một file, và PHP sẽ dựa vào các thông
số đó để tiến hành upload:
Ví dụ
3.4. Sử dụng lại mã và các hàm
đã viết
3.4.1. Tổng quan về sử dụng lại

Khái niệm về Cookie và Session
 Cookie và Session dùng để lưu trữ dữ liệu tạm thời
trên hệ thống.
 Dữ liệu của Session lưu trữ trên server
 Dữ liệu của Cookie lưu trữ trên client
Cú pháp Cookie và Session
 Thiết lập Cookie:
cookie(tên_cookie, giá_trị, time()+thời_gian_sống);
 Sử dụng cookie: $biến=$_COOKIE[“tên_cookie”];
 Hủy cookie: setcookie(tên_cookie,giá_trị,time()-thời_gian_sống);
 Thiết lập session:
⁃ Khởi tạo: session_start();
⁃ Thiết lập: $_SESSION[‘tên_session’]=‘Giá_trị’;
 Sử dụng session: $biến=$_SESSION[‘tên_session’];
 Hủy session: - Hủy 1 session: unset($_SESSION[‘tên_session]);
- Hủy toàn bộ session: session_destroy();
3.4.2. Sử dụng hàm include(),
require()
 Include hoặc require: lấy tất cả các nội dung bao gồm text và
các thẻ của một file (nếu tồn tại) vào file hiện hành.
 Include và require có chức năng tương đồng nhau chỉ khác
khi thông báo lỗi:
⁃ Require sẽ sinh ra lỗi và dừng chạy chương trình
⁃ Include sẽ sinh ra cảnh báo nhưng vẫn chạy chương trình.
 Ngoài ra còn có include_one và require_one. Điểm khác biệt
của 2 loại này là include và require có thể gọi 1 file nhiều lần
còn include_one và require_con chỉ gọi 1 file 1 lần.
Cú pháp
 include(“địa_chỉ_file”);
 require(“địa_chỉ_file”);
 include_one(“địa_chỉ_file”);
 require_one(“địa_chỉ_file”);
Bài tập áp dụng
- Bài 1: Giải phương trình bậc nhất: ax + b = 0

- Bài 2: Giải phương trình bậc 2: ax2 + bx + c=0


$result=‘’;
if (isset($_POST['calculate']))
{
// Bước 1: Lấy tham số
$a = isset($_POST['a']) ? $_POST['a'] : '';
$b = isset($_POST['b']) ? $_POST['b'] : '';
$c = isset($_POST['c']) ? $_POST['c'] : '';

// Bước 2: Validate và tính toán


$delta = ($b*$b) - (4*$a*$c);

if ($delta < 0){


$result = 'Phương trình vô nghiệp';
}
else if ($delta == 0){
$result = 'Phương trình nghiệp kép x1 = x2 = ' . (-$b/2*$a);
}
else {
$result = 'Phương trình có hai nghiệp phân biệt, x1 = ' . ((-$b + sqrt($delta))/2*$a);
$result .= ',x2 = ' . ((-$b - sqrt($delta))/2*$a);
}
}
Bài tập áp dụng 3
Bài tập áp dụng 4
Xây dựng Website sử dụng tính năng session thỏa
mãn những yêu cầu sau:
1.Tạo một trang đăng nhập với Username/password là:
admin/123456. Nếu user đăng nhập thành công thì sẽ
xuất hiện dòng chữ: Wellcome admin.
2.Tạo trang đăng xuất thoát khỏi phần quản trị

You might also like