当前位置:首页 > 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实现记账本

<?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实现记账本

<?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 长连接实现方法 长连接(Keep-Alive)允许客户端与服务器在一次TCP连接中发送和接收多个HTTP请求/响应,减少重复建立连接的开销。以下是PHP中实现长连接的几种方式: 配置HTTP…

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…

php实现跳转

php实现跳转

PHP 实现页面跳转的方法 在 PHP 中实现页面跳转有多种方式,以下是常见的几种方法及其适用场景: 使用 header() 函数 通过 header() 函数发送 HTTP 头部信息实现跳转。注意…

php实现上传图片

php实现上传图片

上传图片的基本流程 PHP 实现图片上传功能需要处理文件接收、验证、保存等步骤。以下是具体实现方法。 创建 HTML 表单 在 HTML 中创建一个表单,设置 enctype="multipart/…

php实现定时

php实现定时

PHP 实现定时任务的方法 PHP 本身是脚本语言,通常需要借助外部工具或框架实现定时任务。以下是几种常见方法: 使用 Cron 任务 Linux 系统自带的 Cron 是常用的定时任务工具。通过编…

php mvc实现

php mvc实现

PHP MVC 实现步骤 模型(Model)层 模型负责数据处理和业务逻辑,通常与数据库交互。创建一个基类模型,其他具体模型继承它。 class Model { protected $db;…