Maison >développement back-end >Problème PHP >Explication détaillée des étapes de développement du forum PHP
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.
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 :
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.
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;
在编写 php 代码之前,我们需要先配置数据库连接信息。这里使用一个简单的配置文件来完成这个任务。具体代码如下:
// config.php define('DB_HOST', 'localhost'); define('DB_USERNAME', 'root'); define('DB_PASSWORD', ''); define('DB_NAME', 'forum');
此文件定义了数据库连接所需的信息,其中包括数据库主机地址、用户名和密码、以及数据库名称。
在编写 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 'vendor/autoload.php'; require 'config.php'; 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 来处理数据库。
在完成服务器端 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>
在完成 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. 🎜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. 🎜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!