Tổng hợp mọi thứ về PHP
Mục Lục
Chapter 1 : Giới Thiệu PHP
Chapter 2 : Bắt Đầu Với PHP
Chapter 3 : Cài Đặt PHP
Chapter 4 : Cú Pháp PHP
Chapter 5 : Biến PHP
Chapter 6 : Chuỗi Biến PHP
Chapter 7 : Toán Tử PHP
Chapter 8 : Câu lệnh if else trong PHP .
Chapter 9 : Câu lệnh Switch trong PHP
Chapter 10 : Arrays ( Mảng )
Chapter 11 : Looping – While Loops
Chapter 12 : Looping – For Loops
Chapter 13 : Functions ( Hàm Chức Năng )
Chapter 14 : PHP Forms and User Input
Chapter 15 : PHP $_GET Variable
Chapter 16 : PHP $_POST Function
Chapter 17 : Date() Function
Chapter 18 : File Handing
Chapter 19 : File Upload
Chapter 20 : PHP Cookies
Chapter 21 : PHP Sessions
Chapter 22 : Sending Emails
Chapter 23 : Secure E-mails
Chapter 24 : Error Handing
Chapter 25 : Exception Handing
Chapter 26 : PHP Filter
Chapter 27 : PHP MySQL
Chapter 28 : PHP XML Expat Parser
Chapter 29 : Giới thiệu AJAX
Chapter Ngoài : Bài Tập
-Bài 11: Viết ứng dụng đăng nhập bằng PHP và MYSQL
-Bài 12: Viết ứng dụng thêm thành viên bằng PHP và MYSQL
-Bài 13: Viết ứng dụng quản lý thành viên bằng PHP và MYSQL
-Bài 14: viết ứng dụng sửa xóa thành viên bằng PHP và MYSQL
-Bài 15: Viết ứng dụng tạo mã xác nhận bằng PHP
-Bài 16: Viết ứng dụng đếm số người online bằng php
-Bài 17: Xây dựng hệ thống bình chọn bằng PHP và MYSQL
-Bài 18: Xây dựng ứng dụng tạo trang upload nhiều hình ảnh
-Bài 19: Viết ứng dụng tạo giỏ hàng - shopping cart- phần 1
-Bài 20: Viết ứng dụng tạo giỏ hàng - shopping cart- phần 2
ười dùng đã nhấn nút save
foreach($_SESSION['cart'] as $isbn_i => $quantity_q){
//Lặp với từng cuốn sách trong giỏ
if($_POST[$isbn_i] ==0){
//Nếu số lượng sách của 1 cuốn sách xác định là 0, thì bỏ cuốn sách đó
ra khỏi giỏ hàng
unset($_SESSION['cart'][$isbn_i]);
}
else
$_SESSION['cart'][$isbn_i] = $_POST[$isbn_i];
//Nếu khác không, cập nhật số lượng sách
}
}
Tính toán tổng số sach trong giỏ và tổng tiền :
PHP Code:
foreach($_SESSION['cart'] as $isbn_i => $quantity_q){
$sql = "select price from books where isbn = '$isbn_i' ";
//Chọn giá của từng cuốn sách từ database
$result = mysql_query($sql);
$rows = mysql_fetch_assoc($result);
//Chuyển về thành mảng không tuần tự
Page 407 of 413
$price = $rows['price'];
//Lấy giá của sách gán vào biến
$_SESSION['total_items'] += $quantity_q;
//Tổng số sách thì được tính dễ dàng bằng cách cộng dồn tổng số lượng t
ừng cuốn sách
$_SESSION['total_prices'] += $quantity_q*$price;
//Tổng tiền thì cộng dồn tổng tiền mua mỗi loại sách .
}
II/ Trang quản trị:
c/ Sửa thông tin sách
Giờ chúng ta quay lại xử lí trang edit_book.php:
PHP Code:
<?php
require_once('../includes/session.php');
require_once('../includes/check_data.php');
require_once('../includes/connect.php');
if(isset($_GET['isbn']))
{
$isbn = $_GET['isbn'];
$sql = "select * from books where isbn = '$isbn' ";
}
else if(isset($_POST['old_isbn'])){
$old_isbn = $_POST['old_isbn'];
$sql = "select * from books where isbn = '$old_isbn' ";
}
$book = mysql_query($sql);
$book = mysql_fetch_assoc($book);
if(isset($_POST['ok'])){
$isbn = $author = $title = $price = $description = '';
if(!check_data($_POST)){
echo 'Bạn chưa điền hết thông tin của sách';
}
else{
$isbn = trim($_POST['isbn']);
$author = trim(htmlspecialchars($_POST['author']));
$cate_id = $_POST['cate_id'];
$title = trim(htmlspecialchars($_POST['title']));
$price = $_POST['price'];
$description = trim(htmlspecialchars($_POST['description'])
);
if($old_isbn != $isbn){
$sql = "select author from books where isbn ='$isbn'";
Page 408 of 413
$result = mysql_query($sql);
$rows = mysql_num_rows($result);
if($rows == 0){
if($_FILES['image']['name']){
move_uploaded_file($_FILES['image']['tmp_name']
,"images/".$_FILES['image']['name']);
$image = $_FILES['image']['name'];
$sql = "update books set isbn = '$isbn', author
= '$author', title ='$title', cate_id = '$cate_id', image ='$image', p
rice = '$price',
description = '$description' where isbn ='$old_isbn'";
}
else
$sql = "update books set isbn = '$isbn', author
= '$author', title ='$title', cate_id = '$cate_id', price = '$price',
description = '$description' where isbn ='$old_isbn
'";
$result = mysql_query($sql);
}
else{
echo 'Xảy ra lỗi .ISBN đã tồn tại';
$result = false;
}
}
if($old_isbn == $isbn){
if($_FILES['image']['name']){
move_uploaded_file($_FILES['image']['tmp_name']
,"images/".$_FILES['image']['name']);
$image = $_FILES['image']['name'];
$sql = "update books set isbn = '$isbn', author
= '$author', title ='$title', cate_id = '$cate_id', image ='$image', p
rice = '$price',
description = '$description' where isbn ='$old_isbn'";
}
else
$sql = "update books set isbn = '$isbn', author
= '$author', title ='$title', cate_id = '$cate_id', price = '$price',
description = '$description' where isbn ='$old_isbn'";
$result = mysql_query($sql);
}
if($result){
header("location: ../list_books.php?cate_id=$cate_id");
exit();
}
else
echo ' Xảy ra lỗi , sách chưa được thêm vào ' ;
}
}
?>
Page 409 of 413
<form action = 'edit_book.php' method = 'post' enctype = 'multi
part/form-data'>
Thông tin sách :
Chuyên mục:
<?php
require_once('../includes/connect.php');
$sql = 'select * from categories';
$result = mysql_query($sql);
while($rows = mysql_fetch_assoc($result))
//Dùng mysql_fetch_assoc sẽ tiết kiệm bộ nhớ hơn mysql_fetch_array
echo "<option value = '$rows[cate_id]'
<?php
if($rows[cate_id] == $book[cate_id])
echo 'selected = selected';
?>
$rows[cate_name] ";
//Tại sao hok phải là $result['cate_id'] mà là $result[cate_id] <<< Vì
được lồng vào " " của dòng ECHO
?>
ISBN:
<input type ='text' name = 'isbn' value ='<?php
echo htmlspecialchars($book['isbn']);?>'/>
Tác giả:
<input type ='text' name = 'author' value = '
<?php
echo htmlspecialchars($book['author']);
?>
'/>
Tựa sách:
<input type ='text' name = 'title' value ='<?php
echo htmlspecialchars($book['title']);
?>'/>
<?php
if($book['image'] != ''){
echo '';
echo ' Hình đại diện cho sách : ';
echo " <img src = 'images/$book[image]' width = '100px' height
= '150px' />";
echo '';
}
?>
Page 410 of 413
Hình đại diện:
Giá sách:
<input type ='text' name = 'price' value = '
<?php
echo $book['price'];
?>'/>
Mô tả:
<?php
echo htmlspecialchars($book['description']);
?>
<input type = 'hidden' name = 'old_isbn' value ="<?php echo $bo
ok['isbn'];?>" />
Ở đây chúng ta có nhiệm vụ đổ dữ liệu từ database ra form . Lưu ý : khi sửa sách, có thể
ng dùng sẽ sửa isbn, mà isbn là primary key trong database . Vậy chúng ta phải xử lí 2
trường hợp:
1/ Nếu người dùng thay đổi isbn .
2/ Nếu người dùng hok thay đổi isbn
Để xét 2 trường hợp trên, chúng ta cần biết isbn trước khi edit của sách, vì thế chúng ta
chèn :
Mã:
<input type = 'hidden' name = 'old_isbn' value ="<?php echo
$book['isbn'];?>" />
Đoạn code trên sẽ gửi isbn cũ cho chúng ta qua form .
Các bạn thấy, form này gửi dữ liệu đến edit_book.php chứ hok phải
edit_book.php?isbn…. như thường lệ .Vậy nếu chúng ta chỉ dùng :
PHP Code:
if(isset($_GET['isbn']))
{
$isbn = $_GET['isbn'];
$sql = "select * from books where isbn = '$isbn' ";
}
Thì khi có lỗi hok thay đổi sách được, PHP sẽ vẫn chạy script edit_book.php mà hok thực
hiện việc chuyển trang => Lúc này hok còn isbn nữa để mà $_GET => form sẽ đầy lỗi vì
hok có mảng bất tuần tự để đổ dữ liệu từ database
Page 411 of 413
Vì vậy chúng ta thêm :
PHP Code:
else if(isset($_POST['old_isbn'])){
$old_isbn = $_POST['old_isbn'];
$sql = "select * from books where isbn = '$old_isbn' ";
}
Ở đây, cho dù xảy ra sai sót gì đó, thì chúng ta vẫn còn old_isbn để lấy dữ liệu từ
database và form sẽ hok còn lỗi :
PHP Code:
$book = mysql_query($sql);
$book = mysql_fetch_assoc($book);
if($old_isbn != $isbn){
$sql = "select author from books where isbn ='$isbn'";
$result = mysql_query($sql);
$rows = mysql_num_rows($result);
if($rows == 0){
if($_FILES['image']['name']){
move_uploaded_file($_FILES['image']['tmp_name']
,"images/".$_FILES['image']['name']);
$image = $_FILES['image']['name'];
$sql = "update books set isbn = '$isbn', author
= '$author', title ='$title', cate_id = '$cate_id', image ='$image', p
rice = '$price',
description = '$description' where isbn ='$old_isbn'";
}
else
$sql = "update books set isbn = '$isbn', author
= '$author', title ='$title', cate_id = '$cate_id', price = '$price',
description = '$description' where isbn ='$old_isbn
'";
$result = mysql_query($sql);
}
else{
echo 'Xảy ra lỗi .ISBN đã tồn tại';
$result = false;
}
}
if($old_isbn == $isbn){
if($_FILES['image']['name']){
move_uploaded_file($_FILES['image']['tmp_name']
,"images/".$_FILES['image']['name']);
$image = $_FILES['image']['name'];
$sql = "update books set isbn = '$isbn', author
= '$author', title ='$title', cate_id = '$cate_id', image ='$image', p
rice = '$price',
description = '$description' where isbn ='$old_isbn'";
}
else
$sql = "update books set isbn = '$isbn', author
= '$author', title ='$title', cate_id = '$cate_id', price = '$price',
description = '$description' where isbn ='$old_isbn'";
Page 412 of 413
$result = mysql_query($sql);
}
Ở đây. Chúng ta xét 2 trường hợp như đã nói ở trên . Trong mỗi trường hợp , lại có 2
trường hợp con là hok có ảnh đại diện và có ảnh đại diện .
TH : $old_isbn != $isbn
Ở đây, chúng ta tìm xem trong database, isbn mới có trùng với isbn của cuốn sách nào
khác hay không ?
Để làm điều này ta :
PHP Code:
$sql = "select author from books where isbn ='$isbn'";
$result = mysql_query($sql);
Rồi sau đó tìm số dòng của kết quả trả về :
PHP Code:
$rows = mysql_num_rows($result);
Nếu 0 dòng, tức là không có trùng, chúng ta thực hiện câu truy vấn thay đổi thông tin :
PHP Code:
$result = mysql_query($sql) . //trả về true
Nêu trùng, chúng ta gán $result là false;
TH : $isbn == $old_isbn
Ở trường hợp này chúng ta làm bình thường, vì isbn được giữ nguyên .
Sau khi xét 2 trường hợp, chúng ta thực hiện:
Nếu result trả về true, thì chuyển đến trang list_cate.php?....
Nếu result trả về false ( tức là trường hợp trùng isbn hoặc xảy ra lỗi nào
đó) thì ở trang hiện tại .
Vậy là mình đã hướng dẫn các bạn code trang bán sách, hi vọng là các
bạn mới học PHP có cái nhìn tổng quan về việc xây dựng 1 ứng dụng
đơn giản . Mục đích của những bài hướng dẫn này là như thế, mình chỉ
mong những ng mới học, mới bước vào PHP hình dung dc thế nào là
code 1 ứng dụng hoàn chỉnh . Vì thê layout mình chưa xây dựng cho
đẹp, và code chưa hoàn chỉnh cho lắm . Code này hok dành cho các đối
tượng đã hiểu và đã nắm được những điều trên nhé ;;) .
Còn 1 số file khác như edit user, list user,v.v cách giải thích cũng như
nhau nên mình hok post lên đây .
Page 413 of 413
Code này còn thiếu phần check out, thanh toán, phần user thì chưa
kiểm tra tồn tại username chưa như isbn ở trên , các bạn tự xử lý nhé,
coi như bài tập về nhà =]]] ^^
Chào mọi người nhé !
File đính kèm:
Tổng hợp mọi thứ về PHP.pdf

