Tạo hóa đơn PDF bằng PHP MySQL và thư viện dompdf

Trong hướng dẫn trước của chúng tôi, bạn đã học cách phát triển Hệ thống kiểm kê với Ajax, PHP & MySQL. Trong hướng dẫn này, chúng tôi sẽ giải thích cách phát triển hệ thống hóa đơn của riêng bạn với PHP & MySQL

Hóa đơn hoặc Hệ thống quản lý thanh toán rất phổ biến vì hiện nay hầu hết các giao dịch đều được thực hiện trực tuyến. Bây giờ mọi người bán và người mua đều cần hệ thống hóa đơn để xử lý thanh toán trực tuyến. Vì vậy, nếu bạn đang tìm kiếm hóa đơn hoặc hệ thống thanh toán bằng PHP và MySQL, thì bạn đang ở đây đúng nơi. Trong hướng dẫn này, bạn sẽ học cách phát triển hóa đơn và hệ thống thanh toán bằng PHP và MySQL

Tạo hóa đơn PDF bằng PHP MySQL và thư viện dompdf

Ngoài ra, đọc

  • Xây dựng hệ thống quản lý nội dung với PHP & MySQL
  • Xây dựng hệ thống trò chuyện trực tiếp với Ajax, PHP & MySQL
  • Xây dựng hệ thống bình luận với Ajax, PHP & MySQL

Chúng tôi sẽ trình bày hướng dẫn này theo các bước đơn giản với bản demo trực tiếp để phát triển hệ thống hóa đơn hoàn chỉnh để tạo và chỉnh sửa hóa đơn với bản in hóa đơn để chuyển đổi sang định dạng PDF. Chúng tôi cũng sẽ cho phép tải xuống mã nguồn hoàn chỉnh của bản demo trực tiếp


Tạo hóa đơn PDF bằng PHP MySQL và thư viện dompdf

Vì chúng tôi sẽ giới thiệu hướng dẫn này với ví dụ trực tiếp để xây dựng hệ thống hóa đơn với PHP & MySQL, nên các tệp chính cho ví dụ này sẽ như sau

  • mục lục. php
  • hóa đơn_list. php
  • tạo hóa đơn. php
  • edit_invoice. php
  • hoạt động. php
  • hóa đơn. js
  • Hóa đơn. php

Bước 1. Tạo bảng cơ sở dữ liệu MySQL
Đầu tiên, chúng ta sẽ tạo bảng invoice_user để lưu trữ chi tiết đăng nhập của người dùng nhằm cho phép người dùng đã đăng nhập quản lý hóa đơn.

CREATE TABLE `invoice_user` (
`id` int(11) NOT NULL,
`email` varchar(100) NOT NULL,
`password` varchar(100) NOT NULL,
`first_name` varchar(100) NOT NULL,
`last_name` varchar(100) NOT NULL,
`mobile` bigint(20) NOT NULL,
`address` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE `invoice_user`
  ADD PRIMARY KEY (`id`);
  
ALTER TABLE `invoice_user`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=123457;

Đây là dữ liệu kết xuất người dùng mẫu

INSERT INTO `invoice_user` (`id`, `email`,
 `password`, `first_name`, `last_name`,
 `mobile`, `address`) 
VALUES
(123456, '[email protected]', '12345', 
'Admin', '', 12345678912, 'New Delhi 110096 India.');

Ta sẽ tạo bảng invoice_order để lưu thông tin chi tiết hóa đơn


CREATE TABLE `invoice_order` (
`order_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`order_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`order_receiver_name` varchar(250) NOT NULL,
`order_receiver_address` text NOT NULL,
`order_total_before_tax` decimal(10,2) NOT NULL,
`order_total_tax` decimal(10,2) NOT NULL,
`order_tax_per` varchar(250) NOT NULL,
`order_total_after_tax` double(10,2) NOT NULL,
`order_amount_paid` decimal(10,2) NOT NULL,
`order_total_amount_due` decimal(10,2) NOT NULL,
`note` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE `invoice_order`
  ADD PRIMARY KEY (`order_id`);
  
ALTER TABLE `invoice_order`
  MODIFY `order_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=682;

Đây là dữ liệu kết xuất mẫu cho đơn đặt hàng hóa đơn

INSERT INTO `invoice_order` (`order_id`, `user_id`, `order_date`, `order_receiver_name`, 
`order_receiver_address`, `order_total_before_tax`,
 `order_total_tax`, `order_tax_per`, 
`order_total_after_tax`, `order_amount_paid`,
 `order_total_amount_due`, `note`) 
VALUES
(2, 123456, '2021-01-31 19:33:42', 'abcd',
 'Admin\r\nA - 4000, Ashok Nagar, New Delhi,
 110096 India.\r\n12345678912\r\[email protected]',
 342400.00, 684800.00, '200', 1027200.00, 
45454.00, 981746.00, 'this note txt');

Chúng tôi cũng sẽ tạo bảng hóa đơn_order_item để lưu trữ chi tiết các mặt hàng hóa đơn

CREATE TABLE `invoice_order_item` (
`order_item_id` int(11) NOT NULL,
`order_id` int(11) NOT NULL,
`item_code` varchar(250) NOT NULL,
`item_name` varchar(250) NOT NULL,
`order_item_quantity` decimal(10,2) NOT NULL,
`order_item_price` decimal(10,2) NOT NULL,
`order_item_final_amount` decimal(10,2) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE `invoice_order_item`
  ADD PRIMARY KEY (`order_item_id`);
  
ALTER TABLE `invoice_order_item`
  MODIFY `order_item_id` int(11) NOT NULL 
AUTO_INCREMENT, AUTO_INCREMENT=4364;

Đây là dữ liệu kết xuất mẫu cho các mục đặt hàng hóa đơn

INSERT INTO `invoice_order_item` (`order_item_id`, 
`order_id`, `item_code`, `item_name`, 
`order_item_quantity`, `order_item_price`,
 `order_item_final_amount`) VALUES
(4100, 2, '13555', 'Face Mask', 120.00, 2000.00, 240000.00),
(4101, 2, '34', 'mobile', 10.00, 10000.00, 100000.00),
(4102, 2, '34', 'mobile battery', 1.00, 34343.00, 34343.00),
(4103, 2, '34', 'mobile cover', 10.00, 200.00, 2000.00),
(4104, 2, '36', 'testing', 1.00, 2400.00, 2400.00);

Bước 2. Triển khai đăng nhập người dùng
Trước tiên, chúng tôi sẽ tạo chức năng đăng nhập người dùng để cung cấp quyền truy cập quản lý hóa đơn cho người dùng đã đăng nhập. Chúng tôi sẽ tạo biểu mẫu đăng nhập trong chỉ mục. php.

Build Invoice System with PHP & MySQL

Chúng tôi sẽ xử lý chức năng đăng nhập khi gửi biểu mẫu đăng nhập bằng phương thức loginUsers()


loginUsers($_POST['email'], $_POST['pwd']);
if(!empty($user)) {
$_SESSION['user'] = $user[0]['first_name']."".$user[0]['last_name'];
$_SESSION['userid'] = $user[0]['id'];
$_SESSION['email'] = $user[0]['email'];
$_SESSION['address'] = $user[0]['address'];
$_SESSION['mobile'] = $user[0]['mobile'];
header("Location:invoice_list.php");
} else {
$loginError = "Invalid email or password!";
}
}
?>

Bước 3. Hiển thị danh sách hóa đơn
Bây giờ, chúng tôi sẽ hiển thị danh sách hóa đơn của người dùng trong invoice_list. tập tin php. Chúng ta sẽ gọi phương thức hóa đơn getInvoiceList() để lấy danh sách hóa đơn của người dùng đã đăng nhập.

________số 8

Bước 4. Triển khai Tạo hóa đơn
Bây giờ trong create_invoice. php, chúng tôi sẽ triển khai chức năng tạo hóa đơn. Chúng tôi sẽ tạo biểu mẫu hóa đơn với các trường bắt buộc để lưu chi tiết hóa đơn với các mặt hàng và tổng số.

PHP Invoice System

From,





To,

Item No Item Name Quantity Price Total

Notes:


$
%
$
$
$
$

Chúng tôi sẽ lưu chi tiết hóa đơn bằng phương thức hóa đơn saveInvoice()

INSERT INTO `invoice_user` (`id`, `email`,
 `password`, `first_name`, `last_name`,
 `mobile`, `address`) 
VALUES
(123456, '[email protected]', '12345', 
'Admin', '', 12345678912, 'New Delhi 110096 India.');
0

Bước 5. Triển khai Cập nhật hóa đơn
Hiện có trong edit_invoice. php, chúng tôi sẽ triển khai chức năng chỉnh sửa hóa đơn. Chúng tôi sẽ tạo biểu mẫu hóa đơn với các trường bắt buộc để lưu chi tiết chỉnh sửa hóa đơn với các mục và tổng số.

INSERT INTO `invoice_user` (`id`, `email`,
 `password`, `first_name`, `last_name`,
 `mobile`, `address`) 
VALUES
(123456, '[email protected]', '12345', 
'Admin', '', 12345678912, 'New Delhi 110096 India.');
1

Chúng tôi sẽ chỉnh sửa lưu hóa đơn bằng cách sử dụng phương thức hóa đơn updateInvoice()


INSERT INTO `invoice_user` (`id`, `email`,
 `password`, `first_name`, `last_name`,
 `mobile`, `address`) 
VALUES
(123456, '[email protected]', '12345', 
'Admin', '', 12345678912, 'New Delhi 110096 India.');
2

Bước 6. Triển khai In hóa đơn
Bây giờ chúng ta sẽ triển khai chức năng tạo PDF hóa đơn trong print_invoice. php để cho phép người dùng in hoặc tải xuống hóa đơn. Chúng tôi sẽ lấy chi tiết hóa đơn từ các bảng cơ sở dữ liệu bằng cách sử dụng phương thức hóa đơn getInvoice() và getInvoiceItems(). Sau đó, chúng tôi sẽ sử dụng thư viện PHP Dompdf để tạo PDF từ HTML.

INSERT INTO `invoice_user` (`id`, `email`,
 `password`, `first_name`, `last_name`,
 `mobile`, `address`) 
VALUES
(123456, '[email protected]', '12345', 
'Admin', '', 12345678912, 'New Delhi 110096 India.');
3

Bước 7. Triển khai Xóa hóa đơn
Chúng tôi sẽ triển khai chức năng xóa hóa đơn trong hóa đơn. js. Chúng tôi sẽ xử lý chức năng trên trình xử lý deleteInvoice và thực hiện hành động yêu cầu Ajax. php để xóa hóa đơn khỏi bảng cơ sở dữ liệu.

INSERT INTO `invoice_user` (`id`, `email`,
 `password`, `first_name`, `last_name`,
 `mobile`, `address`) 
VALUES
(123456, '[email protected]', '12345', 
'Admin', '', 12345678912, 'New Delhi 110096 India.');
4

trong hành động. php, chúng tôi sẽ kiểm tra hành động xóa hóa đơn và id hóa đơn để xóa hóa đơn bằng phương thức hóa đơn deleteInvoice() và trả về phản hồi JSON

Làm cách nào để tạo hóa đơn PDF từ cơ sở dữ liệu trong PHP?

Chúng tôi sẽ sử dụng chức năng libs của FPDF để tạo tệp pdf có đầu trang và chân trang. .
Bước 1. Chúng ta sẽ tạo bảng employee vào cơ sở dữ liệu MySQL
Bước 2. Hãy kết nối cơ sở dữ liệu MySQL với PHP. Chúng tôi sẽ tạo kết nối. .
Bước 3. Chúng tôi sẽ tạo generate_pdf. php và thêm mã bên dưới
Bước 4. Chúng tôi sẽ tạo chỉ mục

Làm cách nào để tạo tệp PDF bằng Dompdf trong PHP?

Ví dụ sau cho thấy cách sử dụng Dompdf để chuyển đổi HTML và tạo PDF với cấu hình tối thiểu. .
Chỉ định nội dung HTML trong phương thức loadHtml() của lớp Dompdf
Kết xuất HTML dưới dạng PDF bằng phương thức render()
Xuất tệp PDF được tạo ra Trình duyệt bằng phương thức stream()

Làm cách nào để tạo PDF từ dữ liệu MySQL bằng PHP?

Tạo PDF bằng PHP từ cơ sở dữ liệu Mysql .
Bước 1. Lấy dữ liệu từ cơ sở dữ liệu MySQL vào trang
Bước 1. Tải xuống thư viện FPDF từ fpdf. tổ chức
Bước 2. Sao chép fpdf. php vào thư mục ứng dụng của bạn
Bước 3. Sử dụng thư viện fpdf như vậy

Làm cách nào để tạo hóa đơn bằng PHP và MySQL?

Bước 1. Tạo bảng cơ sở dữ liệu MySQL. .
Bước 2. Thực hiện đăng nhập người dùng. .
Bước 3. Hiển thị danh sách hóa đơn. .
Bước 4. Triển khai Tạo hóa đơn. .
Bước5. Thực hiện cập nhật hóa đơn. .
Bước 6. Thực hiện in hóa đơn. .
Bước7. Thực hiện Xóa hóa đơn. .
Bước8. Thực hiện đăng xuất người dùng