Skip to content

Repository files navigation

体重记录管理系统(Weight Tracker)

极简 PHP + SQLite 体重记录,支持桌面端与移动端、7/14/30天趋势图、晨晚体重差统计。

PHP SQLite License

功能

  • 按天记录早晨 / 晚上体重(斤),同日自动合并
  • 仪表盘:早晨变化、晚上变化、最新晨晚差、总记录天数
  • 交互趋势图(Chart.js):7/14/30天/全部,断点自动补齐
  • 明细表:按日期倒序、周日高亮、编辑/删除
  • 响应式:index.php(桌面)与 mobile.php(移动)自动分流,也可直接访问
  • 轻量无依赖:无需 Composer、不用 npm,前端 CDN + 本地 fallback

目录结构

.
├── config.php               # 常量、错误处理、设备识别
├── process.php              # AJAX 统一入口(add/update/delete)
├── index.php                # 桌面端
├── mobile.php               # 移动端
├── includes/
│   ├── DB.php               # PDO SQLite 单例
│   ├── WeightRepository.php # 数据访问
│   ├── WeightService.php    # 业务与统计
│   ├── header.php           # 公共头(含 Chart.js)
│   └── footer.php
├── js/
│   ├── chart.js             # Chart.js 4.5.1 本地备选
│   └── common.js
├── css/style.css
├── database/                # 运行时生成 weight_tracker.db(已忽略)
└── cache/                   # 可选文件缓存(已忽略)

快速开始

  1. 要求:PHP 7.4+、启用 pdo_sqlite
  2. 部署:整目录上传至支持 PHP 的主机(Apache/Nginx + PHP-FPM 均可)
  3. 权限:确保 database/cache/ 可写(chmod 755;若自动创建失败请手动 mkdir
  4. 访问:https://your-domain/index.php

Docker / 宝塔 / 1Panel 均可直接丢入站点目录即用。

数据库

首次访问自动创建:

CREATE TABLE IF NOT EXISTS weight_records (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  record_date DATE NOT NULL UNIQUE,
  morning_weight DECIMAL(5,2) DEFAULT 0,
  evening_weight DECIMAL(5,2) DEFAULT 0,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

备份只需拷贝 database/weight_tracker.db

配置

config.php

  • DB_FILE 数据库路径
  • APP_NAME / APP_VERSION
  • CACHE_DIR / CACHE_DEFAULT_TTL

Chart.js 优先走 https://cdn.jsdelivr.net/npm/chart.js@4.4.1,失败自动回退 js/chart.js

API

process.php 统一 POST action=

  • add_recordrecord_date(或 morning_date/evening_date 兼容)、morning_weightevening_weight(至少一项 >0)
  • update_recordidrecord_datemorning_weightevening_weight
  • delete_recordid

返回:{ success: bool, message: string, records?: [], stats?: {} }

安全

  • 输入校验:Security::validateDate / validateWeight(0–500)
  • XSS:输出 htmlspecialchars,含 Security 辅助
  • 错误:生产环境不回显,统一写入 error.log(已忽略)

常见问题

  • 图表空白:确认至少一条 >0 的记录;F12 看 [WeightChart] 日志
  • 写库失败:检查 database/ 权限与 pdo_sqlite 扩展
  • 缓存:Cache.class.php 为可选文件缓存,未强制启用

许可

MIT

About

极简 PHP+SQLite 体重记录系统|桌面+移动双端、Chart.js 趋势图

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages