Video demo: https:youtu.be0WkCXIwr8Rw Bài báo cáo sử dụng ngôn ngữ lập trình Dart trên SDK Flutter để thiết kế. Sử dụng DB MySql và Localhost để quản lý các đơn hàng, xuất hóa đơn. Kết nối mobile app và database thành một hệ thống hoàn chỉnh.Với phương hướng đặt ra là giảm sự tiếp xúc giữa nhân viên phục vụ trong nhà hàng, quán ăn với thực khách nhiều nhất có thể cũng như tiếp xúc giữa các thực khách với nhau.
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH
KHOA ĐÀO TẠO CHÂT LƯỢNG CAO
ĐỒ ÁN MÔN HỌC 2
ĐỀ TÀI: THIẾT KẾ ỨNG DỤNG ANDROID VÀ
GỬI DỮ LIỆU LÊN DATABASE ỨNG DỤNG TRONG VIỆC GỌI MÓN TRONG NHÀ HÀNG VÀ QUÁN ĂN
MSSV: 171057 Trần Thái Hà Phong MSSV: 17161115
Hồ Chí Minh, ngày 10 tháng 01 năm 2022
Trang 2CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAMĐộc lập – Tự do – Hạnh phúc
Ngành: CNKT Điện tử- Viễn thông Lớp:18161CLVT2B
Giảng viên hướng dẫn:Th.S Phan Học ĐT: 0869683324
Ngày nhận đề tài:06/09/2021 Ngày nộp đề tài: 10/01/2022
1 Tên đề tài: Thiết kế ứng dụng android và gửi dữ liệu lên database ứng dụng trongviệc gọi món trong nhà hàng và quán ăn
2 Các số liệu, tài liệu ban đầu:
- Trang web https://docs.flutter.dev/
- Trang web https://stackoverflow.com/
3 Nội dung thực hiện đề tài:
- Tìm hiểu về cách xây dựng mobile app bằng ngôn ngữ Dart sử dụng SDK Flutter
- Tìm hiểu và xây dựng database
- Kết nối mobile app và database thành một hệ thống hoàn chỉnh
4 Sản phẩm:
Ứng dụng android có thể gửi dữ liệu lên database
Trang 3- PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Họ và tên Sinh viên: Nguyễn Vũ Long MSSV: 17161057
Trần Thái Hà Khang MSSV: 17161115
Ngành: CNKT Điện tử – Viễn thông
Tên đề tài: Thiết kế ứng dụng android và gửi dữ liệu lên database ứng dụng trong việc gọimón trong nhà hàng và quán ăn
Họ và tên Giáo viên hướng dẫn: TS Phan Học
NHẬN XÉT
1 Về nội dung đề tài & khối lượng thực hiện:
Ưu điểm:
2 Khuyết điểm:
3 Đề nghị cho bảo vệ hay không?
4 Đánh giá loại:
5 Điểm:……….(Bằng chữ: )
Tp Hồ Chí Minh, ngày 10 tháng 01 năm 2022
Giáo viên hướng dẫn
Trang 4(Ký & ghi rõ họ tên)
- PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Họ và tên Sinh viên: Nguyễn Vũ Long MSSV: 17161057
Trần Thái Hà Khang MSSV: 17161115
Ngành: CNKT Điện tử – Viễn thông
Tên đề tài: Thiết kế ứng dụng android và gửi dữ liệu lên database ứng dụng trong việc gọimón trong nhà hàng và quán ăn
Họ và tên Giáo viên hướng dẫn: TS Phan Học
NHẬN XÉT
1 Về nội dung đề tài & khối lượng thực hiện:
2 Ưu điểm:
3 Khuyết điểm:
4 Đề nghị cho bảo vệ hay không?
5 Đánh giá loại:
6 Điểm:……….(Bằng chữ: )
Tp Hồ Chí Minh, ngày 10 tháng 01 năm 2022
Trang 5(Ký & ghi rõ họ tên)
LỜI CẢM ƠN
Quá trình thực hiện Đồ án môn học 2 là giai đoạn quan trọng trong quãng đời mỗisinh viên, nó là tiền đề nhằm trang bị kiến thức quý báu, kỹ năng nghiên cứu lẫn kinhnghiệm khi thi công để chuẩn bị cho đồ án tốt nghiệp
Trước tiên, em xin gửi lời cảm ơn chân thành đến các Thầy trong khoa Đào tạoChất lượng cao, trường Đại học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh, nhữngngười đã truyền đạt cho em những kiến thức quý báu, chỉ dẫn và định hướng cho nhómtrong quá trình học tập
Em xin trân trọng cảm ơn thầy Phan Học đã tận tình giúp đỡ, định hướng cách tưduy và cách làm việc khoa học Đó là những góp ý hết sức quý báu không chỉ trong quátrình thực hiện đồ án này mà còn là hành trang tiếp bước cho em trong quá trình học tập
và lập nghiệp sau này
Do kiến thức còn hạn hẹp nên mặc dù đã hoàn thành đề tài nhưng cũng khó tránhkhỏi thiếu sót, rất mong sự chỉ dẫn và đóng góp của Thầy để đề tài của em được hoànthiện hơn
Em xin chân thành cảm ơn!
Trang 6LỜI NÓI ĐẦU
Trong tình hình dịch bệnh COVID-19 đang ngày càng diễn biến theo xu hướngtiêu cực, kéo theo nhiều hệ luỵ khác nhau gây thiệt lớn về người và của trong nước ta nóiriêng và trên toàn thế giới nói chung Nhưng song song nó, đây cũng là cơ hội để các côngnghệ không dây, IoT bước vào thời kì bùng nổ vì giảm sự tiếp xúc giữa người với người.Nắm bắt được điều này, nhóm chúngg em đã quyết định lựa chọn đề tài:” THIẾT KẾ ỨNG DỤNG ANDROID VÀ GỬI DỮ LIỆU LÊN DATABASE ỨNG DỤNG TRONG VIỆC GỌI MÓN TRONG NHÀ HÀNG VÀ QUÁN ĂN”
Hưởng ứng theo cái qui định phòng chống dịch bệnh, đặc biệt là qui tắc “5K”,nhóm chúng em đã tiến hành nghiên cứu và xây dựng ra 1 ứng dụng giúp các nhà hàng vàquán ăn có thể sử dụng để nâng cao hiệu quả phòng chống dịch bệnh trong tình hình hiệntại
Trang 7MỤC LỤC
NHIỆM VỤ ĐỒ ÁN MÔN HỌC i
LỜI CẢM ƠN iv
LỜI NÓI ĐẦU v
MỤC LỤC vi
DANH MỤC HÌNH ẢNH vii
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 1
1.1 Đặt vấn đề 1
1.2 Mục tiêu 1
1.3 Nội dung nghiên cứu 1
1.4 Phương pháp nghiên cứu 1
1.5 Bố cục 1
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2
2.1 Ngôn ngữ lập trình Dart và Flutter 2
2.1.1 Sơ lược về ngôn ngữ lập trình Dart 2
2.1.2 Sơ lược về Flutter 2
2.2 Ứng dụng Docker 3
2.3 MySql và PhpMyAdmin 3
2.3.1 MySQL 3
2.3.2 PhpMyAdmin 4
2.3.3 Quá trình phối hợp và hoạt động của MySQL và PhpMyAdmin 4
CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG 5
3.1 Phân tích các chứng năng chính của hệ thống 5
3.2 Quy trình thiết kế ứng dụng đặt hàng 5
3.2.1 Thiết kế giao diện ứng dụng 5
3.2.2 Tiến hành lập trình ứng dụng 5
3.3 Tạo và xây dựng cơ sở dữ liệu MySQL 9
3.4 Lập trình Php truy vấn dữ liệu MySQL 12
3.4.1 Kết nối với CSDL MySQL 12
Trang 83.4.2 Tạo trang báo cáo chi tiết hóa đơn 13
CHƯƠNG 4: KẾT QUẢ THỰC HIỆN 15
CHƯƠNG 5: KẾT LUẬN VÀ PHƯƠNG HƯỚNG PHÁT TRIỂN 19
5.1 Kết luận 19
5.2 Phương hướng phát triển 19
TÀI LIỆU THAM KHẢO 20
PHỤ LỤC 1 21
Trang 9DANH MỤC HÌNH ẢNH
Hình 3.2 Mô hình cấu tạo nên một project của Flutter……… 2
Hình 3.2.1 Sử dụng Figma thiết kế giao diện ứng dụng………5
Hình 3.2.2 Minh họa các tạo một text……… 6
Hình 3.2.3 Các sử dụng các Container……… 7
Hình 3.2.4 Cách tạo srolling menu 2 cột……… 8
Hình 3.3.1 Tạo database MySQL………10
Hình 3.3.2 Bảng sản phẩm……… …11
Hình 3.3.3 Tạo liên kết giữa các bảng……….12
Hình 3.4.1 Kết quả bảng báo cáo hóa đơn chi tiết……… 14
Trang 11CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 1.1 Đặt vấn đề
Trong thời điểm dịch bệnh hiện tại, việc các quán ăn hay nhà hàng đóng cửa làđiều không tránh khỏi vì để tránh lây lan dịch giữa các khách hàng với nhau Từ đò,nhóm chúng em đã suy nghĩ ra phương hướng giải pháp giúp đỡ các nhà hàng, quán
ăn là nâng cao hiệu quả chống dịch
Từ những suy nghĩ trên, đồng thơi với bản thân là sinh viên ngành CNKT Điện
tử-Viễn thông, nhóm chúng em đã quyết định lựa chọn đề:” THIẾT KẾ ỨNG DỤNG ANDROID VÀ GỬI DỮ LIỆU LÊN DATABASE ỨNG DỤNG TRONG VIỆC GỌI MÓN TRONG NHÀ HÀNG VÀ QUÁN ĂN” Với phương hướng đặt
ra là giảm sự tiếp xúc giữa nhân viên phục vụ trong nhà hàng, quán ăn với thực kháchnhiều nhất có thể cũng như tiếp xúc giữa các thực khách với nhau
1.2 Mục tiêu
Xây dựng thành công ứng dụng điện thoại, tạo , quản lý thành công cơ sở dữliệu và kết nối thiết bị và cơ sở dữ liệu
1.3 Nội dung nghiên cứu
Nghiên cứu về ngôn ngữ lập trình Dart, cách thức xây dựng được ứng dụngAndroid Đồng thời có thể bổ sung được kiến thức về lập trình nâng cao khả năngsáng tạo của bản thân
Tạo và quản lý hệ cơ sở dữ liệu
Kết nối thiết bị với cơ sở dữ liệu
1.4 Phương pháp nghiên cứu
Cài đặt và sử dụng Flutter, sử dụng ngôn ngữ lập trình Dart để xây dựng ứngdụng điện thoại
Cài đặt và sử dụng ứng dụng Docker Desktop với mục đích chạy MySQL vàPhpMyAdmin
Sử dụng PhpMyAdmin quản trị hệ cơ sở dữ liệu MySQL: thêm, xóa, cập nhật
dữ liệu và tạo các bảng
Kết nối thiết bị với cơ sở dữ liệu
1.5 Bố cục
Nội dung đề tài gồm 5 chương
- Chương 1: Tổng quan về đề tài
- Chương 2: Cơ sở lý thuyết
- Chương 3: Thiết kế và xây dựng hệ thống
- Chương 4: Kết quả thực hiện
- Chương 5: Kết luận và phương hướng phát triển
Trang 12CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Ngôn ngữ lập trình Dart và Flutter
2.1.1 Sơ lược về ngôn ngữ lập trình Dart
Dart là một ngữ lập trình với mã nguồn mở đa năng và được phát triển bởiGoogle Ngôn ngữ Dart được ứng dụng trong lập trình web, server và diđộng( Android và IOS)
Ngôn ngữ lập trình Dart là ngôn ngữ lập trình hướng đối tượng, hoạt động theolớp (class) và sử dụng cú pháp kiểu C để dịch mã JavaScript
Ưu điểm khi sử dụng ngôn ngữ lập trình Dart:
- Bộ công cụ đơn giản, dễ sử dụng nhưng mang lại hiệu suất cao
- Hỗ trợ xác định và sửa lỗi bằng type-safe
- Có thể biên dịch thành mã x86 và ARM giúp hoạt động một cách trơn tru trênIOS, Android
2.1.2 Sơ lược về Flutter
Flutter là một SDK (Software Development Kit) hỗ trợ người dùng phát triểnứng dụng dành riêng cho Android và IOS
Flutter còn là một Mobile UI Framework của Google dựa trên ngôn ngữ lậptrình Dart Cho phép người dùng tạo ra các giao diện trông tự nhiên nhưng đạt hiệuquả cao về chất lượng trên Android và IOS
Mô hình cấu tạo nên một project của Flutter:
Hình 3.2 Mô hình cấu tạo nên một project của Flutter
Trang 13MaterialApp có các thuộc tính của màn hình như title, theme và home , nó lạiđược tạo ra bởi một widget khác, MyHomePage.
MyHomePage được tạo bởi một widget gốc của flutter, Scaffold
Scaffold đóng vai trò như phần nền để bố trí các thành phần cơ bản khác.Scaffold có 2 thuộc tính – body và appBar
Body chứa giao diện chính còn appBar chứa phần đầu (header) của ứng dụng
Ưu điểm của Flutter:
- Xây dựng và phát triển ứng dụng nhanh
- Giao diện linh hoạt đẹp mắt
Xây dựng môi trường phát triển ứng dụng Php và MySql bằng Docker-compose:
- Bước 1: tạo docker network, điều này giúp các container trong cùng 1 network
có thể giao tiếp với nhau thông qua container name
Docker network này có tên là mysql , tiếp theo ta sẽ đặt 2 container chạymysql và phpmyadmin trong network mysql này
- Bước 2: Khởi tạo Docker container từ Docker Image của MySql
Trước tiên là tạo một thư mục dùng để lưu dữ liệu của Docker container, ví dụ: /home/moe/mysql_data
Sau đó, chạy lệnh:
docker run name learn_mysql network mysql -v/home/moe/mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 -
d mysql:5.7
- Bước 3: Khởi tạo Docker container từ Docker Image của PhpMyAdmin
Chạy lệnh sau: docker run name myadmin -d network mysql -p 8081:80 -ePMA_HOST=learn_mysql phpmyadmin/phpmyadmin
- Sau khi hoàn thành cả bước trên ta truy cập vào địa chỉ http://localhost:8081/
2.3 MySql và PhpMyAdmin
2.3.1 MySQL
MySQL là hệ quản trị cơ sở dữ liệu (Database management) với mã nguồn mởphổ biến nhất thế giới
Trang 14Câu lệnh SQL là ngôn ngữ MySQL dùng để trao đổi dữ liệu giữa máy tính vàmáy cài MySQL server Có 4 loại ngôn ngữ: ngôn ngữ định nghĩa dữ liệu, ngôn ngữtruy vấn dữ liệu, ngôn ngữ thao tác dữ liệu và ngôn ngữ điều khiển dữ liệu.
MySQL lưu trữ dữ liệu trong một bảng (table) gồm nhiều hàng (bảng ghi dữliệu) và cột (trường dữ liệu)
MySQL cung cấp các câu lệnh phong phú để kết nối, yêu cầu và truy xuất lấy
dữ liệu phục vụ cho trang web như: chỉnh sửa các hàng trong một mối quan hệ ( chèn,xóa, cập nhật), thêm/xóa/sửa các đối tượng trong cơ sở dữ liệu, điều khiển việc truycập đến cơ sở dữ liệu
2.3.2 PhpMyAdmin
PhpMyAdmin là phần mềm mã nguồn mở được viết bằng ngôn ngữ PHP giúpquản trị cở sở dữ liệu MySQL thông qua giao diện web
Một số tính năng của PhpMyAdmin như:
- Quản lý người dùng (User): thêm, xóa, sửa, cấp quyền
- Quản lý cơ sở dữ liệu: Thêm, xóa, sửa, thêm bảng, thêm hàng…
- Truy vấn MySQL
- Sao lưu và khôi phục
2.3.3 Quá trình phối hợp và hoạt động của MySQL và PhpMyAdmin
Khi Client yêu cầu server cho phép tải một tập tin hay một số dữ liệu lên web, có 4bước diễn ra:
- Bước 1: Server sử dụng PHP để tải tập tin
- Bước 2: PHP truyền tập tin đến MySQL và nhờ MySQL lưu trữ tập tin này
- Bước 3: MySQL chấp nhận yêu cầu của PHP
- Bước 4: PHP phản hồi là MySQL đã chấp nhận yêu cầu, lệnh đã được gửiserver có thể in nội dung tập tin đó
Trang 15CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG
3.1 Phân tích các chứng năng chính của hệ thống
3.2.1 Thiết kế giao diện ứng dụng
Thiết kế giao diện ứng dụng hay còn được gọi là UI Design là công đoạn thiết
kế giúp người dùng có khả năng trao đổi với thiết bị điện tử thông qua phần mềm, nút
ấn, thanh trượt và còn là công đoạn quyết định màu sắc, hình ảnh của ứng dụng
Ở phần này, nhóm em đã chọn Figma làm công cụ để thiết kế giao diện
Hình 3.2.1 Sử dụng Figma thiết kế giao diện ứng dụng
3.2.2 Tiến hành lập trình ứng dụng
a Trang đầu tiên của ứng dụng
Để cho giao diện phù hợp với mọi kích cỡ màn hình, ta import thêmpackage ‘dart:ui’ và dùng cú pháp
MediaQuery dùng để đọc trực tiếp kích thước màn hình hiện tại, trường hợp trên
đã cho sẵn kích thước là Pixel 3 là 393 x 786 Tiếp theo đó dùng phương pháp thamsuất chia chiều dài cho 786 và chiều rộng cho 393 ta sẽ có được một giao diện
Trang 16freesize, bằng cách đó khi lập trình các phần cần kích thước, ta chỉ cần nhân kíchthước freesize với kích thước mong muốn ta sẽ có được giao diện phù hợp kích thướcmàn hình hiện tại của thiết bị.
Ví dụ như để tạo được một text như “THE CAKE STORE”
Hình 3.2.2 Minh họa cách tạo một text
Trang 17Điểm nổi bật của cách thức lập trình này là ta chia màn hình thành các cột vàcác hàng và các phần tử tiếp theo sẽ được phân cách bằng các container với độ height
và witdh xác định
Hình 3.2.3 Cách sử dụng các Container
Ta giả định body là một column (cột) các phần tử trong cột này gồm cáccontainer Ở chỗ được đánh số thứ tự 1 là tạo ra một container rỗng có chiều cao 90nhằm ngăn bỏ 1 khoảng trắng ở trên để chèn Text vào phần tiếp theo phía dưới.Tương tự vậy container số 2 cũng là một container rỗng và container số 3 được làmđầy bằng một bức hình Tiếp tục làm như vậy cho bottom
Để có thể nhấn chuyển sang trang tiếp theo ta phải sử dụng hàmGestureDetector nhằm xử lí tất cả cử chỉ, và trong chương trình này cử chỉ chính làonTap (chạm)
b Trang thứ hai của ứng dụng
Ở trang này, các món ăn sẽ được triển khai bằng một danh sách từ trên xuốngdưới dạng column, row và có thể scroll được, ta dùng SingleChildScrollView Widget.Tiếp theo sẽ là các Padding Widget được giới hạn 8.0 theo mọi hướng, ta dùng phầnnày để bao bọc các phần như hình ảnh món ăn, giá tiền và số lượng
Ta sẽ dùng nhiều câu lệnh column và row lồng vào nhau để đặt các Padding vàonơi mong muốn được minh họa như hình dưới :
Trang 18Hình 3.2.4 Cách tạo Srolling Menu 2 cộtĐầu tiên ta sẽ mặc toàn màn hình là một cột chính ( nơi được đánh số 1 trênhình), tiếp theo ta sẽ chia cột lớn thành nhiều hàng ( nơi được đánh số 2), từ trênxuống vậy thì số 2 sẽ là hàng đầu tiên Trong hàng đầu tiên này ta sẽ chia làm hai cộtđược đánh số là 3 và 4, mỗi cột đặt một Padding thì sẽ được kết quả như hình Làmtương tự như vậy cho hàng 2,3,4,5… Theo yêu cầu.
Để có thể thêm hình vào các Padding, ta kéo hình ảnh vào thư mục Assets trongthư mục project rồi dùng câu lệnh chèn hình vào nơi mình mong muốn ví dụ: chènmình vào Padding đầu tiên, tên hình là an1.jpg
Trang 19Tiếp theo là các phím tăng giảm số lượng của sản phẩm ta lại dùngGestureDetector để phát hiện cử chỉ và hành động vẫn là OnTap ( chạm) Sử dụnghàm có sẵn của thư viện đó là hai hàm decreaseFunc và increaseFunc để thực hiện cácyêu cầu.
Giao tiếp với Server: Ở phần này, các món ăn sẽ được xếp vào 1 mảng nhưng
Flutter không hỗ trợ mảng nên ta sắp nó vào 1 list gồm n phần tử tương ứng n món
ăn Ta tạo thêm 1 class đặt tên là Service.dart, địa chỉ host của device( trường hợp này
là AVD) là 10.0.2.2 được nối vào port 8000 của Php Trong class này chuỗi các món
ăn đã order sẽ được mã hóa thành Json nhằm mục đích truyền tải dữ liệu giữ client vàserver Giá trị trả về ( danh sách, số lượng món ăn, kết nối với server thành công haythất bại) sẽ được in ra output nhờ vào câu lệnh print
3.3 Tạo và xây dựng cơ sở dữ liệu MySQL
Trang 20Đầu tiên ta cần phải truy cập vào http://localhost:8081/ đăng nhập
Hình 3.3.1 Tạo database MySQL
Để quản lí đơn hàng thì ta cần tạo 3 bảng lich_su_giao_dich, san_pham vàhoa_don
a Bảng san_pham
CREATE TABLE san_pham (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY ,
tenSanPham VARCHAR (30) NOT NULL ,
giaTien INT UNSIGNED NOT NULL );
Kiểu giá trị NOT NULL dùng để thiết lập để cột không nhận giá trị NULL tức làcột này bắt buộc phải có giá trị
Sau khi đã tạo được bảng, ta tiến hành nhập các món ăn vào bảng
INSERT INTO san_pham (id, tenSanPham, giaTien) VALUES (1,
INSERT INTO san_pham (tenSanPham, giaTien) VALUES ( 'cafe' ,120000);
( 'cacaodaxay' ,120000);
Trang 21INSERT INTO lich_su_giao_dich (id, id_hoaDon, id_sanPham, soLuong)
VALUES (1, 1 2 9);
Kết quả
Hình 3.3.2 Bảng sản phẩm
b Bảng lich_su_giao_dich
CREATE TABLE lich_su_giao_dich (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY ,
id_hoaDon INT UNSIGNED not null ,
id_sanPham INT UNSIGNED not null ,
soLuong INT UNSIGNED Not NULL ,
FOREIGN KEY (id_hoaDon) REFERENCES hoa_don (id),
FOREIGN KEY (id_sanPham) REFERENCES san_pham(id)
);
c Bảng hoa_don
CREATE TABLE hoa_don (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY ,
thoiGianGiaoDich DATE
);
Sau khi đã tạo xong ta liên kết 3 bảng lại với nhau bằng cách vào bộ thiết kế,chọn create relationship
Trang 22Hình 3.3.3 tạo liên kết giữa các bảng
3.4 Lập trình Php truy vấn dữ liệu MySQL
3.4.1 Kết nối với CSDL MySQL
Để có thể nhập xuất dữ liệu vào MySql ta cần phải kết nối với Mysql trước
// check the mysql connection status
$conn = new mysqli ( $host , $user , $pass , $mydatabase );
if ( $conn -> connect_error ) {
die ( "Connection Failed: " $conn -> connect_error );
return ;
}
Khi nãy ta có đề cập đến dữ liệu được mã hóa thành json và khi đến bước này
dữ liệu đấy sẽ được giải mã
$data = json_decode ( file_get_contents ( 'php://input' ), true );
Trang 23$result = $conn -> query ( $sql );
$id_HoaDon = calNewHoaDonID ();
for ( $x = 0; $x < 9; $x ++) {
if ( $danhsachmonan [ $x ][ "soLuong" ] > 0) {
$soLuong = $danhsachmonan [ $x ][ "soLuong" ];
$id = $danhsachmonan [ $x ][ "id" ];
$sql = "INSERT INTO lich_su_giao_dich (id_hoaDon, id_sanPham, soLuong) VALUES
Danh sách món ăn gồm 9 món được đánh số từ 0 đến 8, khi bất kể món ăn nào
có số lượng > 0 thì các thành phần sẽ cập nhật vào các bảng của Mysql bằng $sql
3.4.2 Tạo trang báo cáo chi tiết hóa đơn
Bằng cách sử dụng vscode và copy file code để chung thư mục với file index, ta
có thể tạo ra thêm một trang mới ở port 8000 bằng cách truy cập vào đường dẫn
http://localhost:8000/doanhthu.php
Ý tưởng: ta sẽ đọc dữ liệu từ bảng hoa_don, san_pham của MySql Ở nhữnghàng có cùng id hóa đơn tức cùng 1 đơn hàng, ta có được id của sản phẩm và giá tiềncủa sản phẩm Tính tổng tiền bằng cách
$tongtien = $tongtien + $tien [ 'giaTien' ] * $row [ 'soLuong' ];
Trong đó
- Giá tiền được query từ bảng sản phẩm
$queryGiaSanPham = "SELECT giaTien FROM san_pham where id = "
$getName = $conn -> query ( $queryTenSanPham );
$name = mysqli_fetch_array ( $getName );
echo " -" $name [ 'tenSanPham' ] " : " $row [ 'soLuong' ] "<br>" ;
Kết quả
Trang 24Hình 3.4.1 Kết quả bảng báo cáo hóa đơn chi tiết
Trang 25CHƯƠNG 4: KẾT QUẢ THỰC HIỆN
Giao diện của ứng dụng:
Khi đặt đơn hàng đầu tiên, ví dụ chọn 3 bánh chocolate và 5 bánh kẹpnướng nhấn Buy và nhấn OK Data sẽ được mã hóa và gửi lên server và số lượng cácsản phẩm vừa chọn sẽ được trả về 0
Trang 26 Xem thông tin đơn hàng trên MySQL
Truy cập localhost port 8081 bằng chrome http://localhost:8081/
Điền thông tin đăng nhập :
Máy chủ: db_appBanHang
Tài khoản: root
Mật khẩu: 123
Vào database appMuaHangDB
- Ở bảng hóa đơn ta thấy thông tin số hóa đơn đã được tăng lên 2 (ban đầu
chưa có đơn id thì id =1)
Trang 27- Ở bảng lịch sử giao dịch ta thấy id 2 và 3 được thêm vào bảng, đó là 2 sản
phẩm vừa được thêm vào, cột id hóa đơn cùng là số 2 chứng tỏ 2 sản phẩmnày là cùng một đơn hàng Id sản phẩm là 1 và 3 ta đối chiếu sang bảng sảnphẩm để biết được đó là sản phẩm gì và số lượng bao nhiêu
- Ở bảng sản phẩm, id 1 và 3 là banhchocolate và banhkepnuong vậy ta đã có
thể thấy được toàn bộ những thông tin của đơn hàng vừa được gửi từ thiết bị
Báo cáo hóa đơn chi tiết
Truy cập localhost port 8000 với tên file là doanhthu.php
http://localhost:8000/doanhthu.php ta được kết quả như sau