当前位置:首页 > PHP

php怎么实现记账功能实现

2026-02-15 03:49:27PHP

数据库设计

创建一个数据库表来存储记账数据,表结构可以包含以下字段:

  • id:自增主键
  • amount:金额(DECIMAL类型)
  • category:分类(如餐饮、交通等)
  • type:类型(收入或支出)
  • note:备注
  • date:日期

SQL创建表语句示例:

CREATE TABLE accounting (
    id INT AUTO_INCREMENT PRIMARY KEY,
    amount DECIMAL(10,2) NOT NULL,
    category VARCHAR(50) NOT NULL,
    type ENUM('income', 'expense') NOT NULL,
    note TEXT,
    date DATE NOT NULL
);

连接数据库

使用PDO连接MySQL数据库:

$host = 'localhost';
$dbname = 'accounting_db';
$username = 'root';
$password = '';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    die("数据库连接失败: " . $e->getMessage());
}

添加记账记录

创建表单提交处理逻辑:

php怎么实现记账功能实现

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $amount = $_POST['amount'];
    $category = $_POST['category'];
    $type = $_POST['type'];
    $note = $_POST['note'];
    $date = $_POST['date'];

    $stmt = $pdo->prepare("INSERT INTO accounting (amount, category, type, note, date) VALUES (?, ?, ?, ?, ?)");
    $stmt->execute([$amount, $category, $type, $note, $date]);
}

显示记账记录

查询并显示记账数据:

$stmt = $pdo->query("SELECT * FROM accounting ORDER BY date DESC");
$records = $stmt->fetchAll(PDO::FETCH_ASSOC);

foreach ($records as $record) {
    echo "金额: {$record['amount']}, 分类: {$record['category']}, 类型: {$record['type']}, 日期: {$record['date']}<br>";
}

统计功能

实现收支统计:

php怎么实现记账功能实现

// 总收入
$stmt = $pdo->query("SELECT SUM(amount) as total_income FROM accounting WHERE type = 'income'");
$totalIncome = $stmt->fetchColumn();

// 总支出
$stmt = $pdo->query("SELECT SUM(amount) as total_expense FROM accounting WHERE type = 'expense'");
$totalExpense = $stmt->fetchColumn();

// 余额
$balance = $totalIncome - $totalExpense;

分类统计

按分类统计支出或收入:

$stmt = $pdo->query("SELECT category, SUM(amount) as total FROM accounting WHERE type = 'expense' GROUP BY category");
$categoryStats = $stmt->fetchAll(PDO::FETCH_ASSOC);

foreach ($categoryStats as $stat) {
    echo "分类: {$stat['category']}, 总支出: {$stat['total']}<br>";
}

前端界面

创建简单的HTML表单:

<form method="post">
    <label>金额: <input type="number" step="0.01" name="amount" required></label><br>
    <label>分类: 
        <select name="category" required>
            <option value="餐饮">餐饮</option>
            <option value="交通">交通</option>
            <option value="购物">购物</option>
        </select>
    </label><br>
    <label>类型: 
        <select name="type" required>
            <option value="income">收入</option>
            <option value="expense">支出</option>
        </select>
    </label><br>
    <label>备注: <textarea name="note"></textarea></label><br>
    <label>日期: <input type="date" name="date" required></label><br>
    <button type="submit">提交</button>
</form>

安全措施

添加输入验证和防SQL注入:

$amount = filter_var($_POST['amount'], FILTER_VALIDATE_FLOAT);
if ($amount === false) {
    die("金额必须为数字");
}

// 使用预处理语句防止SQL注入
$stmt = $pdo->prepare("INSERT INTO accounting (...) VALUES (?, ?, ?, ?, ?)");
$stmt->execute([...]);

扩展功能建议

  • 添加用户认证系统,使不同用户可以管理自己的账本
  • 实现数据导出为Excel或CSV功能
  • 添加图表展示收支趋势
  • 开发按月统计和报表功能
  • 添加预算设置和超支提醒功能

标签: 功能php
分享给朋友:

相关文章

原生实现vue功能

原生实现vue功能

原生JavaScript实现Vue核心功能 使用原生JavaScript模拟Vue的核心功能需要理解响应式数据绑定、虚拟DOM和组件系统等概念。以下是关键实现方法: 响应式数据系统 通过Object…

vue实现轨道功能

vue实现轨道功能

实现轨道功能的基本思路 轨道功能通常指在界面中创建可滑动的轨道,用户可以通过拖动或点击轨道上的元素进行交互。Vue.js结合其响应式特性和组件化开发方式,可以高效实现这一功能。 核心实现步骤 创建轨…

vue实现桌面功能

vue实现桌面功能

Vue 实现桌面功能的方法 Vue.js 可以通过结合 Electron 或 NW.js 等框架实现桌面应用开发。以下是几种常见的方法: 使用 Vue 与 Electron 结合 Electron…

vue实现审核功能

vue实现审核功能

实现审核功能的基本思路 审核功能通常涉及状态管理、权限控制和操作记录。Vue中可以通过组件化设计、状态管理库(如Vuex或Pinia)和后端API配合实现。 审核状态管理 使用Vuex或Pinia…

vue实现账号注册功能

vue实现账号注册功能

实现账号注册功能 在Vue中实现账号注册功能通常需要结合前端表单和后端API交互。以下是一个完整的实现方案: 创建注册表单组件 新建一个Register.vue组件,包含基本的注册表单字段:…

vue实现功能

vue实现功能

Vue 实现功能的方法 Vue.js 是一个流行的前端框架,用于构建用户界面。以下是几种常见的功能实现方法: 数据绑定 Vue 提供了双向数据绑定,可以通过 v-model 指令实现表单输入和应用…