Rumah > pembangunan bahagian belakang > masalah PHP > Penjelasan terperinci tentang langkah pembangunan forum php

Penjelasan terperinci tentang langkah pembangunan forum php

PHPz
Lepaskan: 2023-04-04 15:22:01
asal
851 orang telah melayarinya

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.

  1. Reka bentuk model pangkalan data

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:

  • Jadual pengguna: id (kunci utama), nama pengguna, kata laluan, e-mel, created_at
  • Jadual siaran: id (kunci utama), user_id ( kunci asing) , tajuk, kandungan, created_at, updated_at
  • Jadual balasan: id (primary key), user_id (foreign key), post_id (foreign key), content, created_at, updated_at

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.

  1. Tulis skrip pangkalan data

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:

  • Jadual pengguna:
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;
Salin selepas log masuk
  • Jadual siaran:
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;
Salin selepas log masuk
  • Borang balasan:
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;
Salin selepas log masuk
  1. Tulis fail konfigurasi

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');
Salin selepas log masuk

Fail ini mentakrifkan maklumat yang diperlukan untuk sambungan pangkalan data, termasuk alamat hos pangkalan data, nama pengguna dan kata laluan, dan nama pangkalan data.

  1. Menulis kod php

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:

  • Masukkan composer init dalam terminal atau baris arahan untuk memulakan projek komposer baharu >Edit
  • fail, tambahkan kebergantungan berikut:
  • composer.json
Di sini kami menggunakan dua pustaka kebergantungan, slim dan illuminate/pangkalan data, untuk pengurusan penghalaan dan panggilan pangkalan data. Antaranya, slim ialah rangka kerja php ringan yang boleh melaksanakan antara muka RESTful/pangkalan data dengan mudah ialah modul ORM pangkalan data yang digunakan dalam rangka kerja Laravel, menyediakan kaedah operasi pangkalan data yang sangat kaya.
{
  "require": {
    "slim/slim": "^4.5",
    "illuminate/database": "^8.0"
  }
}
Salin selepas log masuk

Laksanakan
    dalam terminal atau baris arahan untuk memasang dependensi.
  • composer install
  • Selepas melengkapkan pemasangan perpustakaan bergantung, kita boleh mula menulis kod php. Di sini, kami akan menamakannya
untuk mengendalikan pelbagai permintaan daripada forum.

index.php

Dalam kod, kami menggunakan rangka kerja tipis untuk mengendalikan permintaan penghalaan dan menerangi/pangkalan data untuk mengendalikan pangkalan data.
<?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();
Salin selepas log masuk

Tulis kod bahagian hadapan
  1. Selepas melengkapkan kod bahagian pelayan, kami juga perlu menulis kod halaman hujung hadapan. Di sini, kita boleh menggunakan rangka kerja bootstrap untuk mencapai ini. Kod khusus adalah seperti berikut:

<!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>
Salin selepas log masuk
Uji pengendalian forum
  1. Selepas melengkapkan penulisan php dan kod front-end, akhirnya kami boleh menguji pengendalian forum. Mula-mula, kita perlu menjalankan arahan berikut dalam terminal atau baris arahan untuk memulakan pelayan:

Kemudian, masukkan
php -S localhost:8080 index.php
Salin selepas log masuk
dalam penyemak imbas untuk mengakses halaman utama forum.

http://localhost:8080Pada 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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan