PHP cơ bản

Chia sẻ bởi Nguyễn Việt Vương | Ngày 29/04/2019 | 170

Chia sẻ tài liệu: PHP cơ bản thuộc Bài giảng khác

Nội dung tài liệu:

PHP cơ bản
Những vấn đề cơ bản
Lịch sử
Cài đặt: sử dụng WAMP
Ngôn ngữ:PHP
PHP và MySQL
PHP và Hướng đối tượng

PHP là gì ?
Một ngôn ngữ (viết từ C++, mã nguồn mở) có thể nhúng vào HTML, tạo ra ứng dụng WEB.
Ví dụ:

    
        Example
    
    

                echo "Hi, I`m a PHP script!";
        ?>

    

PHP là gì ?
Với là dấu hiệu dùng để nhận biết đoạn mã PHP
Echo dùng để xuất ra 1 nội dung cho file HTML.
PHP là ngôn ngữ phục vụ xử lý tại WEB Server (khác với JavaScript thông thường là Client Script)
 Không thể biết được mã PHP tại Server (được trả về cho Client chỉ là mã HTML)
Những ưu điểm nổi bật
Miễn phíTạo nên một sức mạnh rất lớn của PHP.
Từ Internet, chúng ta có thể thu thập rất nhiều mã nguồn mở PHP.
Ngôn ngữ PHP đơn giản, giống C, Perl
Hỗ trợ hầu hết các cơ sở dữ liệu
Chạy nhanh
Web Server hỗ trợ PHP
Apache
Microsoft IIS
PWS (Personal WebServer)
iPlant server、Oreilly Website Pro Server、Caudium、Xitami、OmniHTTPd
….

Các hướng tiếp cận lập trình
Lập trình theo cấu trúc
Lập trình hướng đối tượng OOP
Lập trình AOP (aspect-oriented programming)

Những cơ sở dữ liệu hỗ trợ
Adabas D
Ingres
Oracle (OCI7 and OCI8)
dBase
InterBase
Ovrimos
Empress
FrontBase
PostgreSQL
FilePro (read-only)
mSQL

Solid
Hyperwave
Direct MS-SQL
Sybase
IBM DB2
MySQL
Velocis
Informix
ODBC
Unix dbm
Lịch sử PHP
Ra đời năm 1994 - 1995 do Rasmus Lerdorf phát triển.
Phiên bản thứ hai PHP/FI (1%)
1997:Phiên bản PHP3 của Zeev Suraski và Andi Gutmans (10%) – 1998/6 chính thức công bố.

Lịch sử PHP
Mùa đông 1998, PHP4 của Zend 
Zend Engine,
Phiên bản cuối cùng: (PHP4.4.1)
PHP5 (PHP5.1.3) – 05/2006

Ngôn ngữ PHP - Cú pháp cơ bản
Phân biệt với ngôn ngữ HTML

1.  

2.  
This is a shortcut for "

3.  

4.  <% echo ("You may optionally use ASP-style tags"); %>
    <%= $variable; # This is a shortcut for "<% echo . . ." %>
(hỗ trợ từ 3.0.4)

8 kiểu dữ liệu trong PHP
4 kiểu định lượng
Boolean
Integer
Float
String


2 kiểu tổ hợp
Array
Object
2 kiểu đặc biệt
Resource
NULL
Kiểu BOOLEAN
Nhận 2 giá trị TRUE - FALSE
Ví dụ:
// == is an operator which test equality and returns a boolean
if ($action == "show_version") {
    echo "The version is 1.23";
}

// this is not necessary...
if ($show_separators == TRUE) {
    echo "
";
}

// ...because you can simply type
if ($show_separators) {
    echo "
";
}

Chuyển đổi kiểu dữ liệu BOOLEAN
Khi hoán chuyển thành kiểu BOOLEAN, những kiểu dữ liệu với giá trị sau sẽ được coi như là FALSE:
Kiểu số nguyên = 0
Kiểu số thực = 0.0
Chuỗi rỗng hoặc chuỗi “0”
Kiểu NULL
Kiểu mảng không có phần tử
Kiểu đối tượng chưa được khởi tạo..
Kiểu số nguyên
Đây là tập hợp {… ,-2,-1,0,1,2….}
Ta có thể dùng số thập phân, số thập lục phân, số bát phân
Ví dụ:
$a = 1234; # số thập phân
$a = -123; # một số âm
$a = 0123; # số bát phân (= số 83 trong thập phân)
$a = 0x1A; # số thập lục phân(bằng số 26 trong thập phân)
?>
Biến trong PHP
Biến trong PHP được bắt đầu bằng dấu "$", theo sau đó là tên biến. Ví dụ: $nguyen, $phi
Tên biến hợp lệ phải bắt đầu là một chữ cái hay một đường gạch dưới (_), theo sau đó có thể là bất kỳ chữ cái, số hoặc là (_).
Ví dụ :
$var = "Bob";
$Var = "Joe";
echo "$var, $Var"; // outputs "Bob, Joe"
$4site = `not yet`; // không hợp lệ
$_4site = `not yet`; // hợp lệ

Toán tử toán học
Một số hàm toán học
Abs: trị tuyệt đối
Base_convert: chuyển đổi 1 số giữa các cơ số.
Bindec: chuyển đổi hệ nhị phân sang thập phân
Ceil: làm tròn tăng các phân số
Cos: Côsin
Floor: làm tròn giảm các phân số
Một số hàm khác:
Exp, fmod, getrandmax,hexdec, log10, pow, pi, sin, sqrt, srand,…

Các toán tử GÁN
Cơ bản nhất là: =
+=, -=, *=, /=, .=, %=, &=, |=, ^=, <,<=, >, >=
++$value: tăng trước
$value++: tăng sau
--$value: giảm trước
$value--: giảm sau

Các toán tử chuỗi
Toán tử ghép nối: .
Toán tử gán ghép nối: .=
Các toán tử Bit
And: $a & $b
Or: $a | $b
XOR: $a ^ $b
Not: ~ $a

Shift left: $a << $b
Shift right: $a >> $b

Các toán tử so sánh
Các toán tử logic
Các câu lệnh điều khiển
Câu lệnh IF
If (expression)
Câu lệnh
Câu lệnh ELSE
If (exp) {
Câu lệnh
} else {
Câu lệnh
}
Câu lệnh ELSEIF
If (exp) {
câu lệnh
} elseif (exp) {
câu lệnh
} elseif (exp) {

} else {
Câu lệnh
}
Toán tử tam phân
$res = điềukiện ? Exp1 : exp2;
Ví dụ:
$value = 14;
$output = $value<10 ? “0x”.$value : “0x”.chr($value-10+65);
Echo “In hexadecimal, $value=$output”;
?>
Sử dụng lệnh switch
Ví dụ:
$task = 4;
Switch($task) {
Case 1:
echo “Số một”; break;
Case 2:
echo “Số hai”; break;
..

Case 6:
echo “Số sáu”; break;
Default:
echo “Số lớn”; break;
}
?>
Vòng lặp FOR
For (exp1; exp2; exp3) câu lệnh
Ví dụ:
For ($v1=2, $v2=2; $v1<5 && $v2<5; $v1++,$v2++){
Echo “$v1x$v2=“, $v1*$v2, “
”;
}
Kết quả:
2 x 2 = 4
3 x 3 = 9
4 x 4 =16
Vòng lặp WHILE
While (exp) câu lệnh;
Ví dụ:
$value = 1;
While ($value<10) {
Echo “New value:”, $value, “
”;
$value *= 2;
}

Một số dạng vòng lặp khác
Do
Câu lệnh
While (exp)
Foreach (array_exp as $value) câu lệnh
Foreach (array_exp as $key=>$value) câu lệnh

Lưu ý: break, continue
Chuỗi ký tự
Một số hàm thông dụng
Chr: trả về ký tự đặc biệt ở dạng mã ACSII
Echo: Hiển thị một hay nhiều chuỗi
Explode: tách một chuỗi trên một chuỗi con
Implode: nối các phần tử mảng với một chuỗi
Ltrim, rtrim, trim: bỏ khoảng trắng..
Ord: trả về trị ACSII của ký tự
Strlen: chiều dài của một chuỗi
Một số hàm khác: str_repeat, str_replase, strchr, strcmp, strpos, strrev,…
Xem thêm: định dạnh chuỗi: %, b, c, d, u,…
Mảng trong PHP
Tập hợp các giá trị được lưu trữ dưới 1 tên, 1 phần quan trọng của PHP.
Chỉ số mảng có thể là số, chuỗi (numeric array, associative array)
Ví dụ:
$traicay[1] = “apple”;
$tenbien[“abc”] = 123;
Mặc định giá trị bắt đầu của mảng là: 0
Khai báo mảng
Cách 1:
"Dog","b"=>"Cat","c"=>"Horse");
print_r($a);
?>
Kết quả:
Array ( [a] => Dog [b] => Cat [c] => Horse )

Cách 2:
$a=array("Dog","Cat","Horse"); print_r($a);
?>
Kết quả:
Array ( [0] => Dog [1] => Cat [2] => Horse )
Vòng lặp đối với mảng
$a[0] = “an”; $a[1]=“binh”; $a[2]=“chinh”;
For ($i=0; $i Echo $a[$i],” ”;
}
Kết quả:
an
binh
chinh
Vòng lặp foreach
Foreach (arr_exp as $value) câu lệnh
Hoạt động: Gán một phần tử mới từ một mảng vào $value mỗi khi nó thông qua vòng lặp.
Foreach (arr_exp as $key$value) câu lệnh
Hoạt động: Đặt khóa của phần tử vào trong $key và giá trị của nó vào trong $value

Ví dụ: vòng lặp foreach
$a = array(“an”, “binh”, “chinh”);
Foreach ($a as $value) {
Echo “Value : $value ”;
}
Kết quả:
Value: an
Value: binh
Value: chinh
Ví dụ: vòng lặp foreach
$a = array(“an”, “binh”, “chinh”);
Foreach ($a as $key=>$value) {
Echo “Key: $key; Value : $value ”;
}
Kết quả:
Key 0: Value: an
Key 1: Value: binh
Key 2: Value: chinh
Một số hàm về mảng
array_combine: tạo ra một mảng bằng cách sử dụng một mảng dành cho các khóa và một mảng khác dành cho các giá trị.
array_rand: lấy 1 hay nhiều phần tử ngẫu nhiên ra khỏi một mảng.
Array_merge: hợp nhất hai hay nhiều mảng
Array_keys: trả về các khóa trong một mảng
Count: đếm số phần tử trong một mảng…
Forms với PHP
Để có thể truyền thông tin giữa các tập tin

File ABC.HTML



Name:
Age:


Tập tin PHP nhận biến
File welcome.php

Welcome .

You are years old.


Kết quả:
Welcome ABC.
You are 20 years old.
$_GET

Name:
Age:


Khi nhấn SUBMIT, Kết quả:
http://www.w3schools.com/welcome.php?name=ABC&age=20
Welcome .
You are years old!

$_POST

Name:
Age:


Khi nhấn SUBMIT, Kết quả:
http://www.w3schools.com/welcome.php
Welcome .
You are years old!

Lưu ý: $_REQUEST có thể dùng thay cho $_GET và $_POST

Làm việc với CSDL
Database (MySQL)
- Tạo CSDL
- Thêm / xóa bảng dữ liệu
- Thêm / xóa / cập nhật dòng dữ liệu
- Xem / truy vấn dòng dữ liệu
Web (PHP)
- Giao diện người dùng
- Mã nguồn: Thêm và truy vấn
- Mã nguồn: Xóa và cập nhật
Cú pháp cơ bản MySQL
SHOW DATABASES;
USE database_name;
SHOW TABLES;
DROP TABLE table_name;
Create MySQL Table
CREATE TABLE user (name varchar(9) NOT NULL,
id int(6) NOT NULL,
PRIMARY KEY (id),
UNIQUE (id)
);
Add/Delete/Update Table
INSERT INTO user VALUES (‘bond’, ‘007’);
DELETE FROM user WHERE id=‘007’;
UPDATE user SET name=‘BOND’ WHERE id=‘007’;
Query Database
SELECT * FROM user;
SELECT * FROM user WHERE name=‘BOND’;
SELECT DISTINCT name FROM user;
SELECT name, id FROM user ORDER BY name;
File cấu hình PHP
// configuration parameters

// database configuration
$host = "macneill.cs.tcd.ie";
$user = “username";
$pass = “password";
$db = “username_db";

// default contact person
$def_contact = “ABC";
?>
Sử dụng một tập tin dạng cấu hình để chứa những thông tin biến quan trọng.
Những trang PHP có thể liên kết tới nó và sử dụng những biến này.
Thêm dữ liệu vào CSDL













Title
Authors

Thêm dữ liệu vào CSDL (tt)
include("conf.php");
// form submitted so start processing it
$title = $_POST["title"];
$authors = $_POST["authors"];

// set up error list array & validate text input fields
$errorList = array();
$count = 0;
if (!$title) { $errorList[$count] = "Invalid entry: Title"; $count++; }
// set default value for contact person
if (!$contact) { $contact = $def_contact; }
// check for errors & if none found...
if (sizeof($errorList) == 0)
{
$connection = mysql_connect($host, $user, $pass) or die ("Unable to connect!");
mysql_select_db($db) or die ("Unable to select database!");
$query = "INSERT INTO papers (title, authors, description, comment, super, bibtex, url, genre) VALUES (`$title`, `$authors`, `$description`, `$comment`, `$super`,`$bibtex`,`$url`,`$genre`)";
$result = mysql_query($query) or die ("Error in query: $query. " . mysql_error());
echo "Addition successful. ";
// close database connection
mysql_close($connection);
}
else {// errors occurred}
?>
Truy vấn
CSDL
$connection = mysql_connect($host, $user, $pass) or die ();
mysql_select_db($db) or die ("Unable to select database!");
$query = "SELECT * FROM papers";
$result = mysql_query($query) or die ("Error in query”);
?>


// if records present
if (mysql_num_rows($result) > 0)
{
// iterate through resultset & print title with links to edit and delete scripts
while($row = mysql_fetch_object($result))
{
?>
edit/view | delete


title; ?>

-authors; ?>

pdf






}
}
// if no records present
else{}
mysql_close($connection);
?>
Xóa dòng dữ liệu trong PHP
include("conf.php");
// form not yet submitted, display initial form with values pre-filled
$id=$_GET[`id`];
{
// open database connection
$connection = mysql_connect($host, $user, $pass) or die ("Unable to connect!");
// select database
mysql_select_db($db) or die ("Unable to select database!");
// generate and execute query
$query = "DELETE FROM papers WHERE id = `$id`";
$result = mysql_query($query) or die ("Error in query: $query. " . mysql_error());
// close database connection
mysql_close($connection);
// print result
echo "Deletion successful";
}
Cập nhật
CSDL 1
$id=$_GET[`id`];
if (!$submit)
{
$connection = mysql_connect($host, $user, $pass) or die ("Unable to connect!");
mysql_select_db($db) or die ("Unable to select database!");
$query = "SELECT title, authors, description, comment, super, bibtex, url, genre FROM papers WHERE id = `$id`";
$result = mysql_query($query) or die ("Error in query: $query. " . mysql_error())
if (mysql_num_rows($result) > 0)
{
$row = mysql_fetch_object($result);
// print form with values pre-filled
?>
“ height=
















Title
Authors


Cập nhật
CSDL 2
include("conf.php");
// form submitted so start processing it
$title = $_POST["title"];
$authors = $_POST["authors"];

$id = $_POST["id"];
// set up error list array
$errorList = array();
$count = 0;
// validate text input fields
if (!$title) { $errorList[$count] = "Invalid entry: Title"; $count++; }
if (!$contact) { $contact = $def_contact; }
// check for errors, if none found...
if (sizeof($errorList) == 0)
{
$connection = mysql_connect($host, $user, $pass) or die ("Unable to connect!");
mysql_select_db($db) or die ("Unable to select database!");
$query = "UPDATE papers SET title = `$title`, authors = `$authors`, description = `$description`, comment = `$comment`, super = `$super`, bibtex = `$bibtex`, url = `$url`, genre = `$genre` WHERE id = `$id`";
$result = mysql_query($query) or die ("Error in query: $query. " . mysql_error());
// print result
echo “Update successful";
// close database connection
mysql_close($connection);
}
else{}
?>
Khai báo hướng đối tượng
class Circle
{
public $radius;
public function calcArea($radius)
{
return pi() * pow($radius, 2);
}
}
// Create a new instance of Circle
$c = new Circle();
// Change a property
$c->radius = 5;
// Use a method
echo `The area of the circle is ` . $c->calcArea(5);
?>
Khai báo hướng đối tượng
class Circle
{
public $radius;
public function calcArea()
{
return pi() * pow($this->radius, 2);
}
}
// Create a new instance of Circle
$c = new Circle();
// Change a property
$c->radius = 5;
// Use a method
echo `The area of the circle is ` . $c->calcArea();
?>
Kết quả hiển thị
Private property
class Circle
{
private $center = array(`x` => 0, `y` => 0);
private $radius = 1;
public function setRadius($radius)
{
$this->radius = $radius;
}
public function setCenter($x, $y)
{
$this->center[`x`] = $x;
$this->center[`y`] = $y;
}
public function calcArea()
{
return pi() * pow($this->radius, 2);
}
Attempt to access a private property
$c = new Circle();
$c->setCenter(0,0);
$c->setRadius(10);
echo "The area of the circle is " . $c->calcArea() . " ";
echo "The private value of radius is " . $c->radius;
?>
Contructors
class Circle
{
public function __construct()
{
// Perform actions when object is created
echo "A circle object is being created. ";
}
}
$c = new Circle();
?>
Contructors
class Circle
{
public $radius;
public function __construct($r)
{
// Perform actions when object is created
echo "A circle object is being created. ";
$this->radius = $r;
}
}
$c = new Circle(10);
?>
Destructors
class Circle
{
public function __construct()
{
// Perform actions when object is created
echo "A circle object is being created. ";
}
public function __destruct()
{
// Perform actions when object is destroyed
echo "A circle object is being destroyed. ";
}
}
$c = new Circle();
// Destroy the circle object
unset($c);
?>

Static
class Circle
{
private static $radius;
public static function setRadius($r)
{
self::$radius = $r;
}
public static function getRadius()
{
return self::$radius;
}
}
Circle::setRadius(5);
echo "Our statically accessed circle has a radius of " .
Circle::getRadius() . ". ";
?>
Contants
class Circle
{
const pi = 3.14159265359;
public function getPi()
{
return self::pi;
}
}

echo "The value of Pi in our Circle class is " . Circle::pi . " ";
$c = new Circle();
echo "To recap, the value of Pi in our Circle class is " .
$c->getPi()
?>
Assignments
class Circle
{
public $radius = 10;
}
// Create the original object and set its parameters
$original = new Circle();
// Create a cloned and assigned (by reference) object
$cloned = clone $original;
$assigned = $original;
// Now, change the original radius value:
$original->radius = 5;
// Show the state of all three objects
echo " Original: ";
print_r($original);
echo " Assigned: ";
print_r($assigned);
echo " Cloned: ";
print_r($cloned);
?>

Extends
class Shape
{
public $origin = array(`x`=>0, `y`=>0);
}
class Circle extends Shape
{
public $radius;
}
$c = new Circle();
print_r($c->origin);
?>
Extends
class Shape
{
public $origin = array(`x`=>0, `y`=>0);
public function getOrigin()
{
return $this->origin;
}
}
class Circle extends Shape
{
public function getOrigin()
{
return array(`x`=>1, `y`=>1);
}
}
$c = new Circle();
print_r($c->getOrigin());
?>
Parents
class Shape
{
public function draw()
{
echo "Shape::draw() has been called. ";
}
}
class Circle extends Shape
{
public function draw()
{
echo "Circle::draw() has been called. ";
parent::draw();
}
}
$c = new Circle();
$c->draw();
?>
Abstract
abstract class Shape
{
public $origin = array(`x`=>0, `y`=>0);
}
class Circle extends Shape
{
// Circle implementation
}
$c = new Circle();
print_r($c->origin);
$s = new Shape();
print_r($s->origin);
?>
Call
class Circle
{
public function __call($m, $a)
{
echo "The method " . $m . " was called. " .
"The arguments were as follows: ";
print_r($a);
}
}
$c = new Circle();
$c->undefinedmethod(1, `a`, 2, `b`);
?>
__Get __Set
class Circle
{
public function __get($p)
{
return $this->$p;
}
public function __set($p, $v)
{
$this->$p = $v;
}
}
$c = new Circle();
$c->nonexistent = 5;
echo "The value of our nonexistent property: "
.$c->nonexistent;
?>
__toString
class Circle
{
public function __toString()
{
return "Automatic string value for Circle";
}
}
$c = new Circle();
echo "The value of $c is: ";
echo $c;
?>
session_start();
class Circle
{
public $radius;
public $origin = array(`x`=>0, `y`=>0);
public function __sleep()
{
echo `zzzzz`;
return array(`radius`,`origin`);
}
public function __wakeup()
{
echo `good morning!`;
}
}
$c = new Circle();
$c->radius = 5;
$c->origin[`x`] = 3;
$c->origin[`y`] = 4;
echo `Preparing to sleep.....`;
$_SESSION[`c`] = serialize($c);
echo `
Wake the object`;
?>
Page1.php
session_start();
class Circle
{
public $radius;
public $origin = array(`x`=>0, `y`=>0);
public function __sleep()
{
echo `zzzzz`;
return array(`radius`,`origin`);
}
public function __wakeup()
{
echo `good morning!`;
}
}
echo `Rise and shine.....`;
$c = unserialize($_SESSION[`c`]);
echo `
The contents of our Circle object are:
`;
echo `Radius: ` . $c->radius . `
`;
echo `Origin: (` . $c->origin[`x`] . `,` . $c->origin[`y`] . `)`;
?>

Page2.php
Session in PHP
Starting a PHP Session


Storing a Session Variable
// store session data
$_SESSION[`views`]=1; ?>

//retrieve session data
echo "Pageviews=". $_SESSION[`views`];
?>

Output:
Pageviews=1
Tận dụng biến session
session_start(); if(isset($_SESSION[`views`]))
$_SESSION[`views`]=$_SESSION[`views`]+1;
else
$_SESSION[`views`]=1;
echo "Views=". $_SESSION[`views`];
?>
Destroying a session variables:
unset($_SESSION[`views`]);
Session destroyed:
session_destroy();

* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...

Người chia sẻ: Nguyễn Việt Vương
Dung lượng: | Lượt tài: 8
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)