IMG-LOGO
×

Giáo Trình Môn Học

Khoá học lập trình PHP/MySQL

Kiến Thức Căn Bản

[Video] Lập trình PHP basic - Biến, hằng, toán tử và mảng trong PHP - lập trình PHP [Video] Hướng dẫn lập trình PHP căn bản với if, else if, else, switch- lập trình PHP [Video] Lập trình PHP basic - for, while, do while, foreach, function - lập trình PHP [Video] Hướng dẫn lập trình PHP căn bản - Function - lập trình PHP

Tìm Hiểu Form GET/POST

[Video] Hướng dẫn học lập PHP căn bản - Tìm hiểu GET/POST - lập trình PHP [Video] Hướng dẫn tạo dự án calculator bang PHP + JS - Lập trình PHP [Video] Ajax: Hướng dẫn tạo máy tính bằng PHP - Sử dụng Ajax - GET/POST form trong PHP - Lập trình PHP [Video] Form đăng ký tài khoản bằng PHP (GET/POST)- Form PHP [Video] huong dan chua bai tap dang ky & login su dung GET & POST - Lập trình PHP

Cookie

[Video] Lập trình PHP căn bản - cookie - lập trình PHP [Video] Hướng dẫn tìm hiểu cookie - Quản lý xác minh tài khoản login - cookie - Lập trình PHP/MySQL

Session

[Video] Lập trình PHP căn bản - session - lập trình PHP [Video] Thành thạo API - Ajax trọng dự án - Thành thạo về Session - Lập trình PHP/MySQL

Kết Nối CSDLPHP/ MySQL

[Video] Thực hiện truy vấn dữ liệu từ PHP tới MySql - Khoá học PHP căn bản [Video] Kết nối PHP với MySQL (Thực hiện insert) - Khoá PHP căn bản [Video] Tối ưu hoá code mysql + php, tạo thư viện chung trong lập trình PHP căn bản [Video] Tạo web tin tức - PHP/MySQL [Video] Thực hiện đăng nhập tài khoản sử dụng php mysql - khoá học PHP căn bản [Video]Cookie: Xây dựng cart (giỏ hàng) + checkout (thanh toán) sử dụng Cookie & localStorage - Lập trình PHP/MySQL [Video] Session: Xây dựng web hoàn thiện gồm cart page + checkout page + complete page - Lập trình PHP/MySQL [Video] Trang quản lý sản phẩm php - Lập trình PHP [Video] Viết website quản lý sinh viên PHP & MySQL - Lập Trình PHP [Video] Hướng dẫn phân trang bằng PHP - Lập trình PHP

OOP & Nâng Cao

[Video] OOP - Lập trình php [Video] Kế thừa OOP - Lập trình php [Video] Nắm chắc token login - Hướng dẫn login login multi devices, browsers trong lập trình PHP/MySQL [Video] Trở thành chuyên gia API Server - Hướng dẫn tất tần tật về API từ Server tới Client - Lập trình PHP

Examination & Ôn Tập

[Video] Kiểm Tra 60 phút - Test nhanh - Khóa học PHP

Thực Chiến: Web Bán Hoa Quả

[Video] Xây dựng website bán hoa quả bằng PHP/MySQL - Lập trình PHP/MySQL - Phần 1 [Video] Xây dựng website bán hoa quả bằng PHP/MySQL - Lập trình PHP/MySQL - Phần 2 [Video] Xây dựng website bán hoa quả bằng PHP/MySQL - Lập trình PHP/MySQL - Summernote editor - Phần 3 [Video] Xây dựng website bán hoa quả bằng PHP/MySQL - Lập trình PHP/MySQL - Phần 4 [Video] Xây dựng website bán hoa quả bằng PHP/MySQL - Lập trình PHP/MySQL - Phần 5

Thực Chiến: Web Bán Hàng

[Video] PHẦN 1 | Giới thiệu dự án-công nghệ sử dụng - phân tích chức năng dự án | Website bán hàng PHP/MySQL [Video] Phần 2 | Phân tích thiết kế CSDL (database) | Web bán hàng PHP/MySQL [Video] Phần 3 | Phân tích thiết kế CSDL (database) | Web bán hàng PHP/MySQL [Video] Phần 19 FINAL | Hướng dẫn cài đặt dự án từ source code mẫu | Web bán hàng PHP/MySQL

Hướng Dẫn Deploy Dự Án

[Video] Hướng dẫn upload website lên server -Hướng dẫn deploy project php trên heroku - Cài đặt Heroku




Trang Chủ Học PHP Bài tập - Xây dựng cart (giỏ hàng) + checkout (thanh toán) sử dụng Cookie & localStorage - Lập trình PHP/MySQL

Bài tập - Xây dựng cart (giỏ hàng) + checkout (thanh toán) sử dụng Cookie & localStorage - Lập trình PHP/MySQL

by GokiSoft.com - 15:11 11/06/2021 10,133 Lượt Xem

Xây dựng CSDL đặt tên là BT2290 gồm các bảng sau

- products gồm các column: id tự tăng, tiêu đề, thumbnail, nội dung, ngày tạo, ngày sửa

- orders: gồm các column: id tự tăng, tên khách hàng, sđt, email, địa chỉ, ngày tạo đơn hàng

- order_details: gôm các column: id tự tăng, id đơn hàng, id sản phẩm, số lượng, giá tiền

Yêu cầu:

- Fake 25 sản phẩm bằng bất kỳ cách nào bạn biết

- Tạo các page sau:

1) products.php -> Hiển thị danh sách sản phẩm

2) details.php -> Hiển thị chi tiết sản phẩm -> có chưa button add cart

3) cart.php -> chứa danh sách sản phẩm trong giỏ hàng

4) checkout.php -> trang thanh toán -> Khi thực hiện thanh toán thành công -> yêu cầu add thông tin vào 2 bảng orders và order_details

Chú ý: Tham khảo bất kỳ trang bán hàng để thiết kế giao diện.

Bình luận



Chia sẻ từ lớp học

Đào Mạnh Dũng [C2010L]

Ngày viết: 22:00 16/05/2021


#config.php


<?php
define('HOST', 'localhost');
define('USERNAME', 'root');
define('PASSWORD', '');
define('DATABASE', 'BT2290');

define('MD5_PRIVATE_KEY','include.daodung');
?>


#dbhelper.php


<?php
require_once ('config.php');

/**
 * Su dung cho lenh: insert/update/delete
 */
function execute($sql) {
	// Them du lieu vao database
	//B1. Mo ket noi toi database
	$conn = mysqli_connect(HOST, USERNAME, PASSWORD, DATABASE);
	mysqli_set_charset($conn, 'utf8');

	//B2. Thuc hien truy van insert
	mysqli_query($conn, $sql);

	//B3. Dong ket noi database
	mysqli_close($conn);
}
/**
 * Su dung cho lenh: select
 */
function executeResult($sql) {
	// Them du lieu vao database
	//B1. Mo ket noi toi database
	$conn = mysqli_connect(HOST, USERNAME, PASSWORD, DATABASE);
	mysqli_set_charset($conn, 'utf8');

	//B2. Thuc hien truy van insert
	$resultset = mysqli_query($conn, $sql);
	$data      = [];

	while (($row = mysqli_fetch_array($resultset, 1)) != null) {
		$data[] = $row;
	}

	//B3. Dong ket noi database
	mysqli_close($conn);

	return $data;
}

function getPwdSecurity($pwd) {
	return md5(md5($pwd).MD5_PRIVATE_KEY);
}

function getGET($key) {
	$value = '';
	if (isset($_GET[$key])) {
		$value = $_GET[$key];
	}
	$value = fixSqlInjection($value);
	return $value;
}

function getPOST($key) {
	$value = '';
	if (isset($_POST[$key])) {
		$value = $_POST[$key];
	}
	$value = fixSqlInjection($value);
	return $value;
}

function fixSqlInjection($str) {
	$str = str_replace("\\", "\\\\", $str);
	$str = str_replace("'", "\'", $str);
	return $str;
}
function valiToken() {
	$token = '';

	if (isset($_COOKIE['token'])) {
		$token = $_COOKIE['token'];
		$sql   = "select * from users where token = '$token'";
		$data  = executeResult($sql);
		if ($data != null && count($data) > 0) {
			return $data[0];
		}
	}

	return null;
}
?>


#cart.php


<?php
require_once ('../db/dbhelper.php');
?>
<!DOCTYPE html>
<html>
<head>
	<title>cart Page</title>
	<!-- Latest compiled and minified CSS -->
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">

	<!-- jQuery library -->
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

	<!-- Popper JS -->
	<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>

	<!-- Latest compiled JavaScript -->
	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container">
	   <div class="card-body">
                                   
	<table class="table table-bordered">
					<thead>
						<tr>
							<th>No</th>
							<th>minh họa</th>
							<th>tên sản phẩm</th>
							<th>số lượng</th>
							<th style="width: 50px;"></th>
							<th style="width: 50px;"></th>
						</tr>
					</thead>
					<tbody>
<?php
$count = 0;
$cart = json_decode($_COOKIE["cart"]);
foreach ($cart as $item) {
$id = $item->id . PHP_EOL;
 
$sql      = "select * from products where id = ".$id;
$items = executeResult($sql);
$items = $items[0];
	echo '<tr>
			<td>'.(++$count).'</td>
			<td><img src="'.$items['thumbnail'].'" style="width: 80px"></td>
			<td>'.$items['title'].'</td>

			<td>'.$item->num . PHP_EOL.'</td>
			<td><button class="btn btn-warning">Edit</button></td>
			<td><button class="btn btn-danger" onclick="deleteUsers(\''.$items['id'].'\')">Delete</button></td>
		</tr>';
}
?>
					</tbody>
				</table>



                                   
                </div>
</div>
<script type="text/javascript">
	function deleteUsers(username) {
		option = confirm('Are you sure to delete this user?')
		if(!option) return

		$.post('form-delete.php', {
			'username': username
		}, function(data) {//callback -> khi du lieu dc tra ve tu server
			location.reload() //load website -> khong load cung dc -> su dung jquery de update data -> tuy vao nghiep cua du an.
		})
	}
</script>
</body>
</html>


#detail.php


<?php
require_once ('../db/dbhelper.php');

$sql      = "select * from products where id=".$_GET['id'];
$items = executeResult($sql);
$item = $items[0];
?>
<!DOCTYPE html>
<html>
<head>
	<title><?=$item['title']?></title>
	<!-- Latest compiled and minified CSS -->
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">

	<!-- jQuery library -->
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

	<!-- Popper JS -->
	<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>

	<!-- Latest compiled JavaScript -->
	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
</head>
<body>


<div style="display: flex;margin-top: 30px;margin-left: 20px;border: solid 1px gray;">
	
	 
		
		<div style="width: 30%">
			<div style="width: 80%;margin-right: 0px" >
				<img src="<?=$item['thumbnail']?>" style="width: 100%;"> 
		</div>
		</div>
		<div style="width: 60%">
			<p>
				<?=$item['title']?>
			</p>
			<br>
			<p>
				<?=$item['content']?>
			</p>
			<p>
				10.000 vnđ
			</p>
			  <button class="btn btn-success" onclick="addcart(<?=$item['id']?>)">add to cart</button>

		</div>

	</div>
</div>
<script type="text/javascript">
 

		function addcart(id) {
			console.log(document.cookie);
			
			//JSON.parse & JSON.stringify
			if(document.cookie == "")
					cart = [
					 			{

					 				"id": id,
					 				"num": 1
					 			}
					 		]

			else
			{
				var cartJson = getCookie("cart");
				var cart = JSON.parse(cartJson);
					var check=0;
				for (var i = cart.length - 1; i >= 0; i--) {
					if (cart[i]['id']==id) {
						cart[i]['num']++;
						check=1;
						break;
					}
				}
					if(check==0) cart.push({
					 				"id": id,
					 				"num": 1
					 			})
			}
				
				setCookie('cart',JSON.stringify(cart),7);

		}

function setCookie(cname, cvalue, exdays) {
		  var d = new Date();
		  d.setTime(d.getTime() + (exdays*24*60*60*1000));
		  var expires = "expires="+ d.toUTCString();
		  document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

function getCookie(cname) {
  var name = cname + "=";
  var decodedCookie = decodeURIComponent(document.cookie);
  var ca = decodedCookie.split(';');
  for(var i = 0; i <ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}
	 
	 
</script>


</body>
</html>


#products.php


<?php
require_once ('../db/dbhelper.php');
$sql      = "select * from products";
$items = executeResult($sql);
?>
<!DOCTYPE html>
<html>
<head>
	<title>products Page</title>
	<!-- Latest compiled and minified CSS -->
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">

	<!-- jQuery library -->
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

	<!-- Popper JS -->
	<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>

	<!-- Latest compiled JavaScript -->
	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
</head>
<body>



<div class="container " style="margin-top: 50px">
	<div class="row">
<?php
$count = 0;
foreach ($items as $item) {
	echo '

	<div class="col-md-3" style="margin-top: 20px">
		<div class="card" style="width:100%">
    		<img class="card-img-top" src="'.$item['thumbnail'].'" alt="Card image" style="width:100%">
    <div class="card-body">
      <p class="card-text">'.$item['title'].'</p>
      <a href="detail.php?id='.$item['id'].'" class="btn btn-primary">detail</a>
	    </div>
	  </div>
	</div>

	';
}
?>
	</div>	
  
</div>
</body>
</html>


GokiSoft.com [Teacher]

Ngày viết: 20:44 13/05/2021



- Nội dung kiên thức
	- overview kiến thức
	- Yêu cầu giải đáp vấn đề gì
	- Bài test: 60 phút -> check kiến thức
		- Kiến thức căn bản: PHP & CSDL
		- Kiến thức nâng cao 1 chút -> cách chúng ta vận dụng như nào.

==============================================================
Mục 1: overview kiến thức
	- Cookie -> Cách dùng để lưu chữ dữ liệu -> giống như localStorage
		- Hiểu về cookie & biết được cách lưu trữ dữ liệu
		- Thêm/sửa/xóa cookie:
			- JS
			- Backend: PHP
Mục 2: Bài tập

===============================================================
BT2290:
B1. Xây dựng database truoc -> database: BT2290
create table products (
	id int primary key auto_increment,
	title varchar(250),
	thumbnail varchar(500),
	content text,
	created_at datetime,
	updated_at datetime
);

create table orders (
	id int primary key auto_increment,
	fullname varchar(100),
	phone_number varchar(20),
	address varchar(200),
	order_date datetime
);

create table order_details (
	id int primary key auto_increment,
	order_id int references orders (id),
	product_id references products (id),
	num int,
	price float
);

B2. Fake data
- insert into -> products: 25 ban ghi la ok

B3. Phat trien chuc nang
- products.php -> html/css/js/bootstrap/jquery
			   -> select * from products (phan trang) -> lay dc du lieu va hien thi ra la ok
			   -> click 1 product -> detail.php?id=?
- detail.php -> Thiet ke giao dien -> follow theo 1 trang ban hang -> lam theo
			 -> id tu $_GET -> lay du lieu trong database cua san pham nay $product
			 -> Hien thi noi dung
			 -> add to cart -> button -> luu cookie
			 Giai phap luu cart (bang cookie)
			 	cart => data gio hang -> string

			 	js/php
			 		cart = [
			 			{
			 				"id": ???,
			 				"num": ???
			 			},{
			 				"id": ???,
			 				"num": ???
			 			},
			 		]
			 		- Them du lieu moi
			 		- TH da ton tai -> update num cho san pham tuong ung
			 		cart -> json tring -> cookie
			 		lay du lieu json string tu cookie -> convert array -> su dung (js/php)
			 			js: JSON.parse & JSON.stringify
			 			php: json_encode & json_decode
- cart.php: code bang php
	- su dung php -> doc cart trong Cookie
	- idList => mang chua id san pham trong gio hang
	- select * from products where id in idList (String)
	- Hien thi ra giao dien html/css/js...
- checkout.php: code php
	- Tham khao thiet ke tren trang thuong mai
	- Code nhu trang cart.php
	- Form nhap thong tin ship.
	- Submit du lieu -> form: thong tin ship hang
	- Xu ly data
		- $_POST: add vao bang orders -> order id cua don hang
		- $_COOKIE: cart -> san pham + so luong -> luu vao trong order_details

	- Xu ly xong data -> xoa du lieu khoi cookie => Thanh cong va xong.


Tài Liệu Tham Khảo

Ứng Dụng Tiện Ích



Đã sao chép!!!