PHP实现高效在线活动报名系统

admin 2025-01-14 345 0

在数字化时代,线上活动报名系统已成为各类活动不可或缺的一部分。本文将带你一步步用PHP搭建一个功能完善的在线活动报名系统,助你轻松管理活动报名流程。

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)