在数字化时代,线上活动报名系统已成为各类活动不可或缺的一部分。本文将带你一步步用PHP搭建一个功能完善的在线活动报名系统,助你轻松管理活动报名流程。
项目准备
首先,确保你的开发环境已安装PHP和MySQL。你可以使用XAMPP、WAMP等集成环境快速搭建。
1. 数据库设计
在MySQL中创建一个名为event_registration
的数据库,并设计以下表结构:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
phone VARCHAR(15)
);
CREATE TABLE events (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(100) NOT NULL,
description TEXT,
date DATETIME NOT NULL
);
CREATE TABLE registrations (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
event_id INT,
registered_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (event_id) REFERENCES events(id)
);
2. 项目结构
创建以下文件夹和文件结构:
/project
/includes
config.php
/templates
header.php
footer.php
index.php
register.php
event.php
admin.php
核心功能实现
1. 数据库连接
在includes/config.php
中配置数据库连接:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "event_registration";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>
2. 首页展示活动
在index.php
中展示所有活动:
<?php
include 'includes/config.php';
include 'templates/header.php';
$sql = "SELECT * FROM events";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "<div class='event'>";
echo "<h2>" . $row["title"] . "</h2>";
echo "<p>" . $row["description"] . "</p>";
echo "<p>Date: " . $row["date"] . "</p>";
echo "<a href='register.php?event_id=" . $row["id"] . "'>Register</a>";
echo "</div>";
}
} else {
echo "No events available.";
}
include 'templates/footer.php';
?>
3. 用户报名
在register.php
中处理用户报名:
<?php
include 'includes/config.php';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = $_POST["name"];
$email = $_POST["email"];
$phone = $_POST["phone"];
$event_id = $_POST["event_id"];
$user_sql = "INSERT INTO users (name, email, phone) VALUES ('$name', '$email', '$phone')";
if ($conn->query($user_sql) === TRUE) {
$user_id = $conn->insert_id;
$reg_sql = "INSERT INTO registrations (user_id, event_id) VALUES ('$user_id', '$event_id')";
if ($conn->query($reg_sql) === TRUE) {
echo "Registration successful!";
} else {
echo "Error: " . $reg_sql . "<br>" . $conn->error;
}
} else {
echo "Error: " . $user_sql . "<br>" . $conn->error;
}
} else {
$event_id = $_GET["event_id"];
echo "<form method='post' action='register.php'>";
echo "<input type='hidden' name='event_id' value='$event_id'>";
echo "Name: <input type='text' name='name' required><br>";
echo "Email: <input type='email' name='email' required><br>";
echo "Phone: <input type='text' name='phone'><br>";
echo "<input type='submit' value='Register'>";
echo "</form>";
}
include 'templates/footer.php';
?>
4. 管理后台
在admin.php
中展示报名情况:
<?php
include 'includes/config.php';
include 'templates/header.php';
$sql = "SELECT r.id, u.name, u.email, e.title, r.registered_at FROM registrations r JOIN users u ON r.user_id = u.id JOIN events e ON r.event_id = e.id";
$result = $conn->query($sql);
if ($result->num_rows >
评论(0)