phần 1 : php & mysql
DESCRIPTION
Phần 1 : PHP & MySQL. PHP at Yahoo! http://www.yahoo.com. The Internet’s most trafficked site. Nội dung. Giới thiệu PHP cơ bản Cấu trúc điều khiển Hàm & Mảng. Cơ chế hoạt động của Webserver Môi trường phát triển PHP. Nội dung 1. Giới thiệu. Nội dung 1.1. - PowerPoint PPT PresentationTRANSCRIPT
1
Phần 1 :
PHP & MySQLPhần 1 :
PHP & MySQL
2
PHP at Yahoo!http://www.yahoo.com
The Internet’s most trafficked site
3
Nội dungNội dung
1. Giới thiệu
2. PHP cơ bản
3. Cấu trúc điều khiển
4. Hàm & Mảng
4
GIỚI THIỆUGIỚI THIỆUNội dung 1
- Cơ chế hoạt động của Webserver- Môi trường phát triển PHP
5
CƠ CHẾ HOẠT ĐỘNG CỦA WEBSERVERCƠ CHẾ HOẠT ĐỘNG CỦA WEBSERVER
Nội dung 1.1
Cơ chế hoạt động của WebServerCơ chế hoạt động của WebServer
6
Users (clients) Browse
Internet
(WWW)
WWW Servers
Authors write HTML
Resources
(HTML files)
Cơ chế hoạt động của WebServerCơ chế hoạt động của WebServer
2Internet
or Intranet
www.example.comWebserver Apache
or IIS
ServerSide Script Parser
(PHP, ASP, ..)
DatabaseServer
Diskdriver
3
45
67
7
HTML
8
MÔI TRƯỜNG PHÁT TRIỂN PHPMÔI TRƯỜNG PHÁT TRIỂN PHPNội dung 1.2
9
Môi trường phát triểnMôi trường phát triển
• Webserver• Compiler• IDE• Database Server
10
Netbean for PHP (Jun-2010)Netbean for PHP (Jun-2010)
• Các thành phần cài đặt• Cấu hình Debug• Tạo project• Debug website
11
NetBeans IDE 6.8http://services.netbeans.org/bouncer/index.php?product=netbeans-6.8-ml-php&os=windows Full WebServer XAMP 1.7.3PHP Engine (5.3.1), Apache 2.2.14, MySQL (5.1.41)http://www.apachefriends.org/download.php?xampp-win32-1.7.3.exe
PHP Engine 5.3.2http://windows.php.net/downloads/releases/php-5.3.2-Win32-VC9-x86.msi Web Server Apache 2.2http://apache.multihomed.net/httpd/binaries/win32/httpd-2.2.15-win32-x86-no_ssl.msi Database Server MySQL 5.0http://dev.mysql.com/downloads/mirror.php?id=389367
PHP Debuger Xdebug 5.2http://www.xdebug.org/files/php_xdebug-2.1.0RC1-5.2-vc6-nts.dll
Netbean for PHP (Jun-2010) – Thành phầnNetbean for PHP (Jun-2010) – Thành phần
12
Netbean for PHP – Thành phầnNetbean for PHP – Thành phần• Setup XAMP + Control Panel
13
Netbean for PHP - Cấu hình debugNetbean for PHP - Cấu hình debug
• Enable Xdebug– Download Xdebug– Copy to Xamp/php/ext– Open and Edid Xamp/Apache/bin/php.ini
14
Netbean for PHP - Cấu hình debugNetbean for PHP - Cấu hình debug• Cấu hình XAMP• http://
netbeans.org/kb/docs/php/configure-php-environment-windows.html
• Cấu hình MySQL• http://
netbeans.org/kb/docs/ide/install-and-configure-mysql-server.html
• Cấu hình Xdebug• http://wiki.netbeans.org/HowToConfigureXDebug
15
Netbean for PHP – Tạo projectNetbean for PHP – Tạo project
16
Netbean for PHP – Tạo projectNetbean for PHP – Tạo project
17
Netbean for PHP – Tạo projectNetbean for PHP – Tạo project
18
Netbean for PHP - DebugNetbean for PHP - Debug
• Bắt đầu debug (Ctrl + F5):
• Continue (F5) – Nhảy đến Breakpoint kế tiếp• Step over (F8) – Nhảy từng bước• Step into (F7) – Nhảy vào hàm• Step out (Ctrl + F7) – Nhảy ra khỏi hàm• Run to Cursor (F4) – Nhảy đến con trỏ
• Stop (F5) :
19
PHP CƠ BẢNPHP CƠ BẢNNội dung 2
- Quy ước- Biến- Xuất dữ liệu- Kiểu dữ liệu
20
QUY ƯỚC TRONG PHPQUY ƯỚC TRONG PHPNội dung 2.1
21
Quy ướcQuy ước• Mã lệnh PHP được đặt trong các cặp thẻ
sau :Thẻ mở Thẻ đóng
<?php ?>
<? ?>
<script language="php"> <script>
<% %>
22
Quy ước – Ví dụ 1Quy ước – Ví dụ 1
http://lvminh.no-ip.org/01BasicPhp/01Quyuoc_VD1.php
23
Quy ước – Ví dụ 2Quy ước – Ví dụ 2
http://localhost/01BasicPhp/01Quyuoc_VD2.php
24
Quy ước – Ví dụ 3Quy ước – Ví dụ 3
Tham số Ý nghĩa
short_open_tag = Off Cho phép sử dụng <? ?>
asp_tags = Off Cho phép sử dụng <% %>
post_max_size = 8M Kích thước tối đa của dữ liệu gửi lên server
file_uploads = On Cho phép upload file
upload_max_filesize = 2M Kích thước tối đa của mỗi file upload
Chỉnh sửa php.ini
Không nên sử dụng cú pháp PHP viết tắt
http://localhost/01BasicPhp/01Quyuoc_VD3.php
25
Quy ước – Ví dụ 4Quy ước – Ví dụ 4
http://localhost/01BasicPhp/01Quyuoc_VD4.php
Cẩn thận với Javascript
Cú pháp ASP không hỗ trợ
PHP6
Quy ướcQuy ước
• Tất cả các câu lệnh php đều cách nhau bởi dấu ";"
• Không phân biệt khoảng trắng, Tab, xuống dòng trong câu lệnh<?php print "Hello"; print " World!"; ?> <?php
Print "Hello" ; print " World!";
?>
• Ghi chú : Theo cú pháp ghi chú của C++ & Perl// Đây là ghi chú
/* Đây là ghi chú nhiều dòng*/
# Đây là ghi chú26
27
Quy ước – Ví dụ ghi chúQuy ước – Ví dụ ghi chú
28
BIẾN TRONG PHPBIẾN TRONG PHPNội dung 2.2
29
Khai báo biến – Đặt tênKhai báo biến – Đặt tên
$tên_biến;
$tên_biến = giá_trị;
• Không cần khai báo kiểu dữ liệu• Biến tự khởi tạo khi được gán giá trị lần đầu
• Tên biến :– Chỉ bao gồm ký tự _ , (A..Z, a..z) và ký số (0..9)– Không bắt đầu tên bằng ký số– Phân biệt chữ hoa – chữ thường
30
Khai báo biến – Ví dụKhai báo biến – Ví dụ• Ví dụ :
STT Tên biến
1 $size
2 $0Zero
3 $my_drink_size
4 $_drinks
5 $Size
6 $drink4you
7 $$2hot4u
8 $drink-Size
9 Size
Biến sai ?
Bao nhiêu Biến?
31
Khai báo biến – Biến tham chiếuKhai báo biến – Biến tham chiếu
Tạo biến tham chiếu một biến khác theo 2 cách:
• Cách 1:$biến_1;$biến_2 =& $biến_1;
• Cách 2:$biến_1;$biến_2 = &$biến_1;
32
Khai báo biến – Phạm viKhai báo biến – Phạm viLoại Vị trí khai báo Phạm vi ảnh hưởng
Biến cục bộ Trong hàm Trong hàm
Tham số của hàm Khai báo hàm Trong hàm
Biến toàn cục Sau từ khóa GLOBAL Webpage
Biến tĩnh Sau từ khóa STATIC Webpage
Biến hệ thống $_SERVER, $_POST, … Website
33
Khai báo biến – Biến hằngKhai báo biến – Biến hằng• Khai báo biến hằng:define(tên_biến_hằng, Giá trị [, HoaThường]);
• Ví dụ:
34
XUẤT DỮ LIỆU RA TRÌNH DUYỆTXUẤT DỮ LIỆU RA TRÌNH DUYỆT
Nội dung 2.3
35
Xuất dữ liệu ra trình duyệtXuất dữ liệu ra trình duyệt
echo()
print()
printf()
sprintf()
Gồm các hàm sau :
36
Xuất dữ liệu ra trình duyệtXuất dữ liệu ra trình duyệt• Cú pháp:
void echo(tham số chuổi [, tham số chuổi [, tham số chuổi]])
• Ví dụ:
echo()
print()
printf()
sprintf()
37
Xuất dữ liệu ra trình duyệtXuất dữ liệu ra trình duyệt• Cú pháp:
int print(tham số)
• Ví dụ:
echo()
print()
printf()
sprintf()
38
Xuất dữ liệu ra trình duyệtXuất dữ liệu ra trình duyệt• Cú pháp:
boolean printf(string format [, mixed args])
• Ví dụ:
echo()
print()
printf()
sprintf()
39
Xuất dữ liệu ra trình duyệtXuất dữ liệu ra trình duyệt
Ký hiệu Kiểu tham số Thể hiện ra
%b Số nguyên Số nhị phân
%c Số nguyên 1 ký tự ACSII
%d Số nguyên Số nguyên
%f Số thực Số thực
%o Số nguyên Số bát phân
%s Chuỗi Chuỗi
%u Số nguyên Số nguyên không dấu
%x Số nguyên Số thập lục phân thường
%X Số nguyên Số thập lục phân hoa
echo()
print()
printf()
sprintf() printf("$%.2f", 43.2); // $43.20
40
Xuất dữ liệu ra trình duyệtXuất dữ liệu ra trình duyệt• Cú pháp:
string sprint(string format [, mixed args])
• Ví dụ:
echo()
print()
printf()
sprintf()
$cost = sprintf("$%.2f", 43.2);
// $cost = $43.20
41
Xuất dữ liệu ra trình duyệtXuất dữ liệu ra trình duyệt
echo()
print()
printf()
sprintf()
Xuất chuỗi “tĩnh”
Xuất chuỗi “động”
42
KIỂU DỮ LIỆU & TOÁN TỬKIỂU DỮ LIỆU & TOÁN TỬNội dung 2.4
43
Kiểu dữ liệuKiểu dữ liệu• boolean (bool)• integer (int)• double (float, real)• string
• array• object
1 Biến trong PHP có thể lưu bất kỳ kiểu dữ liệu nào
44
Kiểu dữ liệu – Kiểm tra kiểuKiểu dữ liệu – Kiểm tra kiểu
gettype is_string isset
is_integer is_array unset
is_double is_object empty
45
Kiểm dữ liệu – số nguyên, số thựcKiểm dữ liệu – số nguyên, số thực• Một số hàm xử lý số
– abs(…) pow(…,…) decbin(…) srand(seed)– ceil(…) sqrt(…) bindec(…) rand()– floor(…) log(…) dechex(…) rand(min,
max)– round(…) log10(…) hexdec(…) …
• Ví dụ// Phát sinh một "mầm" ngẫu nhiên$seed = (float) microtime( ) * 100000000;
// Khởi tạo bộ phát sinh số ngẫu nhiênsrand($seed);
// In con số ngẫu nhiênecho rand(); // Giá trị ngẫu nhiên từ 0 đến getmaxrand( )echo rand(1, 6); // Giá trị ngẫu nhiên từ 1 đến 6
46
Kiểu dữ liệu – ChuỗiKiểu dữ liệu – Chuỗi
• Chuỗi được chứa trong nháy đơn ‘ ’ hoặc nháy kép “ ”
• Một số hàm xử lý chuỗi– printf(…) trim(…) strtolower(…) – str_pad(…) str_replace(…) strtoupper(…) – Strlen(…) substr(…) strcasecmp(…)
• Toán tử nối chuỗi: dấu chấm .
$s = "Hello"." World"; // $s = "Hello World"
47
Kiểu dữ liệu – ChuỗiKiểu dữ liệu – Chuỗi
• Phân biệt dấu nháy đơn và nháy kép (print/printf/echo)
$user = "Bill";print 'Hi $user';print "Hi $user";print 'Hi'.$user;print 'Hi'.'$user';
Hi $user
Hi Bill
Hi $user
Hi Bill
Chuyển kiểu dữ liệuChuyển kiểu dữ liệu– Cách 1: (automatic)
– Cách 2: (datatype) $var– Cách 3: settype($var, "datatype")
$var (int)$var (bool)$var (string)$var
null 0 false ""
true 1 "1"
false 0 ""
"6 feet" 6 true
"foo" 0 true 48
$var = "100" + 15;
$var = "100" + 15.0;
$var = 100 + 15.0;
$var = 39 + " Steps";
$var = "Hello" + " World";
115 integer
115 double
115 double
39 integer
0 integer
49
Toán tửToán tửLoại Toán tử Ghi chú
new
. [ ] ( )
Toán học + - * / % ++ --
So sánh < > <= >= != == === !==
Luận lý && || ?: , !
Xử lý bit ~ << >> >>> AND OR XOR
Gán = += -= *= /= %= >>= <<= &= |= ^= .=
Ép kiểu (kiểu dữ liệu) (int) (double) (string)…
50
CẤU TRÚC ĐIỀU KHIỂNCẤU TRÚC ĐIỀU KHIỂNNội dung 3
- Từ khóa- Điều kiện chọn- Điều kiện lặp- Lệnh nhúng mã nguồn
51
Từ khóa break, continue, gotoTừ khóa break, continue, goto• break : Ngắt xử lý của khối lệnh / vòng lặp• continue : Tiếp tục bước kế tiếp của vòng lặp
• goto : Nhảy đến nhãn chỉ định PHP 5.3 trở lên
return;
52
Cấu trúc if elseCấu trúc if elseif (condition) { statement[s] if true} else{ statement[s] if false}
if (condition) { statement[s]} elseif (condition) { statement[s]}
$x isn’t less than 4
53
Cấu trúc switchCấu trúc switchswitch (expression)
{
case label :
statementlist
break;
case label :
statementlist
break;
...
default :
statementlist
} You picked menu three You picked menu four
54
Cấu trúc whileCấu trúc whilewhile (expression) {
statements}
do
{
statements
}while (expression);
55
Cấu trúc forCấu trúc forfor ([initial expr]; [condition]; [update expr]) {
statement[s] inside loop}
56
Cấu trúc foreachCấu trúc foreachforeach (array as variable) {
statements }
57
LỆNH NHÚNG DỮ LIỆULỆNH NHÚNG DỮ LIỆU
58
Lệnh nhúng dữ liệuLệnh nhúng dữ liệu
• include, include_once, require, require_once
• Cú pháp:
lệnh_nhúng(File_Web_path);
• Được sử dụng để nhúng trực tiếp một đoạn mã lệnh PHP/HTML từ một file PHP/HTML khác vào vị trí chèn lệnh nhúng này
• Ứng dụng:– Tái sử dụng code– Làm template cho Web
59
03_IncReq_MainTestInc.php
03_IncReq_MainTest.php
60
03_IncReq_MainTestInc.php
03_IncReq_MainTest.php
Bỏ được không?
Không
Chèn HTML ? Được
61
03_IncReq_MainTest.php
Sai đường dẫn ?
62
Thông báo lỗi tìm file
Vẫn tiếp tục nạp phần còn lại
Chặn lỗi ?
63
03_IncReq_MainTest.php
@
64
Ngăn chặn lỗi trong PHPNgăn chặn lỗi trong PHP
• Sử dụng hàm kiểm tra file– bool file_exists(string FilePath)
• Sử dụng từ khóa @ trước hàm gây lỗi.
• Sử dụng bổ sung– int mysql_errno(): Lấy mã lỗi– string mysql_error(): Lấy thông báo lỗi php
• Gặp các trường hợp lỗi nghiêm trọng– int die(string msg): ngừng biên dịch PHP
65
Phân biệt các lệnh nhúng dữ liệuPhân biệt các lệnh nhúng dữ liệuinclude include_once require require_once
Bắt buộc file phải có x x
Chèn nhiều lần x x
Chèn 1 lần x x
include / include_once require / require_once
Ứng dụng – Template layout 1Ứng dụng – Template layout 1
66
leftmenu.php
topmenu.php
footer.php
index.php search.php pays.php
67
Ứng dụng – Template layout 2Ứng dụng – Template layout 2
echo $Banner;
echo $Footer;
echo $Menu; echo $Content;
template.php
68
echo $Banner;
echo $Footer;
echo $Menu;
echo $Content;
template.phpleftmenu.php
$Temp = “…”;
footer.php
$Temp = “…”;
topmenu.php
$Temp = “…”;
69
topmenu.php
topmenu.php
70
echo $Banner;
echo $Footer;
echo $Menu;
echo $Content;
template.php
index.php?action=Timkiem
71
HÀM & MẢNGHÀM & MẢNGNội dung 4
HàmGọi hàmKhai báo hàmThư viện hàm cho PHPMảngKhai báo mảngThêm / xóa phần tửCác thao tác khác trên mảng
72
HÀM TRONG PHPHÀM TRONG PHPNội dung 4.1
73
Gọi hàmGọi hàm
• VD: Hàm tính lũy thừa
• Danh sách hơn 150 hàm của PHP– Offline: http://www.php.net/download-docs.php
– Online: http://www.php.net/manual/en/extensions.alphabetical.php
74
Khai báo hàmKhai báo hàmfunction functionName(){ function-body}
functionName Tên hàm : tuân theo quy tắc đặt tên biến
xuatDanhSachSV()
xuat_Danh_Sach_SV()XuatDanhSachSV()
xuatdanhsachsv() xuat_DanhSachSV()
75
Khai báo hàm có tham sốKhai báo hàm có tham sốfunction functionName(parameters){ function-body}
parameters Danh sách tham số Cách nhau bằng dấu phẩy Khai báo tên tham số theo quy tắc khai báo tên biến
76
Khai báo hàm có tham số kiểu tham chiếuKhai báo hàm có tham số kiểu tham chiếu
function functionName(parameters, ¶meters){ function-body}
?
77
Khai báo hàm có tham số mặc địnhKhai báo hàm có tham số mặc địnhfunction functionName(parameters, paremeter=value){ function-body}
78
Khai báo hàm có giá trị trả vềKhai báo hàm có giá trị trả vềfunction functionName(parameters, paremeter=value){ function-body return value;}
value
Giá trị trả về của hàm có thể là Giá trị đơn Giá trị phức
79
Thư viện hàm cho PHPThư viện hàm cho PHP
• Lưu tất cả hàm trong một/nhiều file php thuần
• Lưu và Đặt tên file theo chủ đề• Sử dụng kết hợp với include_once (..)
80
MẢNGMẢNGNội dung 4.2
81
MảngMảng
• Là một tập các phần tử có cùng tính chất
• Mỗi phần tử có thể có – Cùng kiểu dữ liệu– Khác kiểu dữ liệu
• Một mảng gồm 2 phần thông tin– Thông tin chỉ mục– Thông tin giá trị tương ứng với chỉ mục
• Mảng đánh chỉ mục từ 0
82
Phân loại mảngPhân loại mảng
Gồm 2 loại• Mảng có chỉ mục là kiểu số (Numberd Array)• Ví dụ :
– Colors = {“Red”, “Green”, “Blue”, “Yellow”}– SoLuong = {12, 33, 3, 16}
• Mảng có chỉ mục là kiểu tên (Associated Array)
• Ví dụ :– GioHang = {“Red”=>12, “Green”=>33, “Blue”=>3, “Yellow=>16}
83
Khai báo mảngKhai báo mảng
• Không cần khai báo số lượng phần tử• Không cần phải khai báo mảng trước khi sử dụng
• Khai báo tường minh thông qua array()• Ví dụ:
– $colors = array(“red”, “green”, “blue”, “yellow”);– echo $colors[2];
• Khai báo không tường minh• Ví dụ:
– $colors[] = “red”;– $colors[] = “green”;– $colors[] = “blue”;
84
Khai báo mảngKhai báo mảng
• Khai báo mảng với mảng chỉ mục số có giá trị trong 1 khoảng cho trước
• array range(start, end, step)
• Ví dụ:– $number = range(0, 10);// $number = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);– $oddnumber = range(1, 10, 2);// $oddnumber = array(1, 3, 5, 7, 9);– $alph = range(“A”, “D”);// $oddnumber = array(“A”, “B”, “C”, “D”);
85
Rút trích nội dung mảngRút trích nội dung mảng
• Sử dụng toán tử []
• Sử dụng hàm void list(items)• Ví dụ:
– $prod = array(“redz”, “1”, 77, “blue”);– list($name, $id, $quantity, $color) = $prod;