By GokiSoft.com| 14:56 27/04/2022|
Học PHP

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

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


#readme.txt


Nội dung kiến thức:
- Chữa bài tập
- Kiến thức lập trình OOP
- Hướng dẫn qua -> cách tìm hiểu và tạo dự án bằng Laravel
===============================================================
Phân tích dự án:
B1) Phân tích database
create database bt2289

create table product (
	id int primary key auto_increment,
	title varchar(150),
	price float,
	thumbnail varchar(500),
	content text,
	created_at datetime,
	updated_at datetime
)

fake data

B2) Tạo khung dự án
B3) Viết mobule chức năng
B4) Phân tích bài toán phân trang
- select * from ... where ...
100 - 1000 sản phẩm

limit: 10 sản phẩm

page 1: 0 -> 9
page 2: 10 -> 19
page 3: 20 - 29
...


#db/config.php


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


#db/dbhelper.php


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

function execute($sql) {
	// B1) Ket noi CSDL
	$conn = mysqli_connect(HOST, USERNAME, PASSWORD, DATABASE);
	mysqli_set_charset($conn, 'utf8');

	// B2) Insert du lieu vao database
	// echo $sql;die();
	// insert, update, delete
	mysqli_query($conn, $sql);

	// B3) Dong ket noi CSDL
	mysqli_close($conn);
}

function executeResult($sql, $isSingle = false) {
	// B1) Ket noi CSDL
	$conn = mysqli_connect(HOST, USERNAME, PASSWORD, DATABASE);
	mysqli_set_charset($conn, 'utf8');

	// B2) Insert du lieu vao database
	// echo $sql;die();
	// insert, update, delete
	$resultset = mysqli_query($conn, $sql);

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

	// B3) Dong ket noi CSDL
	mysqli_close($conn);

	return $data;
}


#utils/utility.php


<?php
function getPost($key, $special = "'") {
	$value = '';
	if(isset($_POST[$key])) {
		$value = $_POST[$key];

		//Huy ky tu dac biet trong $value
		$value = str_replace($special, "\\".$special, $value);
	}

	return $value;
}

function getGet($key, $special = "'") {
	$value = '';
	if(isset($_GET[$key])) {
		$value = $_GET[$key];

		//Huy ky tu dac biet trong $value
		$value = str_replace($special, "\\".$special, $value);
	}

	return $value;
}

function getTimeFormat($str) {
	$mydate = new DateTime($str);
	return $mydate->format('H:i d/m/Y');
}


#detail.php


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

$id = getGet('id');

$sql = "select * from product where id = '$id'";
$product = executeResult($sql, true);
if($product == null) {
	header('Location: product.php');
	die();
}
?>
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title><?=$product['title']?> Page</title>
	<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
	<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>

	<style type="text/css">
		.form-group {
			margin-bottom: 20px;
		}

		.card {
			margin-bottom: 20px;
		}
	</style>
</head>
<body>
<div class="container">
	<div class="row">
		<p>
			<a href="product.php">Product List</a>
		</p>
		<div class="col-md-5">
			<img src="<?=$product['thumbnail']?>" style="width: 100%">
		</div>
		<div class="col-md-5">
			<h2><?=$product['title']?></h2>
			<h4>Price: <?=number_format($product['price'], 0)?> VND</h4>
			<p>
				<?=$product['content']?>
			</p>
		</div>
	</div>
</div>
</body>
</html>


#product.php


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

$s = getGet('s');

$limit = 5; //Ý nghĩa: mỗi trang 10 sản phẩm
$page = getGet('page');
if(empty($page) || $page <= 0) {
	$page = 1;
}
$index = ($page - 1) * $limit;

// Bo sung code cho phan phan trang - Cach 2: START
// Dem dc so page ton tai cho du an
// Dem dc so san pham trong sql
if(empty($s)) {
	$sql = "select count(*) as total from product";
} else {
	$sql = "select count(*) as total from product where title like '%$s%'";
}
$data = executeResult($sql, true);
$total = $data['total'];

$pageNum = ceil($total / $limit);
// Bo sung code cho phan phan trang - Cach 2: END

if(empty($s)) {
	$sql = "select * from product limit $index, $limit";
} else {
	$sql = "select * from product where title like '%$s%' limit $index, $limit";
}

$productList = executeResult($sql);
?>
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title>Product Management Page</title>
	<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
	<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>

	<style type="text/css">
		.form-group {
			margin-bottom: 20px;
		}

		.card {
			margin-bottom: 20px;
		}
	</style>
</head>
<body>
<div class="container">
	<form method="get">
		<input type="text" name="s" class="form-control mb-4" style="width: 200px; float: right;" placeholder="Searching ...">

		<!-- <input type="checkbox" name="scheck" class="mb-4" style="float: right;" value="okok"> -->
	</form>
	<table class="table table-bordered">
		<thead>
			<tr>
				<th>No</th>
				<th>Thumbnail</th>
				<th>Title</th>
				<th>Price</th>
				<th>Update At</th>
			</tr>
		</thead>
		<tbody>
<?php
foreach($productList as $item) {
	echo '<tr>
			<td>'.(++$index).'</td>
			<td><a href="detail.php?id='.$item['id'].'"><img src="'.$item['thumbnail'].'" style="width: 120px"/></a></td>
			<td><a href="detail.php?id='.$item['id'].'">'.$item['title'].'</a></td>
			<td>'.number_format($item['price'], 0).'</td>
			<td>'.getTimeFormat($item['updated_at']).'</td>
		</tr>';
}
?>
		</tbody>
	</table>
	<!-- Cach 1 -->
	<div class="row">
		<div class="col-md-12">
			<?php
				if($page > 1) {
					echo '<a href="?page='.($page - 1).'"><button class="btn btn-warning" style="float: left">Previous</button></a>';
				}
				if(count($productList) == $limit) {
					echo '<a href="?page='.($page + 1).'"><button class="btn btn-warning" style="float: right">Next</button></a>';
				}
			?>
		</div>
	</div>

	<!-- Cach 2 -->
	<div class="row" style="margin-top: 30px;">
		<div class="col-md-12">
			<ul class="pagination">
<?php
if($page > 1) {
	echo '<li class="page-item"><a class="page-link" href="?page='.($page - 1).'">Previous</a></li>';
}
for ($i=1; $i <= $pageNum; $i++) {
	if($page == $i) {
		echo '<li class="page-item active"><a class="page-link" href="?page='.$i.'">'.$i.'</a></li>';
	} else {
		echo '<li class="page-item"><a class="page-link" href="?page='.$i.'">'.$i.'</a></li>';
	}
}
if(count($productList) == $limit) {
	echo '<li class="page-item"><a class="page-link" href="?page='.($page + 1).'">Next</a></li>';
}
?>
			</ul>
		</div>
	</div>
</div>
</body>
</html>


Tags:



Phản hồi từ học viên

5

(Dựa trên đánh giá ngày hôm nay)

Đăng nhập để làm bài kiểm tra

Chưa có kết quả nào trước đó