PHP 语言 实现发票生成与管理

PHP阿木 发布于 2025-07-02 8 次阅读


摘要:随着电子商务的快速发展,发票生成与管理成为企业日常运营中不可或缺的一部分。本文将围绕PHP语言,详细解析如何实现一个发票生成与管理系统的代码技术,包括系统设计、功能实现、数据库设计等方面。

一、系统设计

1. 系统架构

本系统采用B/S(Browser/Server)架构,前端使用HTML、CSS、JavaScript等技术,后端使用PHP语言进行开发。数据库采用MySQL,以保证数据的安全性和稳定性。

2. 功能模块

(1)用户管理:包括用户注册、登录、权限管理等功能。

(2)发票管理:包括发票生成、查询、修改、删除等功能。

(3)商品管理:包括商品添加、查询、修改、删除等功能。

(4)订单管理:包括订单生成、查询、修改、删除等功能。

(5)报表统计:包括发票统计、商品统计、订单统计等功能。

二、功能实现

1. 用户管理

(1)用户注册

php

<?php


// 用户注册


function register($username, $password, $email) {


// 连接数据库


$conn = mysqli_connect("localhost", "root", "root", "invoice");


// 检查连接


if (!$conn) {


die("连接失败: " . mysqli_connect_error());


}


// 检查用户名是否存在


$sql = "SELECT FROM users WHERE username='$username'";


$result = mysqli_query($conn, $sql);


if (mysqli_num_rows($result) > 0) {


echo "用户名已存在!";


} else {


// 插入新用户


$sql = "INSERT INTO users (username, password, email) VALUES ('$username', '$password', '$email')";


if (mysqli_query($conn, $sql)) {


echo "注册成功!";


} else {


echo "注册失败:" . mysqli_error($conn);


}


}


mysqli_close($conn);


}


?>


(2)用户登录

php

<?php


// 用户登录


function login($username, $password) {


// 连接数据库


$conn = mysqli_connect("localhost", "root", "root", "invoice");


// 检查连接


if (!$conn) {


die("连接失败: " . mysqli_connect_error());


}


// 检查用户名和密码


$sql = "SELECT FROM users WHERE username='$username' AND password='$password'";


$result = mysqli_query($conn, $sql);


if (mysqli_num_rows($result) > 0) {


echo "登录成功!";


} else {


echo "用户名或密码错误!";


}


mysqli_close($conn);


}


?>


2. 发票管理

(1)发票生成

php

<?php


// 发票生成


function createInvoice($invoiceNumber, $customerName, $customerAddress, $items) {


// 连接数据库


$conn = mysqli_connect("localhost", "root", "root", "invoice");


// 检查连接


if (!$conn) {


die("连接失败: " . mysqli_connect_error());


}


// 插入发票信息


$sql = "INSERT INTO invoices (invoiceNumber, customerName, customerAddress) VALUES ('$invoiceNumber', '$customerName', '$customerAddress')";


if (mysqli_query($conn, $sql)) {


$invoiceId = mysqli_insert_id($conn);


// 插入商品信息


foreach ($items as $item) {


$sql = "INSERT INTO invoice_items (invoiceId, itemId, quantity, price) VALUES ('$invoiceId', '$item[0]', '$item[1]', '$item[2]')";


mysqli_query($conn, $sql);


}


echo "发票生成成功!";


} else {


echo "发票生成失败:" . mysqli_error($conn);


}


mysqli_close($conn);


}


?>


(2)发票查询

php

<?php


// 发票查询


function searchInvoice($invoiceNumber) {


// 连接数据库


$conn = mysqli_connect("localhost", "root", "root", "invoice");


// 检查连接


if (!$conn) {


die("连接失败: " . mysqli_connect_error());


}


// 查询发票信息


$sql = "SELECT FROM invoices WHERE invoiceNumber='$invoiceNumber'";


$result = mysqli_query($conn, $sql);


if (mysqli_num_rows($result) > 0) {


$invoice = mysqli_fetch_assoc($result);


// 查询商品信息


$sql = "SELECT FROM invoice_items WHERE invoiceId='$invoice[invoiceId]'";


$itemsResult = mysqli_query($conn, $sql);


$items = array();


while ($item = mysqli_fetch_assoc($itemsResult)) {


$items[] = $item;


}


echo "发票查询成功!<br>";


echo "发票号:" . $invoice["invoiceNumber"] . "<br>";


echo "客户名称:" . $invoice["customerName"] . "<br>";


echo "客户地址:" . $invoice["customerAddress"] . "<br>";


echo "商品列表:<br>";


foreach ($items as $item) {


echo "商品ID:" . $item["itemId"] . ",数量:" . $item["quantity"] . ",单价:" . $item["price"] . "<br>";


}


} else {


echo "发票查询失败:" . mysqli_error($conn);


}


mysqli_close($conn);


}


?>


3. 商品管理

(1)商品添加

php

<?php


// 商品添加


function addProduct($name, $price) {


// 连接数据库


$conn = mysqli_connect("localhost", "root", "root", "invoice");


// 检查连接


if (!$conn) {


die("连接失败: " . mysqli_connect_error());


}


// 插入商品信息


$sql = "INSERT INTO products (name, price) VALUES ('$name', '$price')";


if (mysqli_query($conn, $sql)) {


echo "商品添加成功!";


} else {


echo "商品添加失败:" . mysqli_error($conn);


}


mysqli_close($conn);


}


?>


(2)商品查询

php

<?php


// 商品查询


function searchProduct($name) {


// 连接数据库


$conn = mysqli_connect("localhost", "root", "root", "invoice");


// 检查连接


if (!$conn) {


die("连接失败: " . mysqli_connect_error());


}


// 查询商品信息


$sql = "SELECT FROM products WHERE name LIKE '%$name%'";


$result = mysqli_query($conn, $sql);


if (mysqli_num_rows($result) > 0) {


echo "商品查询成功!<br>";


while ($product = mysqli_fetch_assoc($result)) {


echo "商品名称:" . $product["name"] . ",单价:" . $product["price"] . "<br>";


}


} else {


echo "商品查询失败:" . mysqli_error($conn);


}


mysqli_close($conn);


}


?>


4. 订单管理

(1)订单生成

php

<?php


// 订单生成


function createOrder($userId, $invoiceId, $items) {


// 连接数据库


$conn = mysqli_connect("localhost", "root", "root", "invoice");


// 检查连接


if (!$conn) {


die("连接失败: " . mysqli_connect_error());


}


// 插入订单信息


$sql = "INSERT INTO orders (userId, invoiceId) VALUES ('$userId', '$invoiceId')";


if (mysqli_query($conn, $sql)) {


$orderId = mysqli_insert_id($conn);


// 插入商品信息


foreach ($items as $item) {


$sql = "INSERT INTO order_items (orderId, itemId, quantity, price) VALUES ('$orderId', '$item[0]', '$item[1]', '$item[2]')";


mysqli_query($conn, $sql);


}


echo "订单生成成功!";


} else {


echo "订单生成失败:" . mysqli_error($conn);


}


mysqli_close($conn);


}


?>


(2)订单查询

php

<?php


// 订单查询


function searchOrder($userId) {


// 连接数据库


$conn = mysqli_connect("localhost", "root", "root", "invoice");


// 检查连接


if (!$conn) {


die("连接失败: " . mysqli_connect_error());


}


// 查询订单信息


$sql = "SELECT FROM orders WHERE userId='$userId'";


$result = mysqli_query($conn, $sql);


if (mysqli_num_rows($result) > 0) {


echo "订单查询成功!<br>";


while ($order = mysqli_fetch_assoc($result)) {


echo "订单ID:" . $order["orderId"] . ",发票号:" . $order["invoiceId"] . "<br>";


}


} else {


echo "订单查询失败:" . mysqli_error($conn);


}


mysqli_close($conn);


}


?>


5. 报表统计

(1)发票统计

php

<?php


// 发票统计


function invoiceStatistics() {


// 连接数据库


$conn = mysqli_connect("localhost", "root", "root", "invoice");


// 检查连接


if (!$conn) {


die("连接失败: " . mysqli_connect_error());


}


// 查询发票数量


$sql = "SELECT COUNT() AS total FROM invoices";


$result = mysqli_query($conn, $sql);


$row = mysqli_fetch_assoc($result);


echo "发票总数:" . $row["total"] . "<br>";


// 查询最近一个月的发票数量


$sql = "SELECT COUNT() AS total FROM invoices WHERE invoiceDate >= DATE_SUB(NOW(), INTERVAL 1 MONTH)";


$result = mysqli_query($conn, $sql);


$row = mysqli_fetch_assoc($result);


echo "最近一个月发票总数:" . $row["total"] . "<br>";


mysqli_close($conn);


}


?>


(2)商品统计

php

<?php


// 商品统计


function productStatistics() {


// 连接数据库


$conn = mysqli_connect("localhost", "root", "root", "invoice");


// 检查连接


if (!$conn) {


die("连接失败: " . mysqli_connect_error());


}


// 查询商品数量


$sql = "SELECT COUNT() AS total FROM products";


$result = mysqli_query($conn, $sql);


$row = mysqli_fetch_assoc($result);


echo "商品总数:" . $row["total"] . "<br>";


// 查询最近一个月的商品数量


$sql = "SELECT COUNT() AS total FROM products WHERE createDate >= DATE_SUB(NOW(), INTERVAL 1 MONTH)";


$result = mysqli_query($conn, $sql);


$row = mysqli_fetch_assoc($result);


echo "最近一个月商品总数:" . $row["total"] . "<br>";


mysqli_close($conn);


}


?>


(3)订单统计

php

<?php


// 订单统计


function orderStatistics() {


// 连接数据库


$conn = mysqli_connect("localhost", "root", "root", "invoice");


// 检查连接


if (!$conn) {


die("连接失败: " . mysqli_connect_error());


}


// 查询订单数量


$sql = "SELECT COUNT() AS total FROM orders";


$result = mysqli_query($conn, $sql);


$row = mysqli_fetch_assoc($result);


echo "订单总数:" . $row["total"] . "<br>";


// 查询最近一个月的订单数量


$sql = "SELECT COUNT() AS total FROM orders WHERE orderDate >= DATE_SUB(NOW(), INTERVAL 1 MONTH)";


$result = mysqli_query($conn, $sql);


$row = mysqli_fetch_assoc($result);


echo "最近一个月订单总数:" . $row["total"] . "<br>";


mysqli_close($conn);


}


?>


三、数据库设计

1. 用户表(users)

| 字段名 | 数据类型 | 说明 |

| ------------ | ------------ | ---------- |

| id | int | 主键 |

| username | varchar(50) | 用户名 |

| password | varchar(50) | 密码 |

| email | varchar(100) | 邮箱 |

| createDate | datetime | 创建时间 |

| lastLogin | datetime | 最后登录时间 |

2. 发票表(invoices)

| 字段名 | 数据类型 | 说明 |

| ------------ | ------------ | ---------- |

| id | int | 主键 |

| invoiceNumber| varchar(50) | 发票号 |

| customerName | varchar(100) | 客户名称 |

| customerAddress| varchar(200)| 客户地址 |

| invoiceDate | datetime | 发票日期 |

3. 商品表(products)

| 字段名 | 数据类型 | 说明 |

| ------------ | ------------ | ---------- |

| id | int | 主键 |

| name | varchar(100) | 商品名称 |

| price | decimal(10,2)| 商品价格 |

| createDate | datetime | 创建时间 |

4. 发票商品表(invoice_items)

| 字段名 | 数据类型 | 说明 |

| ------------ | ------------ | ---------- |

| id | int | 主键 |

| invoiceId | int | 发票ID |

| itemId | int | 商品ID |

| quantity | int | 数量 |

| price | decimal(10,2)| 单价 |

5. 订单表(orders)

| 字段名 | 数据类型 | 说明 |

| ------------ | ------------ | ---------- |

| id | int | 主键 |

| userId | int | 用户ID |

| invoiceId | int | 发票ID |

| orderDate | datetime | 订单日期 |

6. 订单商品表(order_items)

| 字段名 | 数据类型 | 说明 |

| ------------ | ------------ | ---------- |

| id | int | 主键 |

| orderId | int | 订单ID |

| itemId | int | 商品ID |

| quantity | int | 数量 |

| price | decimal(10,2)| 单价 |

四、总结

本文详细解析了使用PHP语言实现发票生成与管理系统的代码技术,包括系统设计、功能实现、数据库设计等方面。通过以上代码示例,读者可以了解到如何使用PHP语言进行数据库操作、表单处理、页面展示等操作。在实际开发过程中,可以根据需求对系统进行扩展和优化,以满足不同企业的需求。