Maison >développement back-end >Problème PHP >Explication détaillée des étapes de développement du forum PHP

Explication détaillée des étapes de développement du forum PHP

PHPz
PHPzoriginal
2023-04-04 10:41:34848parcourir

PHP est un langage de script côté serveur populaire largement utilisé dans le développement de sites Web. Parmi eux, le forum est un scénario d'application classique, donc développer un système de forum basé sur PHP est une tâche très importante. Cet article présentera les étapes de développement d'un forum PHP pour aider les développeurs à démarrer rapidement.

  1. Concevoir un modèle de base de données

Un bon forum doit avoir des fonctions telles que les publications, les réponses, les utilisateurs, etc. Par conséquent, nous devons concevoir un modèle de base de données pour prendre en charge la mise en œuvre de ces fonctions. Une conception de modèle simple est la suivante :

  • Table utilisateur : identifiant (clé primaire), nom d'utilisateur, mot de passe, e-mail, créé_à
  • Table de publication : identifiant (clé primaire), utilisateur_id (clé étrangère), titre, contenu, créé_à, update_at
  • Table de réponse : id (clé primaire), user_id (clé étrangère), post_id (clé étrangère), content, create_at, update_at

Parmi eux, la table user enregistre les informations utilisateur de base et dispose d'un champ associé pour associer les publications et la table des réponses ; la table des publications est utilisée pour enregistrer les messages de sujet, qui contiennent des informations telles que le titre, le contenu, l'auteur, etc. ; la table des réponses est utilisée pour enregistrer le contenu des réponses, qui contient des informations telles que le répondant, le contenu de la réponse, et répondu aux messages du sujet.

  1. Écriture de scripts de base de données

Après avoir conçu le modèle de base de données, nous devons créer la structure de table correspondante. Dans la base de données MySQL, vous pouvez utiliser des instructions SQL pour créer des structures de tables.

Pour plus de commodité, nous pouvons d'abord créer une base de données nommée forum dans phpMyAdmin, puis y créer trois tables. Les instructions SQL spécifiques sont les suivantes: forum 的数据库,然后在其中创建三张表。具体的 sql 语句如下:

  • 用户表:
CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  • 帖子表:
CREATE TABLE `posts` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `title` varchar(255) NOT NULL,
  `content` text NOT NULL,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`),
  CONSTRAINT `posts_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  • 回帖表:
CREATE TABLE `replies` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `post_id` int(11) NOT NULL,
  `content` text NOT NULL,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`),
  KEY `post_id` (`post_id`),
  CONSTRAINT `replies_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `replies_ibfk_2` FOREIGN KEY (`post_id`) REFERENCES `posts` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  1. 编写配置文件

在编写 php 代码之前,我们需要先配置数据库连接信息。这里使用一个简单的配置文件来完成这个任务。具体代码如下:

// config.php

define('DB_HOST', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'forum');

此文件定义了数据库连接所需的信息,其中包括数据库主机地址、用户名和密码、以及数据库名称。

  1. 编写 php 代码

在编写 php 代码之前,我们需要先安装必需的依赖库。这里我们使用 composer 来完成依赖库的安装,具体流程如下:

  • 在终端或命令行中输入 composer init 初始化一个新的 composer 项目;
  • 编辑 composer.json 文件,加入如下依赖项:
{
  "require": {
    "slim/slim": "^4.5",
    "illuminate/database": "^8.0"
  }
}

这里我们使用了 slim 和 illuminate/database 两个依赖库,用于路由管理和数据库调用。其中,slim 是一个轻量级的 php 框架,可以轻松实现 RESTful 接口;illuminate/database 是 Laravel 框架中使用的数据库 ORM 模块,提供了非常丰富的数据库操作方法。

  • 在终端或命令行中执行 composer install 安装依赖项。

完成依赖库的安装后,我们可以开始编写 php 代码了。这里,我们将命名为 index.php,用于处理论坛的各种请求。

<?php

require &#39;vendor/autoload.php&#39;;
require &#39;config.php&#39;;

use Illuminate\Database\Capsule\Manager as Capsule;
use Slim\Factory\AppFactory;
use Slim\Views\PhpRenderer;

$capsule = new Capsule;
$capsule->addConnection([
    'driver' => 'mysql',
    'host' => DB_HOST,
    'username' => DB_USERNAME,
    'password' => DB_PASSWORD,
    'database' => DB_NAME,
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
]);

$capsule->setAsGlobal();
$capsule->bootEloquent();

$renderer = new PhpRenderer('templates/');

$app = AppFactory::create();

$app->get('/', function ($request, $response, $args) use ($renderer) {
    $posts = Capsule::table('posts')
        ->select('posts.id', 'posts.title', 'posts.content', 'posts.created_at', 'users.id as user_id', 'users.username')
        ->leftJoin('users', 'posts.user_id', '=', 'users.id')
        ->orderBy('posts.created_at', 'desc')
        ->get();

    return $renderer->render($response, 'index.php', [
        'posts' => $posts
    ]);
});

$app->run();

代码中,我们使用 slim 框架来处理路由请求,并使用 illuminate/database 来处理数据库。

  1. 编写前端代码

在完成服务器端 code 之后,我们还需要编写前端页面代码。这里,我们可以使用 bootstrap 框架来完成。具体代码如下:

<!DOCTYPE html>
<html>
<head>
    <title>论坛首页</title>
    <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/5.0.0-alpha2/css/bootstrap.min.css">
    <script src="https://cdn.bootcss.com/bootstrap/5.0.0-alpha2/js/bootstrap.bundle.min.js"></script>
</head>
<body>
    <nav class="navbar navbar-expand-md navbar-dark bg-dark">
        <div class="container">
            <a href="#" class="navbar-brand">论坛首页</a>
        </div>
    </nav>

    <div class="container mt-3">
        <table class="table table-hover">
            <thead>
                <tr>
                    <th>#</th>
                    <th>标题</th>
                    <th>作者</th>
                    <th>发布时间</th>
                    <th>操作</th>
                </tr>
            </thead>
            <tbody>
                <?php foreach ($posts as $post): ?>
                <tr>
                    <td><?= $post->id ?></td>
                    <td><?= $post->title ?></td>
                    <td><?= $post->username ?></td>
                    <td><?= $post->created_at ?></td>
                    <td>
                        <a href="#" class="btn btn-sm btn-outline-secondary">编辑</a>
                        <a href="#" class="btn btn-sm btn-outline-danger">删除</a>
                    </td>
                </tr>
                <?php endforeach ?>
            </tbody>
        </table>
    </div>
</body>
</html>
  1. 测试论坛的运行情况

在完成 php 和前端代码编写后,我们可以最后测试一下论坛的运行情况了。首先,我们需要在终端或命令行中运行以下命令,启动服务器:

php -S localhost:8080 index.php

然后,在浏览器中输入 http://localhost:8080

User Tableau:

🎜rrreee🎜🎜Post Table code Avant, nous devons d'abord configurer les informations de connexion à la base de données. Un simple fichier de configuration est utilisé ici pour accomplir cette tâche. Le code spécifique est le suivant : 🎜rrreee🎜Ce fichier définit les informations requises pour la connexion à la base de données, y compris l'adresse de l'hôte de la base de données, le nom d'utilisateur et le mot de passe, ainsi que le nom de la base de données. 🎜
    🎜Écrire du code php🎜🎜🎜Avant d'écrire du code php, nous devons installer les bibliothèques de dépendances nécessaires. Ici, nous utilisons composer pour terminer l'installation des bibliothèques dépendantes. Le processus spécifique est le suivant : 🎜🎜🎜Entrez composer init dans le terminal ou la ligne de commande pour initialiser un nouveau projet composer ; >composer.json , ajoutez les dépendances suivantes : 🎜🎜rrreee🎜Ici, nous utilisons deux bibliothèques de dépendances, slim et illuminate/database, pour la gestion du routage et les appels à la base de données. Parmi eux, slim est un framework php léger qui peut facilement implémenter des interfaces RESTful ; illuminate/database est le module ORM de base de données utilisé dans le framework Laravel, fournissant une méthode de fonctionnement de base de données très riche. 🎜🎜🎜Exécutez composer install dans le terminal ou la ligne de commande pour installer les dépendances. 🎜🎜🎜Après avoir terminé l'installation des bibliothèques dépendantes, nous pouvons commencer à écrire du code php. Ici, nous le nommerons index.php, qui servira à traiter diverses requêtes du forum. 🎜rrreee🎜Dans le code, nous utilisons le framework slim pour gérer les demandes de routage et illumination/database pour gérer la base de données. 🎜
      🎜Écrivez le code front-end🎜🎜🎜Après avoir terminé le code côté serveur, nous devons également écrire le code de la page front-end. Ici, nous pouvons utiliser le framework bootstrap pour y parvenir. Le code spécifique est le suivant : 🎜rrreee
        🎜Tester le fonctionnement du forum🎜🎜🎜Après avoir terminé l'écriture du code php et front-end, nous pouvons enfin tester le fonctionnement du forum. Tout d'abord, nous devons exécuter la commande suivante dans le terminal ou la ligne de commande pour démarrer le serveur : 🎜rrreee🎜 Ensuite, saisissez http://localhost:8080 dans le navigateur pour accéder à la page d'accueil du forum. 🎜🎜À ce stade, nous avons terminé le développement du système de forum basé sur PHP. Dans ce processus, nous avons introduit le processus complet de conception de modèle de base de données, d'écriture de script de base de données, d'écriture de code PHP et de conception de pages frontales, dans l'espoir d'être utile à la majorité des développeurs. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn