在这个数字化时代,健身爱好者们越来越倾向于使用在线工具来制定和管理自己的健身计划。本文将带你一步步用PHP构建一个功能齐全的在线健身计划系统,助你轻松管理每一次锻炼。
项目背景
随着健康意识的提升,越来越多的人开始关注健身。然而,面对琳琅满目的健身课程和训练方法,很多人感到无从下手。一个个性化的在线健身计划系统不仅能帮助用户制定科学的训练计划,还能跟踪进度,提供实时反馈。
技术选型
我们选择PHP作为后端开发语言,主要基于以下几点考虑:
- 成熟稳定:PHP拥有庞大的社区支持和丰富的库。
- 易于上手:对于初学者来说,PHP的语法简单易懂。
- 高效性能:PHP在处理Web请求方面表现优异。
此外,我们将使用MySQL作为数据库,HTML/CSS/JavaScript用于前端展示。
系统架构
1. 数据库设计
首先,我们需要设计一个合理的数据库结构。主要包含以下几张表:
- users:存储用户基本信息。
- exercises:存储所有可用的健身动作。
- plans:存储用户的健身计划。
- plan_details:存储每个计划的具体动作和次数。
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
password VARCHAR(255) NOT NULL,
email VARCHAR(100) NOT NULL
);
CREATE TABLE exercises (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
description TEXT,
category VARCHAR(50)
);
CREATE TABLE plans (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
name VARCHAR(100) NOT NULL,
start_date DATE,
end_date DATE,
FOREIGN KEY (user_id) REFERENCES users(id)
);
CREATE TABLE plan_details (
id INT AUTO_INCREMENT PRIMARY KEY,
plan_id INT,
exercise_id INT,
sets INT,
reps INT,
FOREIGN KEY (plan_id) REFERENCES plans(id),
FOREIGN KEY (exercise_id) REFERENCES exercises(id)
);
2. 后端逻辑
用户注册与登录
用户注册时,我们需要验证用户名和邮箱的唯一性,并加密存储密码。
// 注册用户
function registerUser($username, $password, $email) {
$conn = new mysqli("localhost", "root", "", "fitness_db");
$passwordHash = password_hash($password, PASSWORD_DEFAULT);
$stmt = $conn->prepare("INSERT INTO users (username, password, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $username, $passwordHash, $email);
$stmt->execute();
$stmt->close();
$conn->close();
}
// 用户登录
function loginUser($username, $password) {
$conn = new mysqli("localhost", "root", "", "fitness_db");
$stmt = $conn->prepare("SELECT id, password FROM users WHERE username = ?");
$stmt->bind_param("s", $username);
$stmt->execute();
$result = $stmt->get_result();
$user = $result->fetch_assoc();
if (password_verify($password, $user['password'])) {
return $user['id'];
}
return false;
}
健身计划管理
用户可以创建、编辑和删除自己的健身计划。
// 创建健身计划
function createPlan($userId, $name, $startDate, $endDate) {
$conn = new mysqli("localhost", "root", "", "fitness_db");
$stmt = $conn->prepare("INSERT INTO plans (user_id, name, start_date, end_date) VALUES (?, ?, ?, ?)");
$stmt->bind_param("isss", $userId, $name, $startDate, $endDate);
$stmt->execute();
$planId = $stmt->insert_id;
$stmt->close();
$conn->close();
return $planId;
}
// 添加计划详情
function addPlanDetail($planId, $exerciseId, $sets, $reps) {
$conn = new mysqli("localhost", "root", "", "fitness_db");
$stmt = $conn->prepare("INSERT INTO plan_details (plan_id, exercise_id, sets, reps) VALUES (?, ?, ?, ?)");
$stmt->bind_param("iiii", $planId, $exerciseId, $sets, $reps);
$stmt->execute();
$stmt->close();
$conn->close();
}
3. 前端展示
使用HTML/CSS/JavaScript构建用户界面,展示注册登录表单、健身计划列表和详情。
<!DOCTYPE html>
<html lang="en">
<head>
<meta
评论(0)