Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie PHP, um die Antwortfunktion des Message Boards zu implementieren

So verwenden Sie PHP, um die Antwortfunktion des Message Boards zu implementieren

PHPz
PHPzOriginal
2023-04-26 18:00:561383Durchsuche

Mit der rasanten Entwicklung des Internets sind Message Boards zu einem wesentlichen Bestandteil vieler Websites geworden. Bei vielen Message-Boards ist die Antwortfunktion besonders wichtig, da sie es den Verfassern von Nachrichten ermöglicht, mit Website-Administratoren zu interagieren und so die Kommunikation reibungsloser zu gestalten. In diesem Artikel wird erläutert, wie Sie mithilfe von PHP die Antwortfunktion des Message Boards implementieren.

1. Datenbankdesign

Bevor Sie die Message-Board-Antwortfunktion implementieren, müssen Sie zunächst eine Datentabelle zum Speichern von Nachrichten und Antwortinhalten entwerfen. In diesem Artikel wird die MySQL-Datenbank verwendet. Das Folgende ist das Design der Nachrichtentabelle und der Antworttabelle:

Nachrichtentabelle (Nachricht)

idBenutzernameInhalt erstellt_atidint(11)Antwort-IDmessage_idint(11)
Spaltenname Datentyp Erklärung
int(11) Nachrichten-ID
varchar(20) Name des Kommentators
varchar(255) Nachricht. Inhalt
datetime Nachrichtenzeit +

Nachrichten-ID

Benutzernamevarchar(20)Antwortname Inhalt
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>留言板</title>
    <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
    <div class="container">
        <h2>留言板</h2>
        <form class="form-horizontal" method="post" action="post_message.php">
            <div class="form-group">
                <label for="username" class="col-sm-2 control-label">姓名:</label>
                <div class="col-sm-10">
                    <input type="text" name="username" class="form-control" required>
                </div>
            </div>
            <div class="form-group">
                <label for="content" class="col-sm-2 control-label">留言内容:</label>
                <div class="col-sm-10">
                    <textarea name="content" class="form-control" rows="5" required></textarea>
                </div>
            </div>
            <div class="form-group">
                <div class="col-sm-offset-2 col-sm-10">
                    <button type="submit" class="btn btn-primary">提交</button>
                </div>
            </div>
        </form>
        <?php
            // 查询留言列表
            $sql = "SELECT * FROM message ORDER BY created_at DESC";
            $result = mysqli_query($conn, $sql);
            while ($row = mysqli_fetch_assoc($result)) {
        ?>
        <div class="panel panel-default">
            <div class="panel-heading">
                <?php echo $row[&#39;username&#39;]; ?>(<?php echo $row[&#39;created_at&#39;]; ?>)
            </div>
            <div class="panel-body">
                <?php echo $row[&#39;content&#39;]; ?>
            </div>
        </div>
        <?php
                // 查询回复列表
                $sql = "SELECT * FROM reply WHERE message_id = {$row[&#39;id&#39;]} ORDER BY created_at ASC";
                $result2 = mysqli_query($conn, $sql);
                while ($row2 = mysqli_fetch_assoc($result2)) {
        ?>
        <div class="panel panel-info">
            <div class="panel-heading">
                <?php echo $row2[&#39;username&#39;]; ?>(<?php echo $row2[&#39;created_at&#39;]; ?>)
            </div>
            <div class="panel-body">
                <?php echo $row2[&#39;content&#39;]; ?>
            </div>
        </div>
        <?php
                }
        ?>
        <form class="form-horizontal" method="post" action="post_reply.php">
            <div class="form-group">
                <div class="col-sm-offset-2 col-sm-10">
                    <input type="hidden" name="message_id" value="<?php echo $row[&#39;id&#39;]; ?>">
                    <input type="text" name="username" class="form-control" placeholder="回复者姓名" required>
                </div>
            </div>
            <div class="form-group">
                <div class="col-sm-offset-2 col-sm-10">
                    <textarea name="content" class="form-control" rows="3" placeholder="回复内容" required></textarea>
                </div>
            </div>
            <div class="form-group">
                <div class="col-sm-offset-2 col-sm-10">
                    <button type="submit" class="btn btn-default">回复</button>
                </div>
            </div>
        </form>
        <?php
            }
        ?>
    </div>
</body>
</html>
Im obigen Code ist die Message-Board-Seite in zwei Teile unterteilt, der obere Teil ist das Nachrichtenfeld. und der untere Teil ist die Nachrichtenliste und das Antwortformular. Sowohl die Nachrichtenliste als auch das Antwortformular werden dynamisch generiert. Das Antwortformular jeder Nachricht verfügt über ein ausgeblendetes Feld „message_id“, um die serverseitige Verarbeitung zu erleichtern.
<?php
// 建立数据库连接
$conn = new mysqli("localhost", "root", "password", "test");
if ($conn->connect_error) {
    die("数据库连接失败:" . $conn->connect_error);
}

// 定义Message类
class Message {
    public $id;
    public $username;
    public $content;
    public $created_at;
    public $updated_at;
    
    // 构造函数
    function __construct($id, $username, $content, $created_at, $updated_at) {
        $this->id = $id;
        $this->username = $username;
        $this->content = $content;
        $this->created_at = $created_at;
        $this->updated_at = $updated_at;
    }
    
    // 静态方法:获取留言列表
    static function get_list($conn) {
        $messages = array();
        $sql = "SELECT * FROM message ORDER BY created_at DESC";
        $result = mysqli_query($conn, $sql);
        while ($row = mysqli_fetch_assoc($result)) {
            $message = new Message($row['id'], $row['username'], $row['content'], $row['created_at'], $row['updated_at']);
            array_push($messages, $message);
        }
        return $messages;
    }
}

// 定义Reply类
class Reply {
    public $id;
    public $message_id;
    public $username;
    public $content;
    public $created_at;
    public $updated_at;
    
    // 构造函数
    function __construct($id, $message_id, $username, $content, $created_at, $updated_at) {
        $this->id = $id;
        $this->message_id = $message_id;
        $this->username = $username;
        $this->content = $content;
        $this->created_at = $created_at;
        $this->updated_at = $updated_at;
    }
    
    // 静态方法:根据留言ID获取回复列表
    static function get_list_by_message_id($conn, $message_id) {
        $replies = array();
        $sql = "SELECT * FROM reply WHERE message_id = {$message_id} ORDER BY created_at ASC";
        $result = mysqli_query($conn, $sql);
        while ($row = mysqli_fetch_assoc($result)) {
            $reply = new Reply($row['id'], $row['message_id'], $row['username'], $row['content'], $row['created_at'], $row['updated_at']);
            array_push($replies, $reply);
        }
        return $replies;
    }
}

// 处理留言提交
if ($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['username']) && !empty($_POST['content'])) {
    $sql = "INSERT INTO message (username, content) VALUES ('{$_POST['username']}', '{$_POST['content']}')";
    mysqli_query($conn, $sql);
}

// 处理回复提交
if ($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['message_id']) && !empty($_POST['username']) && !empty($_POST['content'])) {
    $sql = "INSERT INTO reply (message_id, username, content) VALUES ({$_POST['message_id']}, '{$_POST['username']}', '{$_POST['content']}')";
    mysqli_query($conn, $sql);
}

// 获取留言列表
$messages = Message::get_list($conn);
?>
Zu diesem Zeitpunkt ist der gesamte Prozess der Implementierung der Message-Board-Antwortfunktion in PHP abgeschlossen. Durch das Design und die Implementierung des oben genannten Codes können wir die Message-Board-Antwortfunktion einfach implementieren, was die Benutzererfahrung verbessert und die Website-Verwaltung erleichtert.
Die Zuordnung zwischen der Nachrichtentabelle und der Antwort Die Tabelle wird über message_id erreicht, dh eine Antwort entspricht einer bestimmten Nachricht. Um die Verwaltung zu erleichtern, werden außerdem jeder Nachricht und Antwort zwei Felder hinzugefügt: Erstellungszeit und Änderungszeit, die im nachfolgenden Entwicklungsprozess verwendet werden. 2. Seitenlayout Nachdem das Datenbankdesign abgeschlossen ist, ist der nächste Schritt das Seitenlayout. Bei Message Boards ist es wichtig, dass die Benutzeroberfläche einfach, schön und benutzerfreundlich ist. In diesem Artikel wird das Bootstrap-Framework zum Entwerfen der Message-Board-Seite verwendet. Das Folgende ist der Code der Message-Board-Seite:
3. Backend-Implementierung Nachdem das Seitenlayout fertiggestellt ist, ist der nächste Schritt die Backend-Implementierung. In diesem Artikel wird die objektorientierte PHP-Programmiermethode übernommen, um die Codeerweiterung und -wartung zu erleichtern. Das Folgende ist der PHP-Code: Im obigen Code sind die Nachrichtenklassen und die Antwortklassen definiert, die Nachrichten und Antworten entsprechen. In der Message-Klasse ist die statische Methode get_list definiert, um die Nachrichtenliste abzurufen. In der Reply-Klasse ist die statische Methode get_list_by_message_id definiert, um die Antwortliste abzurufen. Gleichzeitig wird das in PHP integrierte $_POST-Array zum Verarbeiten von Formularübermittlungsdaten verwendet und Nachrichten- und Antwortdaten werden in die entsprechende Datentabelle eingefügt.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie PHP, um die Antwortfunktion des Message Boards zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn