当前位置:首页 > PHP

php怎么实现记账功能实现

2026-03-13 02:42:18PHP

数据库设计

创建数据库表存储记账数据,常用字段包括:id(主键)、type(收入/支出)、amount(金额)、category(分类)、date(日期)、description(备注)。MySQL示例:

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

表单处理

创建HTML表单提交记账数据,使用POST方法防止重复提交。前端示例:

<form action="add_transaction.php" method="post">
    <select name="type">
        <option value="income">收入</option>
        <option value="expense">支出</option>
    </select>
    <input type="number" name="amount" step="0.01" required>
    <input type="text" name="category" required>
    <input type="date" name="date" required>
    <textarea name="description"></textarea>
    <button type="submit">提交</button>
</form>

数据存储

PHP处理表单提交并存入数据库,注意防SQL注入:

$pdo = new PDO('mysql:host=localhost;dbname=accounting', 'username', 'password');
$stmt = $pdo->prepare("INSERT INTO transactions 
    (type, amount, category, date, description) 
    VALUES (?, ?, ?, ?, ?)");
$stmt->execute([
    $_POST['type'],
    $_POST['amount'],
    $_POST['category'],
    $_POST['date'],
    $_POST['description']
]);

数据展示

查询并展示记账记录,可按日期筛选:

$stmt = $pdo->query("SELECT * FROM transactions ORDER BY date DESC");
while ($row = $stmt->fetch()) {
    echo "{$row['date']} {$row['type']} {$row['amount']} {$row['category']}";
}

统计功能

实现收支统计和分类统计:

// 月度统计
$stmt = $pdo->query("SELECT 
    SUM(CASE WHEN type='income' THEN amount ELSE 0 END) AS total_income,
    SUM(CASE WHEN type='expense' THEN amount ELSE 0 END) AS total_expense
    FROM transactions WHERE date BETWEEN '2023-01-01' AND '2023-01-31'");
$stats = $stmt->fetch();
echo "收入: {$stats['total_income']} 支出: {$stats['total_expense']}";

// 分类统计
$stmt = $pdo->query("SELECT category, SUM(amount) 
    FROM transactions WHERE type='expense' 
    GROUP BY category");
while ($row = $stmt->fetch()) {
    echo "{$row['category']}: {$row['SUM(amount)']}";
}

安全增强

添加CSRF防护和输入验证:

php怎么实现记账功能实现

session_start();
// 生成token
if (empty($_SESSION['token'])) {
    $_SESSION['token'] = bin2hex(random_bytes(32));
}

// 验证token
if ($_POST['token'] !== $_SESSION['token']) {
    die('非法请求');
}

// 验证金额
if (!is_numeric($_POST['amount']) || $_POST['amount'] <= 0) {
    die('金额必须为正数');
}

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

相关文章

vue的艾特功能实现

vue的艾特功能实现

Vue 中的 @ 功能实现 Vue 中的 @ 符号是 v-on 指令的简写,用于绑定事件监听器。以下是具体实现方式: 基本语法 <button @click="handleClick">…

vue 实现 功能

vue 实现 功能

Vue.js 是一个流行的前端框架,用于构建用户界面和单页应用程序。以下是一些常见的 Vue 功能实现方法: 数据绑定 Vue 的核心特性之一是数据绑定,可以通过 v-model 指令实现双向数据绑…

php实现留言板功能

php实现留言板功能

PHP 留言板功能实现 数据库设计 创建数据库表 messages,包含以下字段: id:自增主键 name:留言者姓名(VARCHAR) email:留言者邮箱(VARCHAR) content:…

php如何实现直播

php如何实现直播

实现直播功能的方法 PHP可以通过结合其他技术和工具来实现直播功能。以下是几种常见的方法: 使用流媒体服务器 配置流媒体服务器如Nginx-RTMP、Red5或Wowza。这些服务器支持RTMP协…

php验证码实现

php验证码实现

验证码实现方法 在PHP中实现验证码功能通常涉及生成随机字符串或数字,将其转换为图像,并通过会话(Session)进行验证。以下是几种常见的实现方式: 使用GD库生成图像验证码 GD库是PHP内置的…

php实现文件的下载

php实现文件的下载

PHP 实现文件下载的方法 在 PHP 中实现文件下载功能通常需要设置正确的 HTTP 头信息,并输出文件内容。以下是几种常见的实现方式: 使用 header() 函数强制下载 通过设置 Conte…