PHP ialah bahasa skrip sebelah pelayan yang popular yang digunakan secara meluas dalam pembangunan tapak web. Antaranya, forum adalah senario aplikasi klasik, jadi membangunkan sistem forum berdasarkan PHP adalah tugas yang sangat bermakna. Artikel ini akan memperkenalkan langkah-langkah pembangunan forum php untuk membantu pembangun bermula dengan cepat.
Forum yang baik harus mempunyai fungsi seperti siaran, balasan, pengguna, dll. Oleh itu, kita perlu mereka bentuk model pangkalan data untuk menyokong pelaksanaan daripada fungsi-fungsi ini. Reka bentuk model ringkas adalah seperti berikut:
di mana, Jadual pengguna menyimpan maklumat pengguna asas dan mempunyai medan berkaitan untuk mengaitkan siaran dan jadual balasan digunakan untuk menyimpan siaran topik, yang merangkumi tajuk, kandungan, pengarang dan maklumat lain yang digunakan; simpan kandungan balasan, di mana Mengandungi maklumat seperti orang yang membalas, kandungan balasan dan siaran topik balasan.
Selepas mereka bentuk model pangkalan data, kita perlu mencipta struktur jadual yang sepadan. Dalam pangkalan data MySQL, anda boleh menggunakan pernyataan sql untuk mencipta struktur jadual.
Untuk kemudahan, kami mula-mula boleh mencipta pangkalan data bernama forum
dalam phpMyAdmin, dan kemudian mencipta tiga jadual di dalamnya. Penyataan sql khusus adalah seperti berikut:
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;
Sebelum menulis kod php, kita perlu mengkonfigurasi maklumat sambungan pangkalan data terlebih dahulu. Fail konfigurasi mudah digunakan di sini untuk menyelesaikan tugas ini. Kod khusus adalah seperti berikut:
// config.php define('DB_HOST', 'localhost'); define('DB_USERNAME', 'root'); define('DB_PASSWORD', ''); define('DB_NAME', 'forum');
Fail ini mentakrifkan maklumat yang diperlukan untuk sambungan pangkalan data, termasuk alamat hos pangkalan data, nama pengguna dan kata laluan, dan nama pangkalan data.
Sebelum menulis kod php, kita perlu memasang perpustakaan pergantungan yang diperlukan. Di sini kami menggunakan komposer untuk menyelesaikan pemasangan perpustakaan bergantung Proses khusus adalah seperti berikut:
composer init
dalam terminal atau baris arahan untuk memulakan projek komposer baharu >Editcomposer.json
{ "require": { "slim/slim": "^4.5", "illuminate/database": "^8.0" } }
composer install
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();
<!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 -S localhost:8080 index.php
http://localhost:8080
Pada ketika ini, kami telah menyelesaikan pembangunan sistem forum berdasarkan PHP. Dalam proses ini, kami memperkenalkan proses lengkap reka bentuk model pangkalan data, penulisan skrip pangkalan data, penulisan kod PHP dan reka bentuk halaman hadapan, dengan harapan dapat membantu majoriti pembangun.
Atas ialah kandungan terperinci Penjelasan terperinci tentang langkah pembangunan forum php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!