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