要实现一个简单的PHP留言板与回复功能,我们需要考虑几个关键部分:数据库设计、留言的添加、留言的显示以及回复的添加和显示。这里我将给出一个简化的示例来说明如何实现这些功能。
### 1. 数据库设计
首先,我们需要一个数据库来存储留言和回复。这里是一个简单的表结构示例:
- **messages** 表
- id (INT, 主键, 自增)
- content (TEXT)
- created_at (DATETIME)
- parent_id (INT, 可为空, 外键指向messages表的id,用于表示回复哪个留言)
### 2. PHP 脚本实现
#### 2.1 连接数据库
首先,我们需要一个数据库连接文件(例如 `db.php`):
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
?>
#### 2.2 添加留言
接下来,我们需要一个脚本来处理留言的添加(例如 `add_message.php`):
<?php
include 'db.php';
$content = $_POST['content'];
$sql = "INSERT INTO messages (content, created_at) VALUES (?, NOW())";
$stmt = $conn->prepare($sql);
$stmt->bind_param("s", $content);
if ($stmt->execute()) {
echo "新留言已添加";
} else {
echo "错误: " . $stmt->error;
}
$stmt->close();
$conn->close();
?>
#### 2.3 显示留言和回复
最后,我们需要一个脚本来显示所有的留言和它们的回复(例如 `view_messages.php`):
<?php
include 'db.php';
$sql = "SELECT id, content, parent_id FROM messages ORDER BY created_at DESC";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
if ($row["parent_id"] == null) {
echo "<div>留言: " . $row["content"] . "</div>";
echo "<div style='margin-left: 20px;'>";
displayReplies($row["id"]);
echo "</div>";
}
}
} else {
echo "0 结果";
}
function displayReplies($parentId) {
global $conn;
$sql = "SELECT id, content FROM messages WHERE parent_id = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $parentId);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "<div>回复: " . $row["content"] . "</div>";
}
}
$stmt->close();
}
$conn->close();
?>
### 3. HTML 表单
你还需要一个HTML表单来让用户输入留言和回复(这里只展示留言的表单,回复的表单可以类似地实现,但可能需要一个额外的字段来选择回复哪个留言):
<form action="add_message.php" method="post">
留言内容: <input type="text" name="content"><br>
<input type="submit" value="提交">
</form>
### 注意
- 这是一个非常基础的示例,没有包含错误处理、用户验证、数据清理等安全实践。
- 在生产环境中,你应该使用更安全的数据库连接方法(如PDO),并添加适当的错误处理和用户验证。
- 回复的添加可能需要一个额外的表单,让用户选择回复哪个留言,或者你可以通过JavaScript动态添加回复表单。
- 样式和布局(如HTML和CSS)在这个示例中没有包含,你可以根据需要自行添加。