PHP và MysQL cơ bản

Hướng dẫn lập trình PHP & MySQL cơ bản cho các bạn mới làm quen với host. Hướng dẫn này sẽ giúp các bạn dễ dàng hơn trong việc tiếp cận mới các mã nguồn sau này.



I. Các phần mềm cần thiết

1. Đối với máy tính:

- Một phần mềm tạo localhost (host trên máy tính) dùng để test code. Có rất nhiều phần mềm tạo host hiện nay, nhưng đối với những người mới tập thì nên sử dụng PHP lemon server, đây là phần mềm khá gọn nhẹ và mình dùng cũng khá lâu rồi.

Các bạn tải về tại trang chủ 

https://sites.google.com/site/phplemonserver

- Một phần mềm soạn thảo code. Phần mềm tốt nhất hiện nay là Notepad++, hỗ trợ rất nhiều ngôn ngữ lập trình. Các bạn tải về tại: 

https://notepad-plus-plus.org

Lưu ý: khi tạo một tập tin mới bằng Notepad++, để tránh lỗi mã hóa, các bạn hãy chọn trên thanh công cụ Encoding -> UTF-8 without BOM


Vậy là xong phần chuẩn bị. Các bạn hãy cài đặt và khởi động PHP lemon server lên:

- bấm "Start Server" để khởi động localhost

- bấm "WWW" để mở thư mục gốc của host, tại đây hãy xóa tất cả và tạo tập tin index.php, sau đó viết vài dòng vào rồi lưu lại

- sau đó truy cập 127.0.0.1 (hoặc localhost) từ trình duyệt để thử nhé


2. Đối với điện thoại

- Đối với điện thoại, các bạn không thể tạo localhost được mà chỉ có thể viết code online hoặc viết bằng trình soạn thảo rồi up lên host (cách này lâu hơn cách viết online). Đối với cách viết online, các bạn có thể sử dụng trình quản lý sẵn có của host, sử dụng phần mềm FTP hoặc sử dụng mã nguồn để quản lý. Những mã nguồn này sẽ được giới thiệu sau, các bạn chú ý cập nhật tại Phonho.net nhé :D


II. PHP cơ bản

PHP là ngôn ngữ lập trình server side, tức là chạy trên server, và trả về dữ liệu trình duyệt dữ liệu theo yêu cầu người dùng. Cấu trúc một tập tin PHP như sau:

+ Có phần mở rộng là .php

+ Tập tin PHP có thể chứa mã HTML

+ Code PHP chỉ được xử lý khi đặt trong cặp <?php và ?>. Nếu toàn bộ tập tin chỉ chứa mã PHP thì có thể không cần đóng thẻ ?>. Ví dụ:

<!DOCTYPE html>

<html>

<body>

<h1><?echo 'Phố Nhỏ'; ?></h1>

<?php

echo 'Chào các bạn';

?>

</body>

</html>

+ Cuối các dòng lệnh PHP phải có dấu ;


1. Biến trong PHP

- Biến như các ngôn ngữ lập trình khác, dùng để lưu các giá trị.

- Biến trong PHP phải có ký tự $ ở trước, sau đó là tên biến.

- Tên biến có thể sử dụng chữ cái (A-z), chữ số (0-9) và dấu gạch dưới ( _ ), và phải bắt đầu bằng chữ cái hoặc dấu ( _ ). Ví dụ: $_a, $b là biến đúng, $1ab là biến sai

- Tên biến phân biệt chữ hoa và chữ thường. Ví dụ $name và $Name là 2 biến khác nhau

- Giá trị của biến có thể là số, ký tự (chuỗi), mảng, ...

- Để đặt giá trị cho biến trong php, ta làm như sau:

$ten_bien = gia_tri;


2. Các toán tử trong PHP

a. Toán tử toán học

+ : phép cộng

- : phép trừ

* : phép nhân

/ : phép chia

% : chia lấy số dư

= : gán giá trị

x += y : x = x + y;

x -= y : x = x - y;

x *= y : x = x * y;

x /= y : x = x / y;

x %= y : x = x % y;

b. Toán so sánh:

== : bằng

=== : bằng và cùng loại biến. Ví dụ. 1 == '1' là đúng nhưng 1 === '1' là sai vì khác loại biến

!= : khác, ngược lại với ==

!== : khác giá trị hoặc khác loại, ngược với ===

> : lớn hơn

< : bé hơn

>= : lớn hơn hoặc bằng

<= : bé hơn hoặc bằng


c. Tăng/giảm giá trị:

++$x : tăng giá trị của x, sau đó xuất ra x. Ví dụ:

$x = 1;

echo ++$x; // 2

echo $x; // 2

$x++ : xuất ra x, sau đó mới tăng giá trị của x. Ví dụ:

$x = 1;

echo $x++; // 1

echo $x; // 2

--$x và $x-- tương tự trên nhưng là giảm giá trị


d. Toán tử logic ($x, $y có thể là biến hoặc biểu thức):

- $x and $y hoặc $x && $y : đúng nếu cả $x và $y đều đúng

$x = 1;

$y = 2;

if($x > 0 && $y > 0){

echo 'Đúng';

}else{

echo 'sai';

}

- $x or $y hoặc $x || $y : đúng nếu $x đúng hoặc $y đúng

$x = 1;

$y = 2;

if($x > 1 && $y > 1){

echo 'Đúng';

}else{

echo 'sai';

}

- !$x : phủ định của $x; đúng nếu $x sai, sai nếu $x đúng

$x = 2;

if(!($x > 0)){

echo 'Đúng';

}else{

echo 'Sai';

}

Vì $x > 0 là đúng nên kết quả hiện ra sẽ là Sai


CHÚ Ý: trong toán tử logic

- các giá trị số 0, chuỗi trống, mảng trống đều tương đương với kết quả sai

0 ~ '' ~ array() ~ FALSE

- các giá trị số lớn hơn 0, chuỗi không rỗng, mảng có phần tử đều tương đương với kết quả đúng

1 ~ 'php' ~ array('php', 'mysql') ~ TRUE

Ví dụ:

$a = 'php';

if($a){

echo 'Đúng';

}else{

echo 'Sai';

}


e. Toán tử dành cho chuỗi:

. : nối 2 chuỗi lại với nhau

$a = 'php';

$b = ', mysql';

echo $a . $b;

$c = $a . $b;

echo $c;

LƯU Ý: khi sử dụng ( . ), nếu biến thuộc kiểu số cũng được coi là một chuỗi. Ví dụ:

$a = 'Số thứ tự: ';

$b = 123;

echo $a . $b;

.= : gán chuỗi sau khi nối

$x .= $y ~ $x = $x . $y;

$a = 'php';

$b = ', mysql';

$a .= $b;

echo $a;


Vậy là đã xong phần cơ bản về php. Sau đây chúng ta sẽ nghiên cứu sơ qua về MySQL


III. Làm quen với MySQL

- SQL là một ngôn ngữ chuẩn để truy cập cơ sở dữ liệu (CSDL). Có thể dùng để truy cập, xóa, sửa, ... CSDL. Các bạn nào đã từng học Microsoft Access (tin học 12) thì sẽ hiểu cấu trúc CSDL như thế nào.


1. Truy cập CSDL

- Đối với các bạn sử dụng Panel của host thì trước hết các bạn cần tạo tài khoản PHP MyAdmin, bằng cách tìm đến mục MySQL Database rồi nhập các thông tin theo mẫu. Các bạn cần ghi nhớ thông tin này để sử dụng cho việc kết nối đến CSDL. Sau đó truy cập vào mục PHP MyAdmin để đến trang quản lý CSDL


- Đối với localhost, tài khoản PHP MyAdmin đã được tạo sẵn (tài khoản này được viết trong hướng dẫn của phần mềm mà các bạn cài, thường là root - 123456), việc các bạn cần làm truy cập vào localhost/phpmyadmin và đăng nhập với tài khoản đó để vào trang quản lý CSDL. Tại đây, bạn cần tạo một CSDL mới trước khi làm việc với nó.

Tại mục Create new database: nhập tên CSDL, tại mục Collation: chọn utf-8_general_ci, sau đó nhấp Create. Vậy là bạn đã tạo thành công một CSDL mới.


2. Tạo, sửa, xóa bảng

- Việc này hoàn toàn có thể thực hiện bằng mã PHP, tuy nhiên chúng ta sẽ thực hiện ngay trong PHP MyAdmin để khỏi tốn công nghiên cứu.

a. Tạo bảng

- Trước khi tạo bảng, chúng ta cần xác định xem những thông tin nào cần lưu trữ, ví dụ với bảng thanhVien, chúng ta cần có id, taiKhoan, matKhau, email, diaChi. Chúng ta sẽ cần tạo bảng với 5 trường (hay 5 cột).

- Tìm đến mục Create new table on database trong CSDL, nhập tên bảng và số cột là 1 (để làm quen trước) sau đó nhấn "Go". Sau đó điền theo thứ tự:

+ Field (tên trường): id

+ Type (Kiểu dữ liệu): int

+ Length (Độ dài): 10

+ Default (Giá trị mặc định): None

+ Attributes (Thuộc tính): UNSIGNED (Số không âm)

+ AUTO_INCREMENT (tự động tăng): tích vào

Các trường còn lại:

+ Type: varchar (kiểu văn bản)

+ Length: nick và mật khẩu nên là 32, còn các trường khác thì đặt sao cho hợp lý

+ Default: As defined: nhập 0 ở ô xuất bên dưới nếu kiểu dữ liệu là số, để trống nếu và văn bản.


Vậy là chúng ta đã tạo xong bảng rồi. Bây giờ chúng ta sẽ làm quen với các thao tác với CSDL.


b. Xóa, sửa bảng

- Cái này đơn giản, các bạn tự tìm hiểu nhé :)


3. Kết nối đến CSDL

- Để thêm, sửa hay xóa dữ liệu trong CSDL từ trang PHP, chúng ta cần kết nối đến CSDL. Giống như việc đăng nhập trên web vậy. Sau đây là đoạn mã dùng để kết nối vào CSDL

<?php

$db_host = 'localhost'; // MySQL host

$db_user = 'root'; // tài khoản MySQL

$db_pass = ''; // Mật khẩu MySQL

$db_name = 'demo'; // Tên CSDL

$connect = mysql_connect($db_host, $db_user, $db_pass) or die('Không thể kết nối MySQL');

mysql_select_db($db_name) or die('Không thể chọn CSDL');

mysql_query('SET NAMES "utf8"', $connect);

?>


4. Ghi dữ liệu vào CSDL

- Câu lệnh để ghi dữ liệu vào CSDL:

mysql_query('INSERT INTO `tên bảng` SET `tên trường 1` = "giá trị 1", `tên trường 2` = "giá trị 2"');

Chú ý rằng bạn chỉ cần SET những trường cần thiết chứ ko cần SET tất cả. Ví dụ:

mysql_query('INSERT INTO `thanhVien` SET `taiKhoan` = "admin", `matKhau` = "123456"');

Một chú ý nữa là đoạn query trên là một chuỗi, vì vậy bạn có thể sử dụng tất cả các hàm PHP tương ứng vào đoạn đó. Ví dụ:

$taiKhoan = 'admin';

$matKhau = '123456';

mysql_query('INSERT INTO `thanhVien` SET `taiKhoan` = "'. $taiKhoan .'", `matKhau` = "'. $matKhau .'"');

- Mỗi dữ liệu được chèn vào như trên được gọi là một bản ghi (hay hàng).


5. Chỉnh sửa dữ liệu

- Câu lệnh để chỉnh sửa dữ liệu trong MySQL

mysql_query('UPDATE `tên bảng` SET `tên tường 1` = "giá trị 1", `tên trường 2` = "giá trị 2" WHERE (điều kiện)');

Ví dụ:

mysql_query('UPDATE `thanhVien` SET `matKhau` = "abcdef", `diaChi` = "Ha Noi" WHERE `id` = "1"');

CHÚ Ý:

- bạn có thể chỉnh sửa cột nào cũng được, các cặp `tên trường` = "giá trị mới" cách nhau bởi dấu phẩy ( , )

- đoạn WHERE (điều kiện) dùng để xác định những bản ghi nào sẽ được sửa, các bạn có thể thay bằng các trường khác, ví dụ: WHERE `taiKhoan` = "admin". Nếu không có đoạn đó, tất cả các bản ghi sẽ được sửa.


6. Xóa dữ liệu

- Câu lệnh để xóa dữ liệu

mysql_query('DELETE FROM `tên bảng` WHERE (điều kiện)');

- Tương tự như chỉnh sửa, WHERE dùng để xác định vị trí bản ghi sẽ bị xóa, nếu không có đoạn đó thì tất cả dữ liệu trong bảng đó sẽ bị xóa.

CHÚ Ý:

- Tất cả các lệnh thêm, sửa, xóa ở trên khi được gọi sẽ được xử lý ngay trên MySQL, do đó chúng ta không thấy bất cứ gì hiện ra trong trang web chỉ chứa những đoạn lệnh trên (trừ khi có lỗi sẽ báo ra).


7. Truy xuất dữ liệu

- Câu lệnh để truy xuất dữ liệu:

mysql_query('SELECT `tên trường 1`, `tên trường 2` FROM `tên bảng` WHERE (điều kiện)');

- Ví dụ để lấy dữ liệu của một thành viên có id = 1:

$req = mysql_query('SELECT `taiKhoan`, `email`, `diaChi` FROM `thanhVien` WHERE `id` = "1"');

if($res = mysql_fetch_assoc($req)){

echo 'Tài khoản: ' .$res['taiKhoan'] .'<br/>' .

'Email: ' . $res['email'] . '<br/>' .

'Địa chỉ: ' . $res['diaChi'] . '.';

}else{

echo 'Thành viên không tồn tại!';

}

- Ví dụ lấy dữ liệu nhiều bản ghi:

$req = mysql_query('SELECT `taiKhoan`, `email`, `diaChi` FROM `thanhVien`');

if(mysql_num_rows($req)){

while($res = mysql_fetch_assoc($req)){

echo 'Người dùng <b>' .$res['taiKhoan'] .'</b> có địa chỉ ' . $res['diaChi'] . '<br/>.';

}

}else{

echo 'Chưa có thành viên nào!';

}

CHÚ Ý:

- để chọn tất cả các trường trong bảng, thay vì liệt kê tên từng trường, chúng ta có thể dùng SELECT * FROM `tên bảng` WHERE (điều kiện). Tuy nhiên cần cân nhắc để lấy những trường cần thiết để tiết kiệm tài nguyên cho máy chủ.

- hàm mysql_num_rows để đếm số bản ghi được truy xuất

- hàm mysql_fetch_assoc để chuyển dữ liệu truy xuất được thành mảng. Sau khi dùng hàm này thì dữ liệu xuất ra sẽ có dạng:

$res = array(

'tên trường 1' => 'giá trị 1',

'tên trường 2' => 'giá trị 2'

)

Bài viết đến đây là kết thúc. Mọi thắc mắc vui lòng gửi lại tại đây!


Nguồn: Mr Ken - Phonho.net