Đối với mọi ngôn ngữ lập trình, Toán tử và Biểu thức luôn là những kiến thức cơ bản được sử dụng để xử lý các thao tác trong giai đoạn lập trình. Và PHP cũng không ngoại lệ, chúng vẫn có những kiến trúc cơ bản như một ngôn ngữ lập trình thông thường.

Toán tử và biểu thức trong PHP

A- Toán tử trong PHP:

1- Toán tử gán:

Chúng ta đã từng tiếp xúc với toán tử này bởi việc khởi tạo 1 biến. Nó gồm ký tự đơn =. Toán tử gán lấy giá trị của toán hạng bên phải gán nó vào toán hạng bên trái.

Ví dụ: $name = "Johny Nguyen";


2- Toán tử số học:

Là dạng phép tính giản đơn cộng, trừ, nhân, chia trong số học. Ngoài ra còn có phép chia lấy dư (%). Được sử dụng để lấy ra đơn vị dư của 1 phép toán.

Toán tử số học trong php

3- Toán tử so sánh:

Là toán tử được sử dụng để thực hiện các phép toán so sánh giữa hai số hạng. Chi tiết, xem bảng bên dưới.

Toán tử so sánh trong php

4- Toán tử logic:

Toán tử logic là các tổ hợp các giá trị boolean.

Ví dụ: Toán tử or trả về true nếu toán tử trái hoặc toán tử phải là true.
True || False là true.


Ta có bảng các toán tử như sau:


Toán tử logic trong php

5- Toán tử kết hợp:
Khi tạo mã PHP, chúng ta sẽ thường nhận thấy cần phải tăng hoặc giảm lượng biến một số nguyên nào đó. Bạn sẽ thường thực hiện điều này khi chúng ta đếm 1 giá trị nào đó trong vòng lặp.

Toán tử kết hợp trong php

B- Các biểu thức cơ bản trong PHP:

1- Biểu thức điều kiện:

Là biểu thức dùng kiểm tra 1 sự kiện. Nếu chúng thỏa điều kiện đó thì sẽ thực thi một hành động. Ngược lại sẽ là một hành động khác.

Cú pháp:
If(Điều kiện)
{
hành động
}


Ví dụ:


Các biểu thức cơ bản trong PHP

2- Vòng lặp trong PHP:

a- While()....

Phép lặp này yêu cầu phải thỏa mãn điều kiện thì mới thực thi được vòng lặp

Cú pháp:


While(điều kiện)
{
Hành động – thực thi
}


Ví dụ:


Vòng lặp trong PHP

b- Do....while():

Phép lặp này sẽ thực thi hành động ít nhất là một lần. Sau đó mới tiến hành kiểm tra điều kiện.

Cú pháp:


do
{
hành động thực thi
}while(điều kiện)

Ví dụ:

Vòng lặp trong PHP

c- For():

Phép lặp này là phép toán gộp các tham số. Giúp người lập trình giảm thiểu thời gian phải khai báo biến và các tham số khi thực thi việc lặp dữ liệu.

Cú pháp:


for( giá trị ; điều kiện ; biến tăng hoặc giảm)
{ Hành động }

Ví dụ:

Vòng lặp trong PHP

3- Biểu thức switch case:

Là biểu thức sử dụng để giảm thiểu quá trình xử lý dữ liệu nếu có quá nhiều phép toán if else.

Cú pháp:


Switch(biến)
{
Case giá trị 1: Hành động; Break;
…………
Case giá trị N: Hành động; Break;
Default: Hành động; Break;
}


Ví dụ:


Biểu thức switch case trong php

C- Tổng kết:

Kết thúc bài học này, các bạn ít nhiều đã nắm được những thuộc tính cơ bản của các phép toán học trong PHP, ngoài ra chúng ta cũng từng bước hiểu được cú pháp của từng biểu thức.

Đối với các vòng lặp, chúng ta cần hiểu và vận chúng một cách linh hoạt và mềm dẻo, phân biệt được while và do…while. Sử dụng hàm switch trong trường hợp có quá nhiều giá trị if…else trả về.


D- Bài tập áp dụng:

Bài tập 1:
Viết 1 trang web có giá trị từ 1->20. Hãy xuất ra trình duyệt những số chẵn nằm trong khoảng 1->20 đó.

Bài tập 2:
Xây dựng 1 website thỏa yêu cầu xuất ra bảng cửu chương từ 2 ->10.


Theo: qhonline

Bài 3: Toán tử và biểu thức trong PHP

Đối với mọi ngôn ngữ lập trình, Toán tử và Biểu thức luôn là những kiến thức cơ bản được sử dụng để xử lý các thao tác trong giai đoạn lập trình. Và PHP cũng không ngoại lệ, chúng vẫn có những kiến trúc cơ bản như một ngôn ngữ lập trình thông thường.

Toán tử và biểu thức trong PHP

A- Toán tử trong PHP:

1- Toán tử gán:

Chúng ta đã từng tiếp xúc với toán tử này bởi việc khởi tạo 1 biến. Nó gồm ký tự đơn =. Toán tử gán lấy giá trị của toán hạng bên phải gán nó vào toán hạng bên trái.

Ví dụ: $name = "Johny Nguyen";


2- Toán tử số học:

Là dạng phép tính giản đơn cộng, trừ, nhân, chia trong số học. Ngoài ra còn có phép chia lấy dư (%). Được sử dụng để lấy ra đơn vị dư của 1 phép toán.

Toán tử số học trong php

3- Toán tử so sánh:

Là toán tử được sử dụng để thực hiện các phép toán so sánh giữa hai số hạng. Chi tiết, xem bảng bên dưới.

Toán tử so sánh trong php

4- Toán tử logic:

Toán tử logic là các tổ hợp các giá trị boolean.

Ví dụ: Toán tử or trả về true nếu toán tử trái hoặc toán tử phải là true.
True || False là true.


Ta có bảng các toán tử như sau:


Toán tử logic trong php

5- Toán tử kết hợp:
Khi tạo mã PHP, chúng ta sẽ thường nhận thấy cần phải tăng hoặc giảm lượng biến một số nguyên nào đó. Bạn sẽ thường thực hiện điều này khi chúng ta đếm 1 giá trị nào đó trong vòng lặp.

Toán tử kết hợp trong php

B- Các biểu thức cơ bản trong PHP:

1- Biểu thức điều kiện:

Là biểu thức dùng kiểm tra 1 sự kiện. Nếu chúng thỏa điều kiện đó thì sẽ thực thi một hành động. Ngược lại sẽ là một hành động khác.

Cú pháp:
If(Điều kiện)
{
hành động
}


Ví dụ:


Các biểu thức cơ bản trong PHP

2- Vòng lặp trong PHP:

a- While()....

Phép lặp này yêu cầu phải thỏa mãn điều kiện thì mới thực thi được vòng lặp

Cú pháp:


While(điều kiện)
{
Hành động – thực thi
}


Ví dụ:


Vòng lặp trong PHP

b- Do....while():

Phép lặp này sẽ thực thi hành động ít nhất là một lần. Sau đó mới tiến hành kiểm tra điều kiện.

Cú pháp:


do
{
hành động thực thi
}while(điều kiện)

Ví dụ:

Vòng lặp trong PHP

c- For():

Phép lặp này là phép toán gộp các tham số. Giúp người lập trình giảm thiểu thời gian phải khai báo biến và các tham số khi thực thi việc lặp dữ liệu.

Cú pháp:


for( giá trị ; điều kiện ; biến tăng hoặc giảm)
{ Hành động }

Ví dụ:

Vòng lặp trong PHP

3- Biểu thức switch case:

Là biểu thức sử dụng để giảm thiểu quá trình xử lý dữ liệu nếu có quá nhiều phép toán if else.

Cú pháp:


Switch(biến)
{
Case giá trị 1: Hành động; Break;
…………
Case giá trị N: Hành động; Break;
Default: Hành động; Break;
}


Ví dụ:


Biểu thức switch case trong php

C- Tổng kết:

Kết thúc bài học này, các bạn ít nhiều đã nắm được những thuộc tính cơ bản của các phép toán học trong PHP, ngoài ra chúng ta cũng từng bước hiểu được cú pháp của từng biểu thức.

Đối với các vòng lặp, chúng ta cần hiểu và vận chúng một cách linh hoạt và mềm dẻo, phân biệt được while và do…while. Sử dụng hàm switch trong trường hợp có quá nhiều giá trị if…else trả về.


D- Bài tập áp dụng:

Bài tập 1:
Viết 1 trang web có giá trị từ 1->20. Hãy xuất ra trình duyệt những số chẵn nằm trong khoảng 1->20 đó.

Bài tập 2:
Xây dựng 1 website thỏa yêu cầu xuất ra bảng cửu chương từ 2 ->10.


Theo: qhonline
Đọc thêm..
Ở bài trước chúng ta đã tìm hiểu về Cách thức cấu hình và cài đặt PHP. Tiếp theo chúng ta sẽ nghiên cứu về Cấu trúc cơ bản trong PHP. Về tổng quan PHP có cú pháp khá tương đồng với 1 số ngôn ngữ như C, JAVA. Tuy nhiên, tự bản thân chúng cũng có những điểm rất riêng biệt.

Kiến thức tổng quan về lập trình PHP


1- Cấu trúc cơ bản:

- PHP cũng có thẻ bắt đầu và kết thúc giống với ngôn ngữ HTML. Chỉ khác, đối với PHP chúng ta có nhiều cách để thể hiện.

Cách 1: Cú pháp chính:
<?php Mã lệnh PHP ?>

Cách 2: Cú pháp ngắn gọn
<? Mã lệnh PHP ?>

Cách 3: Cú pháp giống với ASP.
<% Mã lệnh PHP %>

Cách 4: Cú pháp bắt đầu bằng script

<script language="php">
.....
</script>

Mặc dù có 4 cách thể hiện. Nhưng đối với 1 lập trình viên có kinh nghiệm thì việc sử dụng CÁCH 1 vẫn là lựa chon tối ưu.

- Chú thích trong PHP:


//Đây là chú thích PHP - Trên 1 dòng
/*
Đây là chú thích PHP - Trên nhiều dòng
Kiến thức tổng quan về php
Kiến thức chung về php
*/

Lưu ý: Chú thích không cho phép khai báo chú thích con bên trong.

- Để kết thúc 1 dòng lệnh chúng ta sử dụng dấu ";"
- PHP Không phân biệt chữ hoa, chữ thường nên viết ECHO() hay echo() đều được.


Chú thích trong php


2- Xuất giá trị ra trình duyệt:

Để xuất dữ liệu ra trình duyệt chúng ta có những dòng cú pháp sau:

+ echo "Thông tin cần in ra";
+ printf "Thông tin cần in ra";

Thông tin bao gồm : biến, chuỗi, hoặc lệnh HTML ….


Echo và Printf trong php

Nễu giữa hai chuỗi muốn liên kết với nhau ta sử dụng dấu "."

Nối chuỗi trong php

3- Khái niệm biến, hằng, chuỗi và các kiểu dữ liệu

a) Biến trong PHP.

- Biến là thành phần lưu trữ tạm của các giá trị. Các giá trị này có thể là số, văn bản hoặc dạng dữ liệu phức tạp
- Và giá trị có thể thay đổi được.

Các kiểu dữ liệu: Boolean, số nguyên, thập phân, chuỗi, mảng, đối tượng, dữ liệu tài nguyên, NULL.

Các quy tắc của biến:

- Tên biến bắt đầu bằng $ Và theo sau nó là 1 từ, 1 cụm từ (phải viết liền hoặc có gạch dưới) hoặc dấu gạch dưới ( _ ).
- Ký tự đầu tiên sau $ không được là số (Ví dụ: $01bien = abc --> Không hợp lệ)
- Tên của biến không được phép trùng với các TỪ KHÓA của PHP.
- Các biến Phân biệt chữ hoa chữ thường, nên khi khai báo $ab và $Ab là 2 biến hoàn toàn khác nhau.

Trong PHP để sử dụng 1 biến chúng ta thường phải khai báo trước, tuy nhiên đối với các lập trình viên khi sử dụng họ thường xử lý cùng một lúc các công việc, nghĩa là vừa khái báo vừa gán dữ liệu cho biến.

Bản thân biến cũng có thể gãn cho các kiểu dữ liệu khác. Và tùy theo ý định của người lập trình mong muốn trên chúng.
Một số ví dụ về biến:


Biến trong PHP

- Biến biến thiên:

Biến biến thiên là 1 loại khác của biến, Khai báo $$ trước biến sẽ tự động thay đổi tên của biến, như ví dụ sau:


<?php
$qty =”soluong”;
echo “qty: ” .$qty. “<br>”;
$$qty=40;
echo “soluong: ” .$soluong;
/*
KẾT QUẢ IN RA MÀN HÌNH SẼ LÀ:
qty: soluong
soluong: 40
*/
?>

Thực thi ví dụ trên, bạn sẽ nhận được kết quả biến $soluong có giá trị là 40. Điều này có nghĩa là khai báo hai dấu trước tên biến $qty, biến $qty được thay thế bằng biến $soluong.

b) Khái niệm về hằng trong PHP

Nếu biến là cái có thể thay đổi được thì ngược lại hằng là cái chúng ta không thể thay đổi được. Hằng trong PHP được định nghĩa bởi hàm define theo cú pháp: define (string tên_hằng, giá_trị_hằng ).

Cũng giống với biến hằng được xem là hợp lệ thì chúng phải đáp ứng 1 số yếu tố :

+ Hằng không có dấu "$" ở trước tên.
+ Hằng có thể truy cập bất cứ vị trí nào trong mã lệnh
+ Hằng chỉ được phép gán giá trị duy nhất 1 lần.
+ Hằng thường viết bằng chữ in để phân biệt với biến

Ví dụ:



Khái niệm về hằng trong PHP

c) Khái niệm về chuỗi

- Chuỗi là một nhóm các kỹ tự, số, khoảng trắng, dấu ngắt được đặt trong các dấu nháy.

Ví dụ:
‘Huy’
"welcome to VietNam"

- Để tạo 1 biễn chuỗi, chúng ta phải gán giá trị chuỗi cho 1 biến hợp lệ.

Ví dụ:
$fisrt_name= "Nguyen";
$last_name= ‘Van A’;

- Để liên kết 1 chuỗi và 1 biến chúng ta thường sử dụng dấu "."
Ví dụ:



Khái niệm về chuỗi trong php

d) Kiểu dữ liệu trong PHP

Các kiểu dữ liệu khác nhau chiếm các lượng bộ nhớ khác nhau và có thể được xử lý theo cách khác nhau khi chúng được theo tác trong 1 script.

Trong PHP chúng ta có 6 kiểu dữ liệu chính như sau:



 Kiểu dữ liệu trong PHP

Chúng ta có thể sử dụng hàm dựng sẵn gettype() của PHP4 để kiểm tra kiểu của bất kỳ biến.


Ví dụ:



Phương thức gettype() trong php

Sau bài này các bạn đã có những khái niệm đầu tiên về PHP, các cú pháp, các kiểu dữ liệu, và cách làm việc với môi trường PHP như thế nào. Ở bài sau, chúng ta sẽ tiếp tục tiếp cận với các thuật toán và cú pháp PHP một cách rõ ràng và quen thuộc trong các ngôn ngữ lập trình.

Theo: qhonline

Bài 2: Kiến thức tổng quan về lập trình PHP

Ở bài trước chúng ta đã tìm hiểu về Cách thức cấu hình và cài đặt PHP. Tiếp theo chúng ta sẽ nghiên cứu về Cấu trúc cơ bản trong PHP. Về tổng quan PHP có cú pháp khá tương đồng với 1 số ngôn ngữ như C, JAVA. Tuy nhiên, tự bản thân chúng cũng có những điểm rất riêng biệt.

Kiến thức tổng quan về lập trình PHP


1- Cấu trúc cơ bản:

- PHP cũng có thẻ bắt đầu và kết thúc giống với ngôn ngữ HTML. Chỉ khác, đối với PHP chúng ta có nhiều cách để thể hiện.

Cách 1: Cú pháp chính:
<?php Mã lệnh PHP ?>

Cách 2: Cú pháp ngắn gọn
<? Mã lệnh PHP ?>

Cách 3: Cú pháp giống với ASP.
<% Mã lệnh PHP %>

Cách 4: Cú pháp bắt đầu bằng script

<script language="php">
.....
</script>

Mặc dù có 4 cách thể hiện. Nhưng đối với 1 lập trình viên có kinh nghiệm thì việc sử dụng CÁCH 1 vẫn là lựa chon tối ưu.

- Chú thích trong PHP:


//Đây là chú thích PHP - Trên 1 dòng
/*
Đây là chú thích PHP - Trên nhiều dòng
Kiến thức tổng quan về php
Kiến thức chung về php
*/

Lưu ý: Chú thích không cho phép khai báo chú thích con bên trong.

- Để kết thúc 1 dòng lệnh chúng ta sử dụng dấu ";"
- PHP Không phân biệt chữ hoa, chữ thường nên viết ECHO() hay echo() đều được.


Chú thích trong php


2- Xuất giá trị ra trình duyệt:

Để xuất dữ liệu ra trình duyệt chúng ta có những dòng cú pháp sau:

+ echo "Thông tin cần in ra";
+ printf "Thông tin cần in ra";

Thông tin bao gồm : biến, chuỗi, hoặc lệnh HTML ….


Echo và Printf trong php

Nễu giữa hai chuỗi muốn liên kết với nhau ta sử dụng dấu "."

Nối chuỗi trong php

3- Khái niệm biến, hằng, chuỗi và các kiểu dữ liệu

a) Biến trong PHP.

- Biến là thành phần lưu trữ tạm của các giá trị. Các giá trị này có thể là số, văn bản hoặc dạng dữ liệu phức tạp
- Và giá trị có thể thay đổi được.

Các kiểu dữ liệu: Boolean, số nguyên, thập phân, chuỗi, mảng, đối tượng, dữ liệu tài nguyên, NULL.

Các quy tắc của biến:

- Tên biến bắt đầu bằng $ Và theo sau nó là 1 từ, 1 cụm từ (phải viết liền hoặc có gạch dưới) hoặc dấu gạch dưới ( _ ).
- Ký tự đầu tiên sau $ không được là số (Ví dụ: $01bien = abc --> Không hợp lệ)
- Tên của biến không được phép trùng với các TỪ KHÓA của PHP.
- Các biến Phân biệt chữ hoa chữ thường, nên khi khai báo $ab và $Ab là 2 biến hoàn toàn khác nhau.

Trong PHP để sử dụng 1 biến chúng ta thường phải khai báo trước, tuy nhiên đối với các lập trình viên khi sử dụng họ thường xử lý cùng một lúc các công việc, nghĩa là vừa khái báo vừa gán dữ liệu cho biến.

Bản thân biến cũng có thể gãn cho các kiểu dữ liệu khác. Và tùy theo ý định của người lập trình mong muốn trên chúng.
Một số ví dụ về biến:


Biến trong PHP

- Biến biến thiên:

Biến biến thiên là 1 loại khác của biến, Khai báo $$ trước biến sẽ tự động thay đổi tên của biến, như ví dụ sau:


<?php
$qty =”soluong”;
echo “qty: ” .$qty. “<br>”;
$$qty=40;
echo “soluong: ” .$soluong;
/*
KẾT QUẢ IN RA MÀN HÌNH SẼ LÀ:
qty: soluong
soluong: 40
*/
?>

Thực thi ví dụ trên, bạn sẽ nhận được kết quả biến $soluong có giá trị là 40. Điều này có nghĩa là khai báo hai dấu trước tên biến $qty, biến $qty được thay thế bằng biến $soluong.

b) Khái niệm về hằng trong PHP

Nếu biến là cái có thể thay đổi được thì ngược lại hằng là cái chúng ta không thể thay đổi được. Hằng trong PHP được định nghĩa bởi hàm define theo cú pháp: define (string tên_hằng, giá_trị_hằng ).

Cũng giống với biến hằng được xem là hợp lệ thì chúng phải đáp ứng 1 số yếu tố :

+ Hằng không có dấu "$" ở trước tên.
+ Hằng có thể truy cập bất cứ vị trí nào trong mã lệnh
+ Hằng chỉ được phép gán giá trị duy nhất 1 lần.
+ Hằng thường viết bằng chữ in để phân biệt với biến

Ví dụ:



Khái niệm về hằng trong PHP

c) Khái niệm về chuỗi

- Chuỗi là một nhóm các kỹ tự, số, khoảng trắng, dấu ngắt được đặt trong các dấu nháy.

Ví dụ:
‘Huy’
"welcome to VietNam"

- Để tạo 1 biễn chuỗi, chúng ta phải gán giá trị chuỗi cho 1 biến hợp lệ.

Ví dụ:
$fisrt_name= "Nguyen";
$last_name= ‘Van A’;

- Để liên kết 1 chuỗi và 1 biến chúng ta thường sử dụng dấu "."
Ví dụ:



Khái niệm về chuỗi trong php

d) Kiểu dữ liệu trong PHP

Các kiểu dữ liệu khác nhau chiếm các lượng bộ nhớ khác nhau và có thể được xử lý theo cách khác nhau khi chúng được theo tác trong 1 script.

Trong PHP chúng ta có 6 kiểu dữ liệu chính như sau:



 Kiểu dữ liệu trong PHP

Chúng ta có thể sử dụng hàm dựng sẵn gettype() của PHP4 để kiểm tra kiểu của bất kỳ biến.


Ví dụ:



Phương thức gettype() trong php

Sau bài này các bạn đã có những khái niệm đầu tiên về PHP, các cú pháp, các kiểu dữ liệu, và cách làm việc với môi trường PHP như thế nào. Ở bài sau, chúng ta sẽ tiếp tục tiếp cận với các thuật toán và cú pháp PHP một cách rõ ràng và quen thuộc trong các ngôn ngữ lập trình.

Theo: qhonline
Đọc thêm..
PHP (Hypertext Preprocessor) là ngôn ngữ script trên server được thiết kế để dễ dàng xây dựng các trang Web động. Mã PHP có thể thực thi trên Webserver để tạo ra mã HTML và xuất ra trình duyệt web theo yêu cầu của người sử dụng.

Ngôn ngữ PHP ra đời năm 1994 Rasmus Lerdorf sau đó được phát triển bởi nhiều người trải qua nhiều phiên bản. Phiên bản hiện tại là PHP 5 đã được công bố 7/2004.


Giới thiệu, Cấu hình và cài đặt PHP

Có nhiều lý do khiến cho việc sử dụng ngôn ngữ này chiếm ưu thế xin nêu ra đây một số lý do cơ bản :

- Mã nguồn mở (open source code)
- Miễn phí, download dễ dàng từ Internet.


- Ngôn ngữ rất dễ học, dễ viết.
- Mã nguồn không phải sửa lại nhiều khi viết chạy cho các hệ điều hành từ Windows, Linux, Unix.


- Rất đơn giản trong việc kết nối với nhiều nguồn DBMS, ví dụ như : MySQL, Microsoft SQL Server 2000, Oracle, PostgreSQL, Adabas, dBase, Empress, FilePro, Informix, InterBase, mSQL, Solid, Sybase, Velocis và nhiều hệ thống CSDL thuộc Hệ Điều Hành Unix (Unix dbm) cùng bất cứ DBMS nào có sự hổ trợ cơ chế ODBC (Open Database Connectivity) ví dụ như DB2 của IBM.


Cài đặt PHP, Apache, MYSQL

Để cài đặt PHP, các bạn có thể cài đặt từng gói riêng lẻ (PHP, Apache, Mysql). Tuy nhiên, tôi vẫn khuyến khích các bạn cài đặt dạng gói tích hợp. Sẽ tiện lợi cho việc sau này hơn rất nhiều.
Gói phần mềm mà tôi chọn là : Appserv - Win - 2.5.8 (Tên phần mềm là Appserv, dành cho phiên bản window, phiên bản 2.5.8).

Bước 1: Bạn cài đặt bình thường bằng cách nhấp vào file exe.
Bước 2: Phần mềm sẽ cho bạn chọn cần cài những module nào. Hãy giữ nguyên tất cả như hình dưới và nhấn next.


Giới thiệu, Cấu hình và cài đặt PHP

Bước 3: Trong giao diện dưới:

Giới thiệu, Cấu hình và cài đặt PHP

Server Name: bạn nhập vào: localhost
Email: Bạn nhập vào email của bạn:
Port: Mặc định là 80, tuy nhiên nếu máy bạn đã cài IIS thì có thể chỉnh thành 81 để chạy dịch vụ bên appserv.


Nhấn next để qua trang kế tiếp.

Bước 4: Trong giao diện bên dưới ta điền thông tin như sau:


Giới thiệu, Cấu hình và cài đặt PHP

Enter root password: Bạn gõ vào root
Re-enter root password: nhập lại 1 lần nữa root
Các cấu hình bên dưỡi giữ nguyên.
Ở phần: Enable InnoDB bạn đánh dấu vào. Để MYSQL sử lý được các ứng dụng có bật chế độ InnoDB.
Nhấn NEXT để hoàn tất việc cài đặt.


Sau khi cài đặt xong bạn gõ vào trình duyệt : http://localhost
mà ra giao diện bên dưới, tức là bạn đã cài đặt thành công appserv.


Giới thiệu, Cấu hình và cài đặt PHP

Như vậy là bạn đã cài đặt PHP thành công.

Theo: qhonline

Bài 1: Giới thiệu, Cấu hình và cài đặt PHP

PHP (Hypertext Preprocessor) là ngôn ngữ script trên server được thiết kế để dễ dàng xây dựng các trang Web động. Mã PHP có thể thực thi trên Webserver để tạo ra mã HTML và xuất ra trình duyệt web theo yêu cầu của người sử dụng.

Ngôn ngữ PHP ra đời năm 1994 Rasmus Lerdorf sau đó được phát triển bởi nhiều người trải qua nhiều phiên bản. Phiên bản hiện tại là PHP 5 đã được công bố 7/2004.


Giới thiệu, Cấu hình và cài đặt PHP

Có nhiều lý do khiến cho việc sử dụng ngôn ngữ này chiếm ưu thế xin nêu ra đây một số lý do cơ bản :

- Mã nguồn mở (open source code)
- Miễn phí, download dễ dàng từ Internet.


- Ngôn ngữ rất dễ học, dễ viết.
- Mã nguồn không phải sửa lại nhiều khi viết chạy cho các hệ điều hành từ Windows, Linux, Unix.


- Rất đơn giản trong việc kết nối với nhiều nguồn DBMS, ví dụ như : MySQL, Microsoft SQL Server 2000, Oracle, PostgreSQL, Adabas, dBase, Empress, FilePro, Informix, InterBase, mSQL, Solid, Sybase, Velocis và nhiều hệ thống CSDL thuộc Hệ Điều Hành Unix (Unix dbm) cùng bất cứ DBMS nào có sự hổ trợ cơ chế ODBC (Open Database Connectivity) ví dụ như DB2 của IBM.


Cài đặt PHP, Apache, MYSQL

Để cài đặt PHP, các bạn có thể cài đặt từng gói riêng lẻ (PHP, Apache, Mysql). Tuy nhiên, tôi vẫn khuyến khích các bạn cài đặt dạng gói tích hợp. Sẽ tiện lợi cho việc sau này hơn rất nhiều.
Gói phần mềm mà tôi chọn là : Appserv - Win - 2.5.8 (Tên phần mềm là Appserv, dành cho phiên bản window, phiên bản 2.5.8).

Bước 1: Bạn cài đặt bình thường bằng cách nhấp vào file exe.
Bước 2: Phần mềm sẽ cho bạn chọn cần cài những module nào. Hãy giữ nguyên tất cả như hình dưới và nhấn next.


Giới thiệu, Cấu hình và cài đặt PHP

Bước 3: Trong giao diện dưới:

Giới thiệu, Cấu hình và cài đặt PHP

Server Name: bạn nhập vào: localhost
Email: Bạn nhập vào email của bạn:
Port: Mặc định là 80, tuy nhiên nếu máy bạn đã cài IIS thì có thể chỉnh thành 81 để chạy dịch vụ bên appserv.


Nhấn next để qua trang kế tiếp.

Bước 4: Trong giao diện bên dưới ta điền thông tin như sau:


Giới thiệu, Cấu hình và cài đặt PHP

Enter root password: Bạn gõ vào root
Re-enter root password: nhập lại 1 lần nữa root
Các cấu hình bên dưỡi giữ nguyên.
Ở phần: Enable InnoDB bạn đánh dấu vào. Để MYSQL sử lý được các ứng dụng có bật chế độ InnoDB.
Nhấn NEXT để hoàn tất việc cài đặt.


Sau khi cài đặt xong bạn gõ vào trình duyệt : http://localhost
mà ra giao diện bên dưới, tức là bạn đã cài đặt thành công appserv.


Giới thiệu, Cấu hình và cài đặt PHP

Như vậy là bạn đã cài đặt PHP thành công.

Theo: qhonline
Đọc thêm..
Hướng dẫn này tôi sẽ giúp các bạn cách tạo cách chuỗi mật khẩu ngẫu nhiên sử dụng vòng lặp và các chữ cái. Để đảm bảo tính an toàn, chúng ta sẽ quy định chiều dài tối thiểu và tối đa cho mật khẩu.

Trước tiên, chúng ta xác định đồ dài tối thiểu và tối đa của mật khẩu:

PHP Code:
$min=4;    $max=15;    $pwd=""

Bây giờ chúng ta tạo mật khẩu với vòng lặp, sử dụng $min và $max để tạo chuỗi có độ dài ngẫu nhiên:

PHP Code:
for($i=0;$i<rand($min,$max);$i++)></rand($min,$max);$i++)> 

Chúng ta cần phải load các ký tự, nhưng phải chắc chắn không có ký tự sai hoặc không mong muốn:

PHP Code:
$num=rand(48,122);  
        if((
$num 97 && $num 122))  
        {  
        
$pwd.=chr($num);  
        }  
   
        else if((
$num 65 && $num 90))  
        {  
        
$pwd.=chr($num);  
        }  
   
        else if((
$num >48 && $num 57))  
        {  
        
$pwd.=chr($num);  
        }  
   
        else if(
$num==95)  
        {  
        
$pwd.=chr($num);  
        } 

Chúng ta xem thử mật khẩu như thế nào nhé, hiện ta nào:

PHP Code:
echo $pwd

Dưới đây là code hoàn chỉnh để các bạn tham khảo:


PHP Code:
<?php  
        
// filename "pword.php"   
   
   
        
$min=4// độ dài tối thiểu
        
$max=15// độ dài tối đa  
        
$pwd=""// lưu trữ chuỗi mật khẩu ngẫu nhiên  
   
        
for($i=0;$i<rand($min,$max);$i++)  
        {  
        
$num=rand(48,122);  
   
        if((
$num 97 && $num 122))  
        {  
        
$pwd.=chr($num);  
        }  
   
        else if((
$num 65 && $num 90))  
        {  
        
$pwd.=chr($num);  
        }  
   
        else if((
$num >48 && $num 57))  
        {  
        
$pwd.=chr($num);  
        }  
   
        else if(
$num==95)  
        {  
        
$pwd.=chr($num);  
        }  
   
        else  
        {  
        
$i--;  
        }  
        }  
   
        echo 
$pwd// hiển thị mật khẩu ra màn hình
?>

Chúc các bạn học tốt!

Theo: Truongtan.edu.vn

Cách tạo random password trong php

Hướng dẫn này tôi sẽ giúp các bạn cách tạo cách chuỗi mật khẩu ngẫu nhiên sử dụng vòng lặp và các chữ cái. Để đảm bảo tính an toàn, chúng ta sẽ quy định chiều dài tối thiểu và tối đa cho mật khẩu.

Trước tiên, chúng ta xác định đồ dài tối thiểu và tối đa của mật khẩu:

PHP Code:
$min=4;    $max=15;    $pwd=""

Bây giờ chúng ta tạo mật khẩu với vòng lặp, sử dụng $min và $max để tạo chuỗi có độ dài ngẫu nhiên:

PHP Code:
for($i=0;$i<rand($min,$max);$i++)></rand($min,$max);$i++)> 

Chúng ta cần phải load các ký tự, nhưng phải chắc chắn không có ký tự sai hoặc không mong muốn:

PHP Code:
$num=rand(48,122);  
        if((
$num 97 && $num 122))  
        {  
        
$pwd.=chr($num);  
        }  
   
        else if((
$num 65 && $num 90))  
        {  
        
$pwd.=chr($num);  
        }  
   
        else if((
$num >48 && $num 57))  
        {  
        
$pwd.=chr($num);  
        }  
   
        else if(
$num==95)  
        {  
        
$pwd.=chr($num);  
        } 

Chúng ta xem thử mật khẩu như thế nào nhé, hiện ta nào:

PHP Code:
echo $pwd

Dưới đây là code hoàn chỉnh để các bạn tham khảo:


PHP Code:
<?php  
        
// filename "pword.php"   
   
   
        
$min=4// độ dài tối thiểu
        
$max=15// độ dài tối đa  
        
$pwd=""// lưu trữ chuỗi mật khẩu ngẫu nhiên  
   
        
for($i=0;$i<rand($min,$max);$i++)  
        {  
        
$num=rand(48,122);  
   
        if((
$num 97 && $num 122))  
        {  
        
$pwd.=chr($num);  
        }  
   
        else if((
$num 65 && $num 90))  
        {  
        
$pwd.=chr($num);  
        }  
   
        else if((
$num >48 && $num 57))  
        {  
        
$pwd.=chr($num);  
        }  
   
        else if(
$num==95)  
        {  
        
$pwd.=chr($num);  
        }  
   
        else  
        {  
        
$i--;  
        }  
        }  
   
        echo 
$pwd// hiển thị mật khẩu ra màn hình
?>

Chúc các bạn học tốt!

Theo: Truongtan.edu.vn
Đọc thêm..
Một đặc điểm chung được tìm thấy trên nhiều trang web là việc đăng kí người dùng với mật khẩu ngẫu nhiên. Bài viết này sẽ hướng dẫn bạn việc sinh ra một mật khẩu ngẫu nhiên với độ dài được chỉ định thông qua một đoạn mã.

Chúng ta sẽ tạo một hàm PHP để sinh mã. Tôi sẽ không nói chi tiết về các hàm ở đây, vì vậy tôi sẽ coi như là bạn đã biết nó làm gì, như thế nào và tại sao chúng được dùng. Thật đơn giản, sử dụng hàm để thực hiện công việc, ban có thể sử dụng nó bất cứ ở đâu trong ứng dụng của bạn, mà không cần thiết phải viết lại code. Tôi sẽ coi như bạn đã biết nơi đặt hàm (hoặc bạn có sở thích khác về chỗ mà bạn định đặt hàm mà bạn sửa dụng). Bạn cần nghiên cứu kỹ hàm một cách chi tiết hơn trước khi tiếp tục.


function randomPassword($length,$allow
= "abcdefghijklmnopqrstuvwxyz0123456789") {

Theo như đoạn code này thì chúng ta vừa đặt tên cho hàm của chúng ta là randomPassword. Tất nhiên bạn có thể đặt tên nó tùy theo ý thích liên quan đến mục đích của bạn và nhớ thay đổi tất cả các tham chiếu đến nó trong đoạn code của bạn! Hàm nay có 2 tham số là $length và $allow. Tham số $length đơn giản là độ dài của mật khẩu mà bạn muốn tạo ra. Tham số $allow là một tùy chọn không bắt buộc. Đây là một tập hợp các kí tự mà mật khẩu của bạn được lấy ra từ đó. Mặc định chúng ta đặt nó được sinh ra từ các chữ cái thường và các số từ 0 đến 9.

$i = 1;
while ($i <= $length) {

Tiếp theo chúng ta sẽ tao một vòng lặp, vòng lặp này có số lần chính là độ dài của mật khẩu mà bạn đặt. Do đó trong vòng lặp chúng ta sẽ sinh ra ngẫu nhiên một kí từ và thêm nó vào vị trí cuối cùng của mật khẩu sinh ra ngẫu nhiên...

$max = strlen($allow)-1; 
$num = rand(0, $max);

Đoạn code trên sinh ra ngẫu nhiên một số giữa 0 và số kí tự được truyền vào qua biến $allow trừ đi 1. Vì vậy nếu có 20 kí tự và một số ngãu nhiên được sinh ra giữa 0 và 19. Điều này là vì hàm substr() được sử dụng trong đoạn code dưới đây tham chiếu đến kí tự đầu tiên của chuỗi là 0 chứ không phải là 1.

$temp = substr($allow, $num, 1); 
$ret = $ret . $temp;

Một kí tự được chọn ngẫu nhiên từ tham số $allow bằng việc sử dụng hàm substr(). Kí tự này sau đó được thêm vào biến $ret variable và nó sẽ là mật khẩu ngẫu nhiên của chúng ta.

$i++;
}
return $ret;
}

Đoạn code trên kết thúc vòng lặp và trả về mật khẩu được sinh ra. Pretty basic stuff to be honest. Hàm của chúng ta bây giờ đã hoàn thành! Tất cả công việc còn lại là gọi hàm trong đoạn code của bạn để sinh ra mật khẩu tại nơi mà chúng ta muốn. Điều này được thực hiện một cách đơn giản:

$password = randomPassword(10);

Ví dụ trên sẽ sinh ra một mật khẩu ngẫu nhiên với độ dài là 10 kí tự. Và đây là một ví dụ khác.

$password = randomPassword(10, '0123456789');

Ví dụ này lại sinh ra một mật khẩu ngẫu nhiên gồm 10 kí tự và chỉ toàn chữ số.

Chúng ta hãy cùng xem lại đầy đủ hàm mà chúng ta vừa tạo ra.


function randomPassword($length, $allow = "abcdefghijklmnopqrstuvwxyz0123456789") {

$i = 1;
while ($i <= $length) {

$max = strlen($allow)-1;
$num = rand(0, $max);
$temp = substr($allow, $num, 1);
$ret = $ret . $temp;
$i++;
}
return $ret;

}

Thực ra với cách tạo pass random nói trên chỉ có ý nghĩa với các admin thực sự "bận rộn". Tất cả các function viết ra chỉ khởi tạo password cho thành viên, nó không hề được mã hóa và cực kỳ nguy hiểm. Nếu chỉ tạo pass random thì đoạn code sau làm ngắn gọn hơn thế.

<?php

/**
* The letter l (lowercase L) and the number 1
* have been removed, as they can be mistaken
* for each other.
*/

function createRandomPassword() {

$chars = "abcdefghijkmnopqrstuvwxyz023456789";
srand((double)microtime()*1000000);
$i = 0;
$pass = '' ;

while ($i <= 7) {
$num = rand() % 33;
$tmp = substr($chars, $num, 1);
$pass = $pass . $tmp;
$i++;
}

return $pass;

}

// Usage
$password = createRandomPassword();
echo "Your random password is: $password";

?>

Cách khác:

<?php

function generatePassword($length=9, $strength=0) {
$vowels = 'aeuy';
$consonants = 'bdghjmnpqrstvz';
if ($strength & 1) {
$consonants .= 'BDGHJLMNPQRSTVWXZ';
}
if ($strength & 2) {
$vowels .= "AEUY";
}
if ($strength & 4) {
$consonants .= '23456789';
}
if ($strength & 8) {
$consonants .= '@#$%';
}

$password = '';
$alt = time() % 2;
for ($i = 0; $i < $length; $i++) {
if ($alt == 1) {
$password .= $consonants[(rand() % strlen($consonants))];
$alt = 0;
} else {
$password .= $vowels[(rand() % strlen($vowels))];
$alt = 1;
}
}
return $password;
}

?>

Chúc các bạn thành công!

Tạo mật khẩu ngẫu nghiên trong php

Một đặc điểm chung được tìm thấy trên nhiều trang web là việc đăng kí người dùng với mật khẩu ngẫu nhiên. Bài viết này sẽ hướng dẫn bạn việc sinh ra một mật khẩu ngẫu nhiên với độ dài được chỉ định thông qua một đoạn mã.

Chúng ta sẽ tạo một hàm PHP để sinh mã. Tôi sẽ không nói chi tiết về các hàm ở đây, vì vậy tôi sẽ coi như là bạn đã biết nó làm gì, như thế nào và tại sao chúng được dùng. Thật đơn giản, sử dụng hàm để thực hiện công việc, ban có thể sử dụng nó bất cứ ở đâu trong ứng dụng của bạn, mà không cần thiết phải viết lại code. Tôi sẽ coi như bạn đã biết nơi đặt hàm (hoặc bạn có sở thích khác về chỗ mà bạn định đặt hàm mà bạn sửa dụng). Bạn cần nghiên cứu kỹ hàm một cách chi tiết hơn trước khi tiếp tục.


function randomPassword($length,$allow
= "abcdefghijklmnopqrstuvwxyz0123456789") {

Theo như đoạn code này thì chúng ta vừa đặt tên cho hàm của chúng ta là randomPassword. Tất nhiên bạn có thể đặt tên nó tùy theo ý thích liên quan đến mục đích của bạn và nhớ thay đổi tất cả các tham chiếu đến nó trong đoạn code của bạn! Hàm nay có 2 tham số là $length và $allow. Tham số $length đơn giản là độ dài của mật khẩu mà bạn muốn tạo ra. Tham số $allow là một tùy chọn không bắt buộc. Đây là một tập hợp các kí tự mà mật khẩu của bạn được lấy ra từ đó. Mặc định chúng ta đặt nó được sinh ra từ các chữ cái thường và các số từ 0 đến 9.

$i = 1;
while ($i <= $length) {

Tiếp theo chúng ta sẽ tao một vòng lặp, vòng lặp này có số lần chính là độ dài của mật khẩu mà bạn đặt. Do đó trong vòng lặp chúng ta sẽ sinh ra ngẫu nhiên một kí từ và thêm nó vào vị trí cuối cùng của mật khẩu sinh ra ngẫu nhiên...

$max = strlen($allow)-1; 
$num = rand(0, $max);

Đoạn code trên sinh ra ngẫu nhiên một số giữa 0 và số kí tự được truyền vào qua biến $allow trừ đi 1. Vì vậy nếu có 20 kí tự và một số ngãu nhiên được sinh ra giữa 0 và 19. Điều này là vì hàm substr() được sử dụng trong đoạn code dưới đây tham chiếu đến kí tự đầu tiên của chuỗi là 0 chứ không phải là 1.

$temp = substr($allow, $num, 1); 
$ret = $ret . $temp;

Một kí tự được chọn ngẫu nhiên từ tham số $allow bằng việc sử dụng hàm substr(). Kí tự này sau đó được thêm vào biến $ret variable và nó sẽ là mật khẩu ngẫu nhiên của chúng ta.

$i++;
}
return $ret;
}

Đoạn code trên kết thúc vòng lặp và trả về mật khẩu được sinh ra. Pretty basic stuff to be honest. Hàm của chúng ta bây giờ đã hoàn thành! Tất cả công việc còn lại là gọi hàm trong đoạn code của bạn để sinh ra mật khẩu tại nơi mà chúng ta muốn. Điều này được thực hiện một cách đơn giản:

$password = randomPassword(10);

Ví dụ trên sẽ sinh ra một mật khẩu ngẫu nhiên với độ dài là 10 kí tự. Và đây là một ví dụ khác.

$password = randomPassword(10, '0123456789');

Ví dụ này lại sinh ra một mật khẩu ngẫu nhiên gồm 10 kí tự và chỉ toàn chữ số.

Chúng ta hãy cùng xem lại đầy đủ hàm mà chúng ta vừa tạo ra.


function randomPassword($length, $allow = "abcdefghijklmnopqrstuvwxyz0123456789") {

$i = 1;
while ($i <= $length) {

$max = strlen($allow)-1;
$num = rand(0, $max);
$temp = substr($allow, $num, 1);
$ret = $ret . $temp;
$i++;
}
return $ret;

}

Thực ra với cách tạo pass random nói trên chỉ có ý nghĩa với các admin thực sự "bận rộn". Tất cả các function viết ra chỉ khởi tạo password cho thành viên, nó không hề được mã hóa và cực kỳ nguy hiểm. Nếu chỉ tạo pass random thì đoạn code sau làm ngắn gọn hơn thế.

<?php

/**
* The letter l (lowercase L) and the number 1
* have been removed, as they can be mistaken
* for each other.
*/

function createRandomPassword() {

$chars = "abcdefghijkmnopqrstuvwxyz023456789";
srand((double)microtime()*1000000);
$i = 0;
$pass = '' ;

while ($i <= 7) {
$num = rand() % 33;
$tmp = substr($chars, $num, 1);
$pass = $pass . $tmp;
$i++;
}

return $pass;

}

// Usage
$password = createRandomPassword();
echo "Your random password is: $password";

?>

Cách khác:

<?php

function generatePassword($length=9, $strength=0) {
$vowels = 'aeuy';
$consonants = 'bdghjmnpqrstvz';
if ($strength & 1) {
$consonants .= 'BDGHJLMNPQRSTVWXZ';
}
if ($strength & 2) {
$vowels .= "AEUY";
}
if ($strength & 4) {
$consonants .= '23456789';
}
if ($strength & 8) {
$consonants .= '@#$%';
}

$password = '';
$alt = time() % 2;
for ($i = 0; $i < $length; $i++) {
if ($alt == 1) {
$password .= $consonants[(rand() % strlen($consonants))];
$alt = 0;
} else {
$password .= $vowels[(rand() % strlen($vowels))];
$alt = 1;
}
}
return $password;
}

?>

Chúc các bạn thành công!
Đọc thêm..
Bước 1: Tạo site và database.
Bước 2: Tạo layout bố cục website.
Bước 3: Tạo phần tin chính, tin phụ.
Bước 4: Tạo tin nối bật.
Bước 5: Tạo tab menu tin xem nhiều .

Bước 6: Tạo tin theo chuyên mục .
Bước 7: Tạo tin rao vặt, ảnh trong ngày
Bước 8: Tạo menu Nested Repeat Region kết hợp Accordion.
Bước 9: Tạo mục bình chọn + Blog + Quảng cáo.
Bước 10: Tạo trang nội dung tin.
Bước 11: Tạo trang nội dung chi tiết.

Link download:

http://www.mediafire.com/file/kzhz3injdgu/step1.zip
http://www.mediafire.com/file/2f2nwkvhmwx/step2.zip
http://www.mediafire.com/file/zyugoolyzod/step3.zip
http://www.mediafire.com/file/d5vygiy3ytg/step4.zip
http://www.mediafire.com/file/t4grjunomkw/step5.zip
http://www.mediafire.com/file/wganngz2jgz/step6.zip
http://www.mediafire.com/file/yyk0yfm5nmh/step7.zip
http://www.mediafire.com/file/mfezmu22yrd/step8.zip
http://www.mediafire.com/file/gmzhg4nmkqd/step9.zip
http://www.mediafire.com/file/j3ztkdohkj3/step10.zip
http://www.mediafire.com/file/j31ahnzmbnl/step11.zip

Link db: http://www.mediafire.com/?j25enknniwm

Chúc các bạn học tốt.

Lab hướng dẫn làm 1 webiste tin tức php của Nhất Nghệ

Bước 1: Tạo site và database.
Bước 2: Tạo layout bố cục website.
Bước 3: Tạo phần tin chính, tin phụ.
Bước 4: Tạo tin nối bật.
Bước 5: Tạo tab menu tin xem nhiều .

Bước 6: Tạo tin theo chuyên mục .
Bước 7: Tạo tin rao vặt, ảnh trong ngày
Bước 8: Tạo menu Nested Repeat Region kết hợp Accordion.
Bước 9: Tạo mục bình chọn + Blog + Quảng cáo.
Bước 10: Tạo trang nội dung tin.
Bước 11: Tạo trang nội dung chi tiết.

Link download:

http://www.mediafire.com/file/kzhz3injdgu/step1.zip
http://www.mediafire.com/file/2f2nwkvhmwx/step2.zip
http://www.mediafire.com/file/zyugoolyzod/step3.zip
http://www.mediafire.com/file/d5vygiy3ytg/step4.zip
http://www.mediafire.com/file/t4grjunomkw/step5.zip
http://www.mediafire.com/file/wganngz2jgz/step6.zip
http://www.mediafire.com/file/yyk0yfm5nmh/step7.zip
http://www.mediafire.com/file/mfezmu22yrd/step8.zip
http://www.mediafire.com/file/gmzhg4nmkqd/step9.zip
http://www.mediafire.com/file/j3ztkdohkj3/step10.zip
http://www.mediafire.com/file/j31ahnzmbnl/step11.zip

Link db: http://www.mediafire.com/?j25enknniwm

Chúc các bạn học tốt.
Đọc thêm..
PHP là một ngôn ngữ lập trình mã nguồn mở nên tài liệu hướng dẫn học tập, tham khảo có rất nhiều từ internet, bạn có thể dễ dàng tìm thấy vô số tài liệu trên mạng. Và cũng chính vì thế với những người mới tìm hiểu về php, việc tìm được một tài liệu hay phù hợp cũng là một vấn đề và mất nhiều thời gian! 

Vì vậy, hôm nay mình đã tổng hợp và share tài liệu này, mình thấy nó rất hữu ích với các bạn mới bắt đầu và đang tìm hiểu php đỡ mất công tìm kiếm ở nhiều nguồn khác nhau trên internet.


1. Lập trình ứng dụng WEB với PHP

Giới thiệu:

Đây là bộ video học lập trình PHP & MySQL bằng tiếng việt được viết bởi TTTH ĐH Khoa Học Tự Nhiên TP.HCM.
Là bộ video họcPHP & MySQL tiếng Việt đầy đủ và bài bản nhất mà mình biết.

+ A. PHẦN LÝ THUYẾT


Nội dung trong video tương ứng với nội dung trong 2 cuốn giáo trình: 

[Full] Tài Liệu Học PHP & MySQL Tiếng Việt Chọn Lọc (Ebook PDF -Video) (Hay)

DOWNLOAD:

- PHẦN 1: Part 1 , Part 2 , Part 3 , Part 4.

- PHẦN 2: Part 1 , Part 2 , Part 3.

- PHẦN 3: Part 1 , Part 2 , Part 3 , Part 4.

----------------------------------------------------------------------------------------------------------

File tài liệu dạng PDF dành cho những bạn không thích coi video: 

- DOWNLOAD : Part 1 , Part 2.

+ B. PHẦN THỰC HÀNH

Video hướng dẫn thực hành rất chi tiết và trực quan qua từng bài tập từ dễ đến khó tương ứng với từng phần lý thuyết ở trên, phần này khá phổ biến.

[Full] Tài Liệu Học PHP & MySQL Tiếng Việt Chọn Lọc (Ebook PDF -Video) (Hay)

[Full] Tài Liệu Học PHP & MySQL Tiếng Việt Chọn Lọc (Ebook PDF -Video) (Hay)

LINK DOWN LOAD: Mbook 01 , Mbook 02 , Mbook 03.

BỔ SUNG THÊM CHO BẠN:

- TOOL hỗ trợ download link mediafire tự động : Download

- Cơ sở dữ liệu mẫu để thực hành (CSDL Quản lý bán sữa): ql_ban_sua.sql.zip

- Class phân trang, class Database và một số script: PHP Scripts.rar


------------------------------------------------------------------------------------------------

2. Giáo Trình PHP & MySQL

[Full] Tài Liệu Học PHP & MySQL Tiếng Việt Chọn Lọc (Ebook PDF -Video) (Hay)

Quyển giáo trình này được tổng hợp từ những tài liệu và kinh nghiệm thực tiễn qua nhiều năm giảng dạy của giảng viên, và được soạn thảo cho phù hợp với nội dung môn học. Khác với giáo trình mang tính thương mại, các từ ngữ, cách diễn giải mang xu thế thuật ngữ, giáo trình được xây dựng trên hình thức dễ đọc, dễ hiểu và gần gũi với thực tế, tuy nhiên điều đó không có nghĩa học viên có thể chỉ tham khảo giáo trình mà không đi học. 

- DOWLOAD GIÁO TRÌNH NÀY: DOWNLOAD

3. VIDEO TRAINNING CUỐI KHÓA LỚP PHP CĂN BẢN CỦA VIỆT CHUYÊN

- Video quay bằng Teamviewer, để xem được máy các bạn phải có phầm mềm TEAMVIEWER.
- Video quay lại demo của giáo viên hướng dẫn thực hành viết một trang tin tức đơn giản, tuy không có tiếng nhưng rất bổ ích cho các bạn mới làm quen với PHP, làm quen với việc viết một ứng dụng thực tế ở mức cơ bản, nắm được các kỹ thuật: quản lý đăng nhập, điều hướng, upload, phân trang,....

DOWNLOAD VIDEO NÀY:Part 1 - Part 2 - Part 3 - Part 4 - Part 5

- Souce code trang tin tức đơnn giản: Sourcecode_news

4. Ngoài bộ video trên ra thì còn một số bộ video khác cũng rất đáng quan tâm:

1. Video Lập Trình Hướng Đối Tượng Trong PHP Tiếng Việt (Nguồn: Zend.vn)

- Tìm hiểu lập trình hướng đối tượng & hướng thủ tục
- Khái niệm về lập trình hướng đối tượng
- Khái niệm về lớp (Class)
- Khái niệm về đối tượng (Object)
- Class & Object
- Thuộc tính và phương thức
- Hàm __construct(). Kỹ thuật truyền tham số trong thực tế
- Tính kế thừa & overwrite
- Hàm __destruct() 

+ Xem online: Video Training 
Download
-------------------------------------------------------------------------------------------------------

5. Series PHP & MySQL Videos trên izwebz.com

Ngoài php trang này còn cung cấp nhiều Video hay về kiến thức lập trình thiết kế web 

- VIDEO HỌC PHP CĂN BẢN: Download
Cũng đơn giản dễ hiểu nhưng chưa đầy đủ, mới chỉ nói về một số vấn đề căn bản.

Ngoài ra trên trang truongcongnghe.vn cũng cung cấp một số bài giảng video php nhưng có thu phí (Khoảng 4 k một bài), bài giảng trên trang này hay nhưng hơi cô đọng nếu bạn chưa hoc qua một ngôn ngữ lập trình nào khác thì cũng hơi khó tiếp thu.
---------------------------------------------------------------------------------------------

Hướng dẫn download:

Các link download ở trên mình sử dụng dịch vụ rút gọn link , khi các bạn bấm vào thì nó ra một trang mới, chờ 5s khi xuất hiện nút SKIP AD ở góc trên bên phải màn hình, click chuột vào đó nó sẽ chuyển qua trang gốc mediafie và có thể download bình thường. Cũng có thể dùng Tool để down hàng loạt link.

Hi vọng các bạn không cảm thấy quá phiền phức vì phải đợi 5s. Còn tai sao mình không post link trực tiếp thì chắc không cần phải giải thích nhỉ, chỉ 5s thôi mà.

Share tài liệu học PHP & MySQL Tiếng Việt Chọn Lọc

PHP là một ngôn ngữ lập trình mã nguồn mở nên tài liệu hướng dẫn học tập, tham khảo có rất nhiều từ internet, bạn có thể dễ dàng tìm thấy vô số tài liệu trên mạng. Và cũng chính vì thế với những người mới tìm hiểu về php, việc tìm được một tài liệu hay phù hợp cũng là một vấn đề và mất nhiều thời gian! 

Vì vậy, hôm nay mình đã tổng hợp và share tài liệu này, mình thấy nó rất hữu ích với các bạn mới bắt đầu và đang tìm hiểu php đỡ mất công tìm kiếm ở nhiều nguồn khác nhau trên internet.


1. Lập trình ứng dụng WEB với PHP

Giới thiệu:

Đây là bộ video học lập trình PHP & MySQL bằng tiếng việt được viết bởi TTTH ĐH Khoa Học Tự Nhiên TP.HCM.
Là bộ video họcPHP & MySQL tiếng Việt đầy đủ và bài bản nhất mà mình biết.

+ A. PHẦN LÝ THUYẾT


Nội dung trong video tương ứng với nội dung trong 2 cuốn giáo trình: 

[Full] Tài Liệu Học PHP & MySQL Tiếng Việt Chọn Lọc (Ebook PDF -Video) (Hay)

DOWNLOAD:

- PHẦN 1: Part 1 , Part 2 , Part 3 , Part 4.

- PHẦN 2: Part 1 , Part 2 , Part 3.

- PHẦN 3: Part 1 , Part 2 , Part 3 , Part 4.

----------------------------------------------------------------------------------------------------------

File tài liệu dạng PDF dành cho những bạn không thích coi video: 

- DOWNLOAD : Part 1 , Part 2.

+ B. PHẦN THỰC HÀNH

Video hướng dẫn thực hành rất chi tiết và trực quan qua từng bài tập từ dễ đến khó tương ứng với từng phần lý thuyết ở trên, phần này khá phổ biến.

[Full] Tài Liệu Học PHP & MySQL Tiếng Việt Chọn Lọc (Ebook PDF -Video) (Hay)

[Full] Tài Liệu Học PHP & MySQL Tiếng Việt Chọn Lọc (Ebook PDF -Video) (Hay)

LINK DOWN LOAD: Mbook 01 , Mbook 02 , Mbook 03.

BỔ SUNG THÊM CHO BẠN:

- TOOL hỗ trợ download link mediafire tự động : Download

- Cơ sở dữ liệu mẫu để thực hành (CSDL Quản lý bán sữa): ql_ban_sua.sql.zip

- Class phân trang, class Database và một số script: PHP Scripts.rar


------------------------------------------------------------------------------------------------

2. Giáo Trình PHP & MySQL

[Full] Tài Liệu Học PHP & MySQL Tiếng Việt Chọn Lọc (Ebook PDF -Video) (Hay)

Quyển giáo trình này được tổng hợp từ những tài liệu và kinh nghiệm thực tiễn qua nhiều năm giảng dạy của giảng viên, và được soạn thảo cho phù hợp với nội dung môn học. Khác với giáo trình mang tính thương mại, các từ ngữ, cách diễn giải mang xu thế thuật ngữ, giáo trình được xây dựng trên hình thức dễ đọc, dễ hiểu và gần gũi với thực tế, tuy nhiên điều đó không có nghĩa học viên có thể chỉ tham khảo giáo trình mà không đi học. 

- DOWLOAD GIÁO TRÌNH NÀY: DOWNLOAD

3. VIDEO TRAINNING CUỐI KHÓA LỚP PHP CĂN BẢN CỦA VIỆT CHUYÊN

- Video quay bằng Teamviewer, để xem được máy các bạn phải có phầm mềm TEAMVIEWER.
- Video quay lại demo của giáo viên hướng dẫn thực hành viết một trang tin tức đơn giản, tuy không có tiếng nhưng rất bổ ích cho các bạn mới làm quen với PHP, làm quen với việc viết một ứng dụng thực tế ở mức cơ bản, nắm được các kỹ thuật: quản lý đăng nhập, điều hướng, upload, phân trang,....

DOWNLOAD VIDEO NÀY:Part 1 - Part 2 - Part 3 - Part 4 - Part 5

- Souce code trang tin tức đơnn giản: Sourcecode_news

4. Ngoài bộ video trên ra thì còn một số bộ video khác cũng rất đáng quan tâm:

1. Video Lập Trình Hướng Đối Tượng Trong PHP Tiếng Việt (Nguồn: Zend.vn)

- Tìm hiểu lập trình hướng đối tượng & hướng thủ tục
- Khái niệm về lập trình hướng đối tượng
- Khái niệm về lớp (Class)
- Khái niệm về đối tượng (Object)
- Class & Object
- Thuộc tính và phương thức
- Hàm __construct(). Kỹ thuật truyền tham số trong thực tế
- Tính kế thừa & overwrite
- Hàm __destruct() 

+ Xem online: Video Training 
Download
-------------------------------------------------------------------------------------------------------

5. Series PHP & MySQL Videos trên izwebz.com

Ngoài php trang này còn cung cấp nhiều Video hay về kiến thức lập trình thiết kế web 

- VIDEO HỌC PHP CĂN BẢN: Download
Cũng đơn giản dễ hiểu nhưng chưa đầy đủ, mới chỉ nói về một số vấn đề căn bản.

Ngoài ra trên trang truongcongnghe.vn cũng cung cấp một số bài giảng video php nhưng có thu phí (Khoảng 4 k một bài), bài giảng trên trang này hay nhưng hơi cô đọng nếu bạn chưa hoc qua một ngôn ngữ lập trình nào khác thì cũng hơi khó tiếp thu.
---------------------------------------------------------------------------------------------

Hướng dẫn download:

Các link download ở trên mình sử dụng dịch vụ rút gọn link , khi các bạn bấm vào thì nó ra một trang mới, chờ 5s khi xuất hiện nút SKIP AD ở góc trên bên phải màn hình, click chuột vào đó nó sẽ chuyển qua trang gốc mediafie và có thể download bình thường. Cũng có thể dùng Tool để down hàng loạt link.

Hi vọng các bạn không cảm thấy quá phiền phức vì phải đợi 5s. Còn tai sao mình không post link trực tiếp thì chắc không cần phải giải thích nhỉ, chỉ 5s thôi mà.
Đọc thêm..
Bạn mất nhiều công sức và thời gian cho việc nhập dữ liệu vào CSDL SQL và kết nối nó tới trang web của bạn, vậy bạn làm thế nào để xuất dữ liệu đó ra ngoài ở dạng file Excel để giữ cho hệ thống off-line và on-line của bạn đồng bộ?

Bài viết sau đây trình bày một phương pháp đơn giản để xuất bất kỳ dữ liệu từ PHP vào một bảng tính Excel.

1. Chuẩn bị dữ liệu

Ví dụ sau đây sẽ tạo ra dữ liệu sử dụng cho việc Sorting Arrays of Arrays , được trình bày như sau:
<?PHP  $data = array( array("firstname" => "Mary", "lastname" => "Johnson", "age" => 25), array("firstname" => "Amanda", "lastname" => "Miller", "age" => 18), array("firstname" => "James", "lastname" => "Brown", "age" => 31), array("firstname" => "Patricia", "lastname" => "Williams", "age" => 7), array("firstname" => "Michael", "lastname" => "Davis", "age" => 43), array("firstname" => "Sarah", "lastname" => "Miller", "age" => 24), array("firstname" => "Patrick", "lastname" => "Miller", "age" => 27) ); ?>
Note: Further down this page you can find an example on creating an export from an SQL query.
The first step is to output the data in a tab-delimited format (CSV can also be used but is slightly more complicated). To achieve this we use the following code:
<?PHP header("Content-Type: text/plain"); $flag = false; foreach($data as $row) { if(!$flag) { // display field/column names as first row echo implode("\t", array_keys($row)) . "\r\n"; $flag = true; } echo implode("\t", array_values($row)) . "\r\n"; } exit; ?>
We set the content type to text/plain so that the output can more easily be viewed in the browser. Otherwise, because there is no HTML formatting, the output would appear as a single line of text.
The first line of output will be the column headings (in this case the field names are used). Values are separated with a tab \t and rows with a line break \n. The output should look something like the following:
firstname lastname age Mary Johnson 25 Amanda Miller 18 James Brown 31 Patricia Williams 7 Michael Davis 43 Sarah Miller 24 Patrick Miller 27
There's already a weakness in this code that may not be immediately obvious. What if one of the fields to be ouput already contains one or more tab characters, or worse, a newline? That's going to throw the whole process out as we rely on those characters to indicate column- and line-breaks.
The solution is to 'escape' the tab characters. In this case we're going to replace tabs with a literal \tand line breaks with a literal \n so they don't affect the formatting:
<?PHP function cleanData(&$str) { $str = preg_replace("/\t/", "\\t", $str); $str = preg_replace("/\r?\n/", "\\n", $str); } header("Content-Type: text/plain"); $flag = false; foreach($data as $row) { if(!$flag) { // display field/column names as first row echo implode("\t", array_keys($row)) . "\r\n"; $flag = true; } array_walk($row, 'cleanData'); echo implode("\t", array_values($row)) . "\r\n"; } exit; ?>
Now, before each row is echoed any tab characters are replaced "\t" so that our columns aren't broken up. Also any line breaks within the data are replaced with "\n". Now, how to set this up as a download...

2. Triggering a download

What many programmers don't realise is that you don't have to create a file, even a temporary one, in order for one to be downloaded. It's sufficient to 'mimic' a download by passing the equivalent HTTP headers followed by the data.
If we create a PHP file with the following code then when it's called a file will be downloaded which can be opened directly using Excel.
<?PHP function cleanData(&$str) { $str = preg_replace("/\t/", "\\t", $str); $str = preg_replace("/\r?\n/", "\\n", $str); if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"'; } // filename for download $filename = "website_data_" . date('Ymd') . ".xls"; header("Content-Disposition: attachment; filename=\"$filename\""); header("Content-Type: application/vnd.ms-excel"); $flag = false; foreach($data as $row) { if(!$flag) { // display field/column names as first row echo implode("\t", array_keys($row)) . "\r\n"; $flag = true; } array_walk($row, 'cleanData'); echo implode("\t", array_values($row)) . "\r\n"; } exit; ?>
Note that we've added an extra line to the cleanData function to detect double-quotes and escape any value that contains them. Without this an uneven number of quotes in a string can confuse Excel.
This should result in a file being downloaded and saved to your computer. If all goes well then the filename will be named "website_data_20131002.xls" and will open in Excel looking something like this:
screenshot showing data in Excel colums
How does it work? Setting the headers tells the browser to expect a file with a given name and type. The data is then echoed, but instead of appearing on the page it becomes the downloaded file.
Because of the .xls extension and the ms-excel file type, most computers will associate it with Excel and double-clicking will cause that program to open. You could also modify the file name and mime type to indicate a different spreadsheet package or database application.
There is no way to specify data or cell formatting, column widths, etc, using this method. We are only passing a tab-delimited text file. To include formatting try generating HTML code or a script that actually builds an Excel file. Or create your own macro in Excel that applies formatting after the import.
A similar technique can be used to allow users to download files that have been uploaded previously using PHP and stored with different names. More on that later...

3. Exporting from an SQL database

If your goal is to allow data to be exported from a query result then the changes are relatively simple:
<?PHP // Original PHP code by Chirp Internet: www.chirp.com.au // Please acknowledge use of this code by including this header. function cleanData(&$str) { $str = preg_replace("/\t/", "\\t", $str); $str = preg_replace("/\r?\n/", "\\n", $str); if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"'; } // filename for download $filename = "website_data_" . date('Ymd') . ".xls"; header("Content-Disposition: attachment; filename=\"$filename\""); header("Content-Type: application/vnd.ms-excel"); $flag = false; $result = pg_query("SELECT * FROM table ORDER BY field") or die('Query failed!'); while(false !== ($row = pg_fetch_assoc($result))) { if(!$flag) { // display field/column names as first row echo implode("\t", array_keys($row)) . "\r\n"; $flag = true; } array_walk($row, 'cleanData'); echo implode("\t", array_values($row)) . "\r\n"; } exit; ?>
This would be the entire file required to query the database and trigger the file download. The database functions need to match the database you're using. MySQL users for example will need to use mysql_query and either mysql_fetch_assoc or mysqli_fetch_assoc in place of the PostgreSQL functions.
For other databases see under User Comments below or check the PHP documentation. If you are seeing duplicate columns (numbered as well as labeled) you need to change the fetch call to return only the associative (ASSOC) array.
If you're having trouble at this stage, remove the Content-Disposition header and change the Content-Type back to text/plain. This makes debugging a lot easier as you can see the output in your browser rather than having to download and open the generated file every time you edit the script.

4. Preventing Excel's ridiculous auto-format

When importing from a text file as we're essentially doing here, Excel has a nasty habit of mangling dates, timestamps, phone numbers and similar input values.
For our purposes, some simple additions to the cleanData function take care of most of the problems:
<?PHP // Original PHP code by Chirp Internet: www.chirp.com.au // Please acknowledge use of this code by including this header. function cleanData(&$str) { // escape tab characters $str = preg_replace("/\t/", "\\t", $str); // escape new lines $str = preg_replace("/\r?\n/", "\\n", $str); // convert 't' and 'f' to boolean values if($str == 't') $str = 'TRUE'; if($str == 'f') $str = 'FALSE'; // force certain number/date formats to be imported as strings if(preg_match("/^0/", $str) || preg_match("/^\+?\d{8,}$/", $str) || preg_match("/^\d{4}.\d{1,2}.\d{1,2}/", $str)) { $str = "'$str"; } // escape fields that include double quotes if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"'; } ?>
The section that prevents values being scrambled does so by inserting an apostrophe at the start of the cell. When you open the resuling file in Excel you may see the apostrophe, but editing the field will make it disappear while retaining the string format. Excel is strange that way.
The types of values being escape this way are: values starting with a zero; values starting with an optional + and at least 8 consecutive digits (phone numbers); and values starting with numbers in YYYY-MM-DD format (timestamps). The relevant regular expressions have been highlighted in the code above.

5. Formatting - colours, numbers, dates

This script generates and triggers the download of a text file with an Excel Mime-Type. We are not building an actual Excel spreadsheet file.
Defining styles, colours, column widths, etc, is not possible using this technique. You may be able to generate an HTML table with some formatted data that Excel will recognise, otherwise you need a much more complicated script.

6. Exporting to CSV format

Newer versions of Excel are becoming fussy about opening files with a .xls extension that are not Excel binary files, making CSV format with a .csv extension a better option.
The tab-delimited text options describe above may be a bit limiting if your data contains newlines or tab breaks that you want to preserve when opened in Excel or another spreadsheet application.
A better format then is comma-separated variables (CSV) which can be generated as follows:
<?PHP function cleanData(&$str) { if($str == 't') $str = 'TRUE'; if($str == 'f') $str = 'FALSE'; if(preg_match("/^0/", $str) || preg_match("/^\+?\d{8,}$/", $str) || preg_match("/^\d{4}.\d{1,2}.\d{1,2}/", $str)) { $str = "'$str"; } if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"'; } // filename for download $filename = "website_data_" . date('Ymd') . ".csv"; header("Content-Disposition: attachment; filename=\"$filename\""); header("Content-Type: text/csv;"); $out = fopen("php://output", 'w'); $flag = false; $result = pg_query("SELECT * FROM table ORDER BY field") or die('Query failed!'); while(false !== ($row = pg_fetch_assoc($result))) { if(!$flag) { // display field/column names as first row fputcsv($out, array_keys($row), ',', '"'); $flag = true; } array_walk($row, 'cleanData'); fputcsv($out, array_values($row), ',', '"'); } fclose($out); exit; ?>
Normally the fputcsv command is used to write data in CSV format to a separate file. In this script we're tricking it into writing directly to the page by telling it to write to php://output instead of a regular file. A nice trick.
As an aside, to export directly to CSV format from the command line interface in PostgreSQL you can use simply:
postgres=# COPY (SELECT * FROM table ORDER BY field) TO '/tmp/table.csv' WITH CSV HEADER;
and for MySQL, somehing like the following:
SELECT * FROM table ORDER BY field INTO OUTFILE '/tmp/table.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'

7. Exporting to CSV with Unicode intact

If like us your data contains UTF-8 characters you will notice that Excel doesn't handle them very well. Other applications can open UTF-8 content without problems, but for some reason Microsoft wants to keep you in the dark ages.
Fortunately, there is a trick you can use. Below you can see how we modify the script to convert everything from UTF-8 to UTF-16 Lower Endian (UTF-16LE) format which Excel, at least on Windows, will recognise.
When opening this file in Excel you might find all the data bunched into the first column. This should be fixable using the "Text to Columns..." command under the Data menu.
<?PHP function cleanData(&$str) { if($str == 't') $str = 'TRUE'; if($str == 'f') $str = 'FALSE'; if(preg_match("/^0/", $str) || preg_match("/^\+?\d{8,}$/", $str) || preg_match("/^\d{4}.\d{1,2}.\d{1,2}/", $str)) { $str = "'$str"; } if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"'; $str = mb_convert_encoding($str, 'UTF-16LE', 'UTF-8'); } // filename for download $filename = "website_data_" . date('Ymd') . ".csv"; header("Content-Disposition: attachment; filename=\"$filename\""); header("Content-Type: text/csv; charset=UTF-16LE"); $out = fopen("php://output", 'w'); $flag = false; $result = pg_query("SELECT * FROM table ORDER BY field") or die('Query failed!'); while(false !== ($row = pg_fetch_assoc($result))) { if(!$flag) { // display field/column names as first row fputcsv($out, array_keys($row), ',', '"'); $flag = true; } array_walk($row, 'cleanData'); fputcsv($out, array_values($row), ',', '"'); } fclose($out); exit; ?>
This script may not work for all versions of Excel. Please let us know using the Feedback form below if you encounter problems or come up with a better solution.

8. Specifying column headings

The above database download examples all use the database field names for the first row of the exported file which may not be what you want. If you want to specify your own more user-friendly headings you can modify the code as follow:
<PHP $colnames = array( 'memberno' => "Member No.", 'date_joined' => "Date joined", 'title' => "Title", 'firstname' => "First name", 'lastname' => "Last name", 'address' => "Address", 'postcode' => "Postcode", 'city' => "City", 'country' => "Country", 'phone' => "Telephone", 'mobile' => "Mobile", 'fax' => "Facsimile", 'email' => "Email address", 'notes' => "Notes" ); function map_colnames($input) { global $colnames; return isset($colnames[$input]) ? $colnames[$input] : $input; } // filename for download $filename = "website_data_" . date('Ymd') . ".csv"; ... if(!$flag) { // display field/column names as first row $firstline = array_map("map_colnames", array_keys($row)); fputcsv($outstream, $firstline, ',', '"'); $flag = true; } ... ?>
The values in the first row will be mapped according to the $colnames associative array. If no mapping is provided for a fieldname it will remain unchanged. Of course you will want to provide your own list of suitable headings. They don't have to be in order.


PHP: Exporting Data to Excel

Bạn mất nhiều công sức và thời gian cho việc nhập dữ liệu vào CSDL SQL và kết nối nó tới trang web của bạn, vậy bạn làm thế nào để xuất dữ liệu đó ra ngoài ở dạng file Excel để giữ cho hệ thống off-line và on-line của bạn đồng bộ?

Bài viết sau đây trình bày một phương pháp đơn giản để xuất bất kỳ dữ liệu từ PHP vào một bảng tính Excel.

1. Chuẩn bị dữ liệu

Ví dụ sau đây sẽ tạo ra dữ liệu sử dụng cho việc Sorting Arrays of Arrays , được trình bày như sau:
<?PHP  $data = array( array("firstname" => "Mary", "lastname" => "Johnson", "age" => 25), array("firstname" => "Amanda", "lastname" => "Miller", "age" => 18), array("firstname" => "James", "lastname" => "Brown", "age" => 31), array("firstname" => "Patricia", "lastname" => "Williams", "age" => 7), array("firstname" => "Michael", "lastname" => "Davis", "age" => 43), array("firstname" => "Sarah", "lastname" => "Miller", "age" => 24), array("firstname" => "Patrick", "lastname" => "Miller", "age" => 27) ); ?>
Note: Further down this page you can find an example on creating an export from an SQL query.
The first step is to output the data in a tab-delimited format (CSV can also be used but is slightly more complicated). To achieve this we use the following code:
<?PHP header("Content-Type: text/plain"); $flag = false; foreach($data as $row) { if(!$flag) { // display field/column names as first row echo implode("\t", array_keys($row)) . "\r\n"; $flag = true; } echo implode("\t", array_values($row)) . "\r\n"; } exit; ?>
We set the content type to text/plain so that the output can more easily be viewed in the browser. Otherwise, because there is no HTML formatting, the output would appear as a single line of text.
The first line of output will be the column headings (in this case the field names are used). Values are separated with a tab \t and rows with a line break \n. The output should look something like the following:
firstname lastname age Mary Johnson 25 Amanda Miller 18 James Brown 31 Patricia Williams 7 Michael Davis 43 Sarah Miller 24 Patrick Miller 27
There's already a weakness in this code that may not be immediately obvious. What if one of the fields to be ouput already contains one or more tab characters, or worse, a newline? That's going to throw the whole process out as we rely on those characters to indicate column- and line-breaks.
The solution is to 'escape' the tab characters. In this case we're going to replace tabs with a literal \tand line breaks with a literal \n so they don't affect the formatting:
<?PHP function cleanData(&$str) { $str = preg_replace("/\t/", "\\t", $str); $str = preg_replace("/\r?\n/", "\\n", $str); } header("Content-Type: text/plain"); $flag = false; foreach($data as $row) { if(!$flag) { // display field/column names as first row echo implode("\t", array_keys($row)) . "\r\n"; $flag = true; } array_walk($row, 'cleanData'); echo implode("\t", array_values($row)) . "\r\n"; } exit; ?>
Now, before each row is echoed any tab characters are replaced "\t" so that our columns aren't broken up. Also any line breaks within the data are replaced with "\n". Now, how to set this up as a download...

2. Triggering a download

What many programmers don't realise is that you don't have to create a file, even a temporary one, in order for one to be downloaded. It's sufficient to 'mimic' a download by passing the equivalent HTTP headers followed by the data.
If we create a PHP file with the following code then when it's called a file will be downloaded which can be opened directly using Excel.
<?PHP function cleanData(&$str) { $str = preg_replace("/\t/", "\\t", $str); $str = preg_replace("/\r?\n/", "\\n", $str); if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"'; } // filename for download $filename = "website_data_" . date('Ymd') . ".xls"; header("Content-Disposition: attachment; filename=\"$filename\""); header("Content-Type: application/vnd.ms-excel"); $flag = false; foreach($data as $row) { if(!$flag) { // display field/column names as first row echo implode("\t", array_keys($row)) . "\r\n"; $flag = true; } array_walk($row, 'cleanData'); echo implode("\t", array_values($row)) . "\r\n"; } exit; ?>
Note that we've added an extra line to the cleanData function to detect double-quotes and escape any value that contains them. Without this an uneven number of quotes in a string can confuse Excel.
This should result in a file being downloaded and saved to your computer. If all goes well then the filename will be named "website_data_20131002.xls" and will open in Excel looking something like this:
screenshot showing data in Excel colums
How does it work? Setting the headers tells the browser to expect a file with a given name and type. The data is then echoed, but instead of appearing on the page it becomes the downloaded file.
Because of the .xls extension and the ms-excel file type, most computers will associate it with Excel and double-clicking will cause that program to open. You could also modify the file name and mime type to indicate a different spreadsheet package or database application.
There is no way to specify data or cell formatting, column widths, etc, using this method. We are only passing a tab-delimited text file. To include formatting try generating HTML code or a script that actually builds an Excel file. Or create your own macro in Excel that applies formatting after the import.
A similar technique can be used to allow users to download files that have been uploaded previously using PHP and stored with different names. More on that later...

3. Exporting from an SQL database

If your goal is to allow data to be exported from a query result then the changes are relatively simple:
<?PHP // Original PHP code by Chirp Internet: www.chirp.com.au // Please acknowledge use of this code by including this header. function cleanData(&$str) { $str = preg_replace("/\t/", "\\t", $str); $str = preg_replace("/\r?\n/", "\\n", $str); if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"'; } // filename for download $filename = "website_data_" . date('Ymd') . ".xls"; header("Content-Disposition: attachment; filename=\"$filename\""); header("Content-Type: application/vnd.ms-excel"); $flag = false; $result = pg_query("SELECT * FROM table ORDER BY field") or die('Query failed!'); while(false !== ($row = pg_fetch_assoc($result))) { if(!$flag) { // display field/column names as first row echo implode("\t", array_keys($row)) . "\r\n"; $flag = true; } array_walk($row, 'cleanData'); echo implode("\t", array_values($row)) . "\r\n"; } exit; ?>
This would be the entire file required to query the database and trigger the file download. The database functions need to match the database you're using. MySQL users for example will need to use mysql_query and either mysql_fetch_assoc or mysqli_fetch_assoc in place of the PostgreSQL functions.
For other databases see under User Comments below or check the PHP documentation. If you are seeing duplicate columns (numbered as well as labeled) you need to change the fetch call to return only the associative (ASSOC) array.
If you're having trouble at this stage, remove the Content-Disposition header and change the Content-Type back to text/plain. This makes debugging a lot easier as you can see the output in your browser rather than having to download and open the generated file every time you edit the script.

4. Preventing Excel's ridiculous auto-format

When importing from a text file as we're essentially doing here, Excel has a nasty habit of mangling dates, timestamps, phone numbers and similar input values.
For our purposes, some simple additions to the cleanData function take care of most of the problems:
<?PHP // Original PHP code by Chirp Internet: www.chirp.com.au // Please acknowledge use of this code by including this header. function cleanData(&$str) { // escape tab characters $str = preg_replace("/\t/", "\\t", $str); // escape new lines $str = preg_replace("/\r?\n/", "\\n", $str); // convert 't' and 'f' to boolean values if($str == 't') $str = 'TRUE'; if($str == 'f') $str = 'FALSE'; // force certain number/date formats to be imported as strings if(preg_match("/^0/", $str) || preg_match("/^\+?\d{8,}$/", $str) || preg_match("/^\d{4}.\d{1,2}.\d{1,2}/", $str)) { $str = "'$str"; } // escape fields that include double quotes if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"'; } ?>
The section that prevents values being scrambled does so by inserting an apostrophe at the start of the cell. When you open the resuling file in Excel you may see the apostrophe, but editing the field will make it disappear while retaining the string format. Excel is strange that way.
The types of values being escape this way are: values starting with a zero; values starting with an optional + and at least 8 consecutive digits (phone numbers); and values starting with numbers in YYYY-MM-DD format (timestamps). The relevant regular expressions have been highlighted in the code above.

5. Formatting - colours, numbers, dates

This script generates and triggers the download of a text file with an Excel Mime-Type. We are not building an actual Excel spreadsheet file.
Defining styles, colours, column widths, etc, is not possible using this technique. You may be able to generate an HTML table with some formatted data that Excel will recognise, otherwise you need a much more complicated script.

6. Exporting to CSV format

Newer versions of Excel are becoming fussy about opening files with a .xls extension that are not Excel binary files, making CSV format with a .csv extension a better option.
The tab-delimited text options describe above may be a bit limiting if your data contains newlines or tab breaks that you want to preserve when opened in Excel or another spreadsheet application.
A better format then is comma-separated variables (CSV) which can be generated as follows:
<?PHP function cleanData(&$str) { if($str == 't') $str = 'TRUE'; if($str == 'f') $str = 'FALSE'; if(preg_match("/^0/", $str) || preg_match("/^\+?\d{8,}$/", $str) || preg_match("/^\d{4}.\d{1,2}.\d{1,2}/", $str)) { $str = "'$str"; } if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"'; } // filename for download $filename = "website_data_" . date('Ymd') . ".csv"; header("Content-Disposition: attachment; filename=\"$filename\""); header("Content-Type: text/csv;"); $out = fopen("php://output", 'w'); $flag = false; $result = pg_query("SELECT * FROM table ORDER BY field") or die('Query failed!'); while(false !== ($row = pg_fetch_assoc($result))) { if(!$flag) { // display field/column names as first row fputcsv($out, array_keys($row), ',', '"'); $flag = true; } array_walk($row, 'cleanData'); fputcsv($out, array_values($row), ',', '"'); } fclose($out); exit; ?>
Normally the fputcsv command is used to write data in CSV format to a separate file. In this script we're tricking it into writing directly to the page by telling it to write to php://output instead of a regular file. A nice trick.
As an aside, to export directly to CSV format from the command line interface in PostgreSQL you can use simply:
postgres=# COPY (SELECT * FROM table ORDER BY field) TO '/tmp/table.csv' WITH CSV HEADER;
and for MySQL, somehing like the following:
SELECT * FROM table ORDER BY field INTO OUTFILE '/tmp/table.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'

7. Exporting to CSV with Unicode intact

If like us your data contains UTF-8 characters you will notice that Excel doesn't handle them very well. Other applications can open UTF-8 content without problems, but for some reason Microsoft wants to keep you in the dark ages.
Fortunately, there is a trick you can use. Below you can see how we modify the script to convert everything from UTF-8 to UTF-16 Lower Endian (UTF-16LE) format which Excel, at least on Windows, will recognise.
When opening this file in Excel you might find all the data bunched into the first column. This should be fixable using the "Text to Columns..." command under the Data menu.
<?PHP function cleanData(&$str) { if($str == 't') $str = 'TRUE'; if($str == 'f') $str = 'FALSE'; if(preg_match("/^0/", $str) || preg_match("/^\+?\d{8,}$/", $str) || preg_match("/^\d{4}.\d{1,2}.\d{1,2}/", $str)) { $str = "'$str"; } if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"'; $str = mb_convert_encoding($str, 'UTF-16LE', 'UTF-8'); } // filename for download $filename = "website_data_" . date('Ymd') . ".csv"; header("Content-Disposition: attachment; filename=\"$filename\""); header("Content-Type: text/csv; charset=UTF-16LE"); $out = fopen("php://output", 'w'); $flag = false; $result = pg_query("SELECT * FROM table ORDER BY field") or die('Query failed!'); while(false !== ($row = pg_fetch_assoc($result))) { if(!$flag) { // display field/column names as first row fputcsv($out, array_keys($row), ',', '"'); $flag = true; } array_walk($row, 'cleanData'); fputcsv($out, array_values($row), ',', '"'); } fclose($out); exit; ?>
This script may not work for all versions of Excel. Please let us know using the Feedback form below if you encounter problems or come up with a better solution.

8. Specifying column headings

The above database download examples all use the database field names for the first row of the exported file which may not be what you want. If you want to specify your own more user-friendly headings you can modify the code as follow:
<PHP $colnames = array( 'memberno' => "Member No.", 'date_joined' => "Date joined", 'title' => "Title", 'firstname' => "First name", 'lastname' => "Last name", 'address' => "Address", 'postcode' => "Postcode", 'city' => "City", 'country' => "Country", 'phone' => "Telephone", 'mobile' => "Mobile", 'fax' => "Facsimile", 'email' => "Email address", 'notes' => "Notes" ); function map_colnames($input) { global $colnames; return isset($colnames[$input]) ? $colnames[$input] : $input; } // filename for download $filename = "website_data_" . date('Ymd') . ".csv"; ... if(!$flag) { // display field/column names as first row $firstline = array_map("map_colnames", array_keys($row)); fputcsv($outstream, $firstline, ',', '"'); $flag = true; } ... ?>
The values in the first row will be mapped according to the $colnames associative array. If no mapping is provided for a fieldname it will remain unchanged. Of course you will want to provide your own list of suitable headings. They don't have to be in order.


Đọc thêm..