当前位置:首页 > PHP

php实现记账本

2026-02-16 13:17:19PHP

实现记账本的基本功能

PHP实现记账本需要结合数据库操作、表单处理和用户界面设计。以下是一个简单的实现方案:

数据库设计

创建MySQL数据库表存储记账信息:

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

连接数据库

创建数据库连接文件db_connect.php

<?php
$host = 'localhost';
$dbname = 'account_book';
$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());
}
?>

添加记账记录

创建表单页面add_transaction.php

<?php include 'db_connect.php'; ?>
<form method="post" action="save_transaction.php">
    <select name="type" required>
        <option value="income">收入</option>
        <option value="expense">支出</option>
    </select>

    <input type="number" name="amount" step="0.01" placeholder="金额" required>

    <input type="text" name="category" placeholder="类别" required>

    <textarea name="description" placeholder="备注"></textarea>

    <input type="date" name="transaction_date" required>

    <button type="submit">保存</button>
</form>

处理表单提交save_transaction.php

<?php
include 'db_connect.php';

$stmt = $pdo->prepare("INSERT INTO transactions 
    (amount, category, description, transaction_date, type) 
    VALUES (?, ?, ?, ?, ?)");

$stmt->execute([
    $_POST['amount'],
    $_POST['category'],
    $_POST['description'],
    $_POST['transaction_date'],
    $_POST['type']
]);

header("Location: view_transactions.php");
exit();
?>

查看记账记录

创建查看页面view_transactions.php

<?php include 'db_connect.php'; ?>
<table border="1">
    <tr>
        <th>日期</th>
        <th>类型</th>
        <th>类别</th>
        <th>金额</th>
        <th>备注</th>
    </tr>

    <?php
    $stmt = $pdo->query("SELECT * FROM transactions ORDER BY transaction_date DESC");
    while ($row = $stmt->fetch()) {
        echo "<tr>
            <td>{$row['transaction_date']}</td>
            <td>{$row['type']}</td>
            <td>{$row['category']}</td>
            <td>{$row['amount']}</td>
            <td>{$row['description']}</td>
        </tr>";
    }
    ?>
</table>

统计功能

添加统计页面stats.php

<?php include 'db_connect.php'; ?>
<h3>收支统计</h3>
<?php
// 总收入
$stmt = $pdo->query("SELECT SUM(amount) FROM transactions WHERE type='income'");
$total_income = $stmt->fetchColumn();

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

echo "总收入: $total_income<br>";
echo "总支出: $total_expense<br>";
echo "结余: " . ($total_income - $total_expense);
?>

安全增强措施

实现用户认证系统:

// login.php
session_start();
if ($_POST['username'] === 'admin' && $_POST['password'] === 'password123') {
    $_SESSION['loggedin'] = true;
    header("Location: view_transactions.php");
    exit();
} else {
    echo "登录失败";
}

在所有管理页面开头添加:

session_start();
if (!isset($_SESSION['loggedin'])) {
    header("Location: login.php");
    exit();
}

扩展功能建议

  • 添加分类管理功能
  • 实现数据导出为Excel或CSV
  • 添加图表可视化
  • 实现多用户支持
  • 添加预算设置功能
  • 实现数据备份恢复

这个基础实现可以满足简单的记账需求,根据实际需要可以进一步扩展功能和完善界面设计。

php实现记账本

标签: php
分享给朋友:

相关文章

php实现定时任务

php实现定时任务

PHP 实现定时任务的几种方法 在 PHP 中实现定时任务可以通过多种方式完成,具体选择取决于项目需求和服务器环境。以下是常见的实现方法: 使用 Cron 任务 Cron 是 Linux 系统中常用…

php实现栈

php实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素(不移…

php实现搜索

php实现搜索

PHP实现搜索功能的方法 在PHP中实现搜索功能通常涉及数据库查询和用户输入的匹配。以下是几种常见的实现方式: 使用MySQL LIKE语句 通过简单的LIKE语句实现基础搜索: $searc…

php 实现验证码

php 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证…

php 实现秒杀

php 实现秒杀

PHP 实现秒杀的关键技术 秒杀系统需要解决高并发、超卖、性能瓶颈等问题。以下是实现秒杀的核心方案: 使用 Redis 预减库存 将商品库存提前加载到 Redis 中,通过原子操作保证库存准确性:…

php 队列的实现

php 队列的实现

PHP 队列的实现方法 使用数据库实现队列 创建一个数据表存储队列任务,包含任务ID、状态、创建时间等字段。通过SQL语句实现任务的入队和出队操作。 // 入队操作 INSERT INTO que…