lập trình websie, nhập môn web. website Bán Bánh Ngọt với các chức năng của admin và người dùng: gồm thêm sửa xóa tìm kiếm, xuất excel, tính doanh thu, mua hàng, gửi email, đăng kí đăng nhập. và một số chức năng khác với giao điện bắt mắt, db đầy đủ. ai cần liên hệ 0967622613.
Trang 1Hà Nội, tháng 12 năm 2022
Trang 2Mục lục
Trang 31.Khảo sát và phân tích
1.1 Khảo sát
- Hiện nay, các hình thức kinh doanh truyền thống thường đi kèm với một trang thương mại điện tử để quảng cáo hoặc đáp ứng nhu cầu mua sắm, website mang đến sự tiện lợi cho người dùng.
- Dự án cửa hàng bán bánh là dự án xây dựng website cho cửa hàng bán bánh ngọt trên internet Mục đích lớn nhất của website này là đáp ứng nhu cầu mua sắm, tìm hiểu các loại bánh, ngoài ra website này còn bán kém các đồ uống
- Lý do chính để phát triển mô hình web bán bánh là mong muốn bánh ngọt của Dani Cake được biết đến và phổ biến rộng rãi hơn ở Việt Nam
1.2 Cơ sở dữ liệu
Cấu Trúc
Trang 62 Giao diện và chức năng
2.1 Admin
2.1.1 Giao diện đăng nhập
Trang 7<form action="" method="POST">
<label for="login-username" class="login-label">
<i class='bx bx-user'></i>
Tài Khoản</label>
<input type="text" name="LGusername" class="login-input" id="login-username" placeholder="Tên Đăng Nhập" required />
<label for="login-password" class="login-label">
<i class='bx bx-lock-alt'></i>
Trang 9<form action="" method="POST">
<label for="register-username" class="register-label">
<i class='bx bx-user'></i>
Tài Khoản</label>
<input name="RGusername" type="text" class="register-input" id="register-username" placeholder="Tên Đăng Nhập" minlength="6" required />
<label for="register-password" class="register-label">
<i class='bx bx-lock-alt'></i>
Mật Khẩu</label>
<input name="RGpassword1" type="password" class="register-input" id="register-password" placeholder="Mật Khẩu" minlength="6" required />
<label for="register-password2" class="register-label">
<i class='bx bx-lock-alt'></i>
Nhập Lại Mật Khẩu</label>
<input name="RGpassword2" type="password" class="register-input" id="register-password2" placeholder="Mật Khẩu" minlength="6" required />
<label for="register-email" class="register-label">
<i class='bx bx-envelope'></i>
Trang 102.1.2 Giao diện tổng quan Admin
<div class="content" style="margin-left:25% ;margin-top:32px">
<h1>Đã Đăng Nhập Quyền ADMIN !!!</h1>
<table style="border:0px">
<tr> <td>
<h2>Code By:</h2>
Trang 11</table>
2.1.3 Quản Lý Tài Khoản
Trang 12Tìm kiếm
<div class="search">
<form action="" method="POST">
<input type="text" name="searchbar" placeholder="Username or Email ">
<select name="cboRole" id="cboRole">
<option value="">Tất Cả</option>
<option value="0">Người Dùng</option>
<option value="1">Admin</option></select>
<input class="btn" type="submit" value=" Tìm kiếm " name="search">
<input class="btn" type="button" onclick="tableToExcel('Content_ID')" value="Xuất ra excel"> </form></div><?php
if (isset($_POST["search"])) {
$s = $_POST["searchbar"];
$srole = $_POST["cboRole"];
if ($s == '' && $srole == '') {
$sql = "SELECT * FROM account ";
} elseif ($s == '' && $srole != '') {
$sql = "SELECT * FROM account WHERE Role = $srole ";
} elseif ($s != '' && $srole == '') {
$sql = "SELECT * FROM account WHERE Username like '%$s%' OR Email like '%$s%'"; } else $sql = "SELECT * FROM account WHERE (Username like '%$s%' OR Email like '%$s%') AND Role = $srole";
$result = mysqli_query($conn, $sql);
$count = mysqli_num_rows($result);
if ($count <= 0) {echo "<br>Không tìm thấy kết quả phù hợp <br> <br>";
echo "<a class='btn' href='ad_user.php';>Refesh </a>";
} else {echo "Tìm thấy " $count " kết quả : ";
?>
Trang 13
Xuất Excel
var tableToExcel = (function() {
var uri = 'data:application/vnd.ms-excel;base64,',
template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" microsoft-com:office:excel" xmlns="http:www.w3.org/TR/REC-html40"><meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8"><head><! [if gte mso
xmlns:x="urn:schemas-9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif] ></head><body><table>{table}</table></body></html>',
return function(table, name) {
if (!table.nodeType) table = document.getElementById(table)
Trang 142.1.4 Quản Lý catalog
Tìm kiếm
if (isset($_POST["search"])) {
$s = $_POST["searchbar"];
if ($s == '') $sql = "SELECT * FROM catalog ";
else $sql = "SELECT * FROM catalog WHERE Name LIKE '%$s%'"; $result = mysqli_query($conn, $sql);
$count = mysqli_num_rows($result);
if ($count <= 0) {
echo "<br>Không tìm thấy kết quả phù hợp <br> <br>";
echo "<a href='adminset.php';>Refesh </a>";
} else {
echo "Tìm thấy " $count " kết quả : ";
?>
Trang 16$specFileType = strtolower(pathinfo($specPicture, PATHINFO_EXTENSION));
if ($specFileType != "jpg" && $specFileType != "png" && $specFileType != "jpeg" && $specFileType !=
Trang 17Sửa Thông tin sản phẩm
Trang 18$row = mysqli_fetch_array($result);
$count = mysqli_num_rows($result);
$specPicture = $_FILES['image']['name'];
$specFileType = strtolower(pathinfo($specPicture, PATHINFO_EXTENSION));
if ($specFileType != "jpg" && $specFileType != "png" && $specFileType != "jpeg" && $specFileType !=
} else {
$sql2 = "UPDATE product SET
Catalog_ID='$catalog',Name='$name',Price=$price,Quantity='$quan',Descrip='$des' WHERE ID=" $ID; }
$result2 = mysqli_query($conn, $sql2);
echo '<script>alert("Sản phẩm này đã được thêm thành công")</script>';
header('location:ad_cake.php?ID=' $ID);
}
Trang 192.1.6 Quản lý đơn hàng
Chi tiết đơn hàng
Trang 20<div class="content">
<h1>Chi Tiết Đơn Hàng !!!</h1>
<div class="form" style="max-width:30%">
<form action="" method="POST">
<label for="username">Tên Người Nhận Hàng</label> <input value="<?php echo $rows['name']; ?>" readonly> <label for="username">Địa Chỉ</label>
<input value="<?php echo $rows['address']; ?>" readonly> <label for="username">Số Điện Thoại</label>
<input value="<?php echo $rows['phone']; ?>" readonly> <label for="username">Ghi Chú</label>
<input value="<?php echo $rows['message']; ?>" readonly> <label for="catalog">Trạng Thái Đơn Hàng</label>
<select name="status" id="status">
Trang 21<br><input class="btn" type="submit" id="updateorder" name="updateorder" value=" Cập Nhật "> <input class="btn" type="button" onclick="location.href=' del_order.php?ID=<?php echo $ID; ?>'" value=" Xóa Đơn ">
<input class="btn" type="button" onclick="location.href='ad_orders.php'" value=" Quay Lại“ </form> </div>
Trang 222.2 Giao diện khách hàng
2.2.1 Giao diện sau khi đăng nhập
Trang 23Tìm kiếm
Trang 24<a class="product-name " href="facebook.com"> <?=$d[2]?></a><br>
<button> <a href="pro.php?ID=<?=$d[0]?>"> <i class='bx bx-basket'></i>Đọc Tiếp</a>
Trang 26<li><i class='bx bx-phone-call'></i>Đặt Hàng: 0967622613</li>
<li><i class='bx bxs-shopping-bags'></i>Free Ship từ 100.000<small>vnd</small></li> </ol>
</div>
<div class="col-7">
<div class="card1 ">
<div class="imgds">
Trang 27<img style="height: 200px; width: 280px;" tri-trai-cay-tuoi.png" alt=" ảnh giày ">
<h3>DANI CAKE TRIEU KHUC<br><span >Cơ Sở-01</span></h3>
</div>
<div class="details1">
<h3>DANI CAKE TRIEU KHUC<br> <span >Cs-01</span></h3>
<h4 class="claa">54 Triều Khúc, Q.Thanh Xuân, Hà Nội</h4>
<p class="claa"> Giờ mở cửa: 7h30-22h00</p>
<h4 class="claa">Tiện Ích</h4>
<ul class="size" style="padding-left: 0" >
<li><i class='bx bxs-car-garage'></i> Có chỗ đỗ xe hơi </li>
<li> <i class='bx bx-home'></i>Phục Vụ Tại chỗ</li>
<li> <i class='bx bxs-shopping-bag-alt'></i>Mang đi</li>
Trang 282.2.5 Tin Tức
2.2.6 liên hệ
Trang 292.2.7 Xem Chi Tiết Sản Phẩm
Thêm sản phẩm vào giỏ hàng
Trang 302.2.8 Giỏ Hàng
Xử lý thêm sản phẩm vào giỏ hàng
if (isset($_POST["ID"]) && isset($_POST["numbe"])) {
Trang 32foreach ($_SESSION['cart'] as $key => $value) {
$total2 += (int)$value["numbe"] * (int)$value["price"];
}
$_POST["total"] = $total2;
$table = 'orders';
$id = addNew($table, $_POST);
foreach ($_SESSION['cart'] as $key => $value) {
$price = $value["price"];
$numbe = $value["numbe"];
// $sql= "insert into (order_id,pro_id,pro_price,pro_number,status,datecreate)";
// $sql = "VALUES('$id','$key','$price','$numbe','1','$curentdate')";// = la noi chuoi
$sql = "INSERT INTO order_detail( `order_id`, `pro_id`, `pro_price`, `pro_number`, `status`,
`datecreate`) VALUES ('$id','$key','$price','$numbe','0','$curentdate')";
//$sql = "Insert Into orderdetail ('".$id."','".$key."',".$price.",".$numbe.",".1.",'".$curentdate."')";
Trang 343 Tổng kết
Thông qua dự án Dani Cake này, Nhóm em đã học được rất nhiều điều.
- Chúng em đã biết cách sử dụng và thao tác để tạo Dani Cake với các chức năng cơ bản như CRUD của một website thông thường Ngoài ra còn áp dụng một số kiến thức như mysql; đặc biệt là nâng cao khả năng front-end như css, bootstrap làm cho website rất đẹp Nâng cao khả năng tư duy lập trình back-end cho các chức năng cơ bản và chức năng thiết yếu như đăng nhập, kiểm tra xác thực.
Ngoài những ưu điểm trên, website của chúng tôi còn gặp một số vấn đề như sau
- Viết code, đồng bộ chưa chuyên nghiệp, còn mắc các lỗi cơ bản.
- Các thành viên chưa thực sự tập trung vào công việc, tiến độ chậm khiến việc hoàn thiện website chậm hơn dự kiến, giao diện người dùng chưa hoàn hảo, các dòng code chưa được tối ưu.
Trang 35-4.Phân công công việc
(%) Nguyễn Khương
Vũ Nguyễn Giao diện và chức năng quản lí
• Xuất file excel
• Tìm kiếm, thêm sửa xóa sản phẩm